You are on page 1of 6

Език за програмиране С++

Тема №5 Съставни типове данни. Масиви.

Съставни типове данни


Структури, които се състоят от една компонента, се наричат прости
или скаларни. Такива са константите и променливите.
Структура от данни, елементите на които са редица от компоненти,
се наричат съставни. Структура от данни, за които операциите включване
и изключване на елемент не са допустими, се наричат статични(такива са
масивите), а в противен случай се наричат динамични..

Масиви

Едномерни масиви
Съвкупност от фиксиран брой елементи от един и същи тип,
подредени по точно определен начин. Към всеки елемент е възможен пряк
достъп, който се осъществява чрез индекс с цели стойности, започващи от
0 и нарастващи с 1 до указана горна граница.
Дефиниране на променлива от тип масив:
Тип променлива [ размер];
Тип променлива [ размер]={ редица_от_константни_изрази};
където: размер – задава максималния брой елементи
редица_от_константни_изрази - инициализация

int a[5]; - дефинира едномерен целочислен масив а от 5 елемента.


double b[10]; - дефинира едномерен реален масив b от 10 елемента.
double c[5]={1.5,2.25,0.5,7.3,9.99}; - дефинира реален масив c от 5
елемента и присвоява началните му стойности.
int w[4], q[3]={9,8,7}; - дефинира едномерен целочислен масив w от 4
елемента; дефинира целочислен масив q от 3 елемента и присвоява
началните му стойности.
int a[5]={1,2,3}; е еквивалентно на int a[5]={1,2,3,0,0};
При int c[4]={1,2,3,4,5,6,7}; някои компилатори дават съобщението
за грешка Too many initializers.
Размерът на масива трябва да е известен, когато програмата се
компилира. Например:
const int M=50;
int f[M];
Прекият достъп до елементите на масива се осъществява чрез т.нар.
индексирани променливи.

Индексирана_променлива  променлива_от_тип_масив[ индекс]


където: индекс е израз от цял тип с неотрицателна стойност
и показва позицията (мястото)

С дефиницията на масив int a[5]; са свързани индексираните


променливи a[0], a[1], a[2], a[3], a[4] или а[i], където i=0,...,4
Присвояване стойност 0 на всички елементи на масив:
int z[10]={0}; явно присвоява 0 на първия елемент и неявно на
останалите.

Задача 1: Напишете програма, която на елементите на целочислен


едномерен масив присвоява съответно стойностите 2,4,...,20 и извежда
масива табулирано.
#include <iostream.h>
#include <iomanip.h>
int main()
{
const int M=10;
int p[M];
for (int k=0;k<=M-1;k++) p[k]=2*k+2;
cout<<"Елемент"<<setw(13)<<"Стойност\n";
for (int i=0;i<=9;i++)
cout<<setw(4)<<i<<setw(11)<<p[i]<<endl;
return 0;}

Задача 2: Съставете програма, която въвежда в целочислен


едномерен масив стойности. Да се намери и изведе колко са четните числа
на нечетните места.
#include<iostream.h>
int main()
{ int a[100]; //целочислен едномерен масив а, с максимум 100
елемента
int n; // брой елементи
do{cout<<"Въведи брой на елементите на масива: ";
cin>>n;}while (n<=0||n>100);
int i; //управляваща променлива
// следва въъвеждане на n стойности в масива a
for(i=0;i<=n-1;i++) {cout<<"стойността на "<<i<<" –то място е=";
cin>>a[i];}
int br=0; // брояч
for(i=1;i<=n-1;i=i+2) if (a[i]%2==0) br=br+1;
cout<<"Броят на четните числа на нечетни места е="<<br;
return 0;}

Задача 3: Съставете програма, която въвежда в реален едномерен


масив стойности. Да се намери и изведе произведението на стойностите,
принадлежащи на интервала [p,q].
#include<iostream.h>
int main()
{float a[100];
int n;
do{cout<<" Въведи брой на елементите на масива: ";
cin>>n;}while (n<=0||n>100);
float p,q;
cout<<"Въведи начало на интервала р=";
cin>>p;
do{cout<<"Въведи край на интервала (>p) q=";
cin>>q;}while(q<=p);
int i;
// въвеждане на n стойности в масива a
for(i=0;i<=n-1;i++) { cout<<"стойността на "<<i<<" =то място е=";
cin>>a[i];}
int pr=1; // произведение
for(i=0;i<=n-1;i++)
if (a[i]!=0 && a[i]>=p && a[i]<=q) pr=pr*a[i];
cout<<"Произведението на числата принадлежащи на
интервала["<< p<<","<<q<<"] е ="<<pr;
return 0;}
Задача 4: Съставете програма, която въвежда в реален едномерен
масив стойности и в целочислен едномерен масив записва индексите
/местата/ на отрицателните елементи. Да се изведе получения масив.
#include<iostream.h>
int main()
{ float a[100];
int n;
do{cout<<" брой на елементите:";
cin>>n;}while (n<=0||n>100);
int i;
// въвеждане на n стойности в масива a
for(i=0;i<=n-1;i++) { cout<<"стойността на "<<i<<" =то място е=";
cin>>a[i];}
int b[100]; //масив за местата на отрицателните елементи
int k=0; //променлива за място в масив b
for(i=0;i<=n-1;i++)
if (a[i]<0) { b[k]=i;
k++;}
//извеждане на масив b
cout<<"масивът с индеките на отрицателните елементи е\n";
for(i=0;i<=k-1;i++) cout<<"b["<<i<<"]="<<b[i]<<endl;
return 0;}

Задача 5: Съставете програма, която въвежда в целочислен едномерен


масив оценките на максимум 30 студенти. Да се намери и изведе средният
успех на всички студенти
#include <iostream.h>
#include <iomanip.h>
int main()
{int p[30];
int n;
do {cout<<"Въведи броят на оценките (<=30): ";
cin>>n;} while (n<1||n>30);
int i;
for (i=0;i<=n-1;i++)
do {cout<<" Въведи "<<i+1<<" оценка ";
cin>>p[i];} while (p[i]<2||p[i]>6);
float s, su;
s=0;
for (i=0;i<=n-1;i++) s=s+p[i];
su=s/n;
cout<<"Средният успех е "<<setprecision(2)<<su<<endl;
return 0;}

Задача 6: Съставете програма, която въвежда в целочислен едномерен


масив оценките на максимум 30 студенти. След това да се сортират в
низходящ ред оценките и да се изведе сортирания масив.
#include <iostream.h>
#include <iomanip.h>
int main()
{const int M=30;
int p[M];
int n;
do {cout<<" Въведи броят на оценките (<=30): ";
cin>>n;} while (n<1||n>30);
int i;
for (i=1;i<=n;i++)
do {cout<<" Въведи "<<i<<" оценка ";
cin>>p[i];} while (p[i]<2||p[i]>6);
//сортировка
//всяка i-та оценка се сравнява с оценките след нея
// ако има по-голяма – разменяме местата им
int k,j;
for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
if (p[i]<p[j]) { k=p[i];
p[i]=p[j];
p[j]=k;
}
cout<<"Сортираният в низходящ ред масив е:\n";
for (i=1;i<=n;i++) cout<<setw(6)<<p[i]<<endl;
return 0;}
Задача 7: Съставете програма, която въвежда в целочислен
едномерен масив стойности. Да се намери и изведе минималния по
стойност елемент на масива.
#include <iostream.h>
int main()
{int i,n,b[20], min;
cout<<"Wawedi broj na elementite na masiwa = ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"element "<<i+1<<" = ";cin>>b[i];
}
min=b[0];
for(i=1;i<n;i++)
if(b[i]<min)min=b[i];
cout<<endl<<" minimalnoto chislo e : "<<min<<endl;
return 0;}
Задача 8: Съставете програма, която въвежда в целочислен
едномерен масив стойности. Да се намерят и изведат нечетните елементи и
техния брой.
#include <iostream.h>
int main()
{ int m[30],i,n;
int br_nechetni=0;
cout<<"Wawedi broj elementi na masiva = ";
cin>>n;
cout<<"Wawedi elementite na masiva"<<endl;
for ( i=0; i<n; i++)
{cout<<"m["<<i<<"]="; cin>>m[i];}
for ( i=0; i<n; i++)
if (m[i]%2!=0)
{cout << "Necheten element! -> "<<m[i]<< "\n";
br_nechetni= br_nechetni+1;}
cout<<"Nechetnite elementi sa "<< br_nechetni;
return 0;}

Задачи за самоподготовка
1. За едномерен целочислен масив а и цяло число х да се напише
програма, която проверява колко пъти х се съдържа в масива.
2. За два едномерни масива a и b с еднаква дължина да се състави
програма с която да се пресметнат новите масиви по формулите: ci = ai+bi
di = ai-bi ei = ai*bi fi = ai/bi.
3. В едномерен масив Х са зададени n стойности. Запълнете масив Y
Xi 2 5 Xi 7
със стойностите, изчислени по формулата Yi  
Xi 10 Xi 7

Отпечатайте масива Y.

4. В едномерен масив Р са зададени n стойности. Запълнете


Pi  4 Pi 2
масив Q със стойностите, изчислени по формулата Qi  
Pi 3  Pi Pi 2

Отпечатайте масива Q.

You might also like