Масиви із різною кількістю елементів.

Хід виконання роботи

Етапи розв’язку поставленого завдання:

1. Оголошуємо кількість елементів в масиві m=10;

2. Оголошуємо змінну типу int: kilk=0, i, I,min;

3. Операція new виконує виділення пам’яті під m величин типу int і записує адресу початку цієї ділянки у змінну k.

4. Оголошуємо змінну min= 100*10.8*sin((2000)+1.4) та sum=0 типу float;

5. Підраховуємо збиток фірми в період 2000-2009 роки, суму збитків і кількість збиткових років:

5.1. Ініціалізуємо зміну-номер елементу- і=0;

5.2. Задаємо умову виконання циклу i<n;

5.3. Модифікуємо параметр циклу і++;

5.4. Підраховуємо збиток за формулою k[i]=100*10.8*sin((2000+i)+1.4) і заносимо значення в масив;

5.5. Виводимо на екран індекс значення і значення масиву;

5.6. Перевіряємо значення елементів масиву k[i]:

5.6.1. Якщо k[i]<0, то рахуємо суму і кількість збільшуємо на 1;

5.6.2. Якщо k[i]<min, то зміній min присвоюємо значення з масиву, а в imin заносимо індекс значення;

6. Перевіряємо значення змінної min:

6.1. Якщо min<0, виводимо значення зміних: imin, min, kilk, sum, інакше виводимо повідомлення що збитків немає.

k[i]=100*10.8*sin((2000+i)+1.4);
m=10, i, imin,kilk
i
*k=new int[m]
Початок
k[i]
Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Блок-схема:

 

i=0; i<m ; i++

 

 

imin
sum
k[i]<min
kilk++
min = k[i]
imin = i
k[i]<0
min<0
Збитків не має
min
kilk
Кінець

 

 


 

 

true false

 

 

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  

 

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Лістинг програми:

#include<iostream.h>

#include<conio.h>

#include<math.h>

int main( )

{

clrscr();

int kilk=0,m=10,i,imin;

int *k=new int[m];

float min=100*10.8*sin((2000)+1.4);

float sum=0;

cout<<"Tytchyna V.E. p-23, V-15";

cout<<"\n\t_________________________________\t\n";

cout<<"\t|\trik\t|\tprybutok\t|\n";

cout<<"\n\t_________________________________\t\n";

for(i=0;i<m;i++){

k[i]=100*10.8*sin((2000+i)+1.4);

cout<<"\n\t|\t"<<i<<"\t|\t"<<k[i]<<"\t|\t\n";

cout<<"\n\t---------------------------------\t\n";

if(k[i]<0){

sum+=k[i];

kilk++;

if(k[i]<min){min=k[i];imin=i;}

}}

if(min<0){cout<<"\nzbytok za 200"<<imin<<"rik"<<min;

cout<<"\nzbytkovyh rokiv:"<<kilk;

cout<<"\nsuma zbytkiv:"<<sum;}

else cout<<"\nzbytkiv ne maje";

 

delete []k;

getch ();

return 0;

}

 

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Результат роботи програми:

-2-

Одновимірні масиви та складний пошук. Утворити і вивести масив у з елементами yk=fi+10(k), де і - номер варіанта, k = 1, 2, ..., 10. Виконати завдання вашого варіанта. У разі відсутності шуканих даних вивести про це повідомлення.

Індивідуальне завдання:

Чи є два елементи серед від'ємних із максимальним значенням?

Хід виконання роботи:

Етапи розв’язку поставленого завдання:

1. Оголошуємо кількість елементів в масиві m=10;

2. Оголошуємо змінну типу int: kilk=0, i, Imin;

3. Операція new виконує виділення пам’яті під m величин типу int і записує адресу початку цієї ділянки у змінну k.

4. Оголошуємо змінну min= 100*10.8*sin((2000)+1.4), min2=100*10.8*sin((2000)+1.4) та sum=0 типу float;

 

5.

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Підраховуємо збиток фірми в період 2000-2009 роки, суму збитків і кількість збиткових років:

5.1. Ініціалізуємо зміну-номер елементу- і=0;

5.2. Задаємо умову виконання циклу i<n;

5.3. Модифікуємо параметр циклу і++;

5.4. Підраховуємо збиток за формулою k[i]=100*10.8*sin((2000+i)+1.4) і заносимо значення в масив;

5.5. Перевіряємо умову k[i]<0.

5.6. Перевіряємо умову k[i]>min, якщо вона виконується присвоюємо змінній min значення з масиву, imin присвоємо значення індексу елементу масиву, інакше пропускаємо дію;

5.7. Перевіряємо умову k[i]<min;

5.8. Перевіряємо умову k[i]>min2, якщо вона виконується , то в змінну min2 присвоюємо значання з масиву;

6. Перевіряємо значення змінної min:

6.1. Якщо min<0, виводимо значення зміних: imin, min, інакше виводимо повідомлення що збитків немає.

7. Перевіряємо значення зміної min2:

7.1. Якщо min2==min, виводимо змінну min2, інакше виводимо повідомлення , що повторів немає.

 

 

Блок-схема:

 

min2=100*10.8*sin((2000)+1.4)
m=10, i, imin
*k=new int[m]
Початок
min=100*10.8*sin((2000)+1.4)
Sum=0

 

 


 

i
k[i]
imin
k[i]>min
min=k[i];imin=i;
min2=k[i]
k[i]<0
min<0
Збитків не має
min
k[i]=100*10.8*sin((2000+i)+1.4)
k[i]<min
k[i]>min2
Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  

 

 


I=0;i<m;i++

 

 


 

min2
Кінець
min2==min
Повторів не має
Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  

 

 


Лістинг програми:

#include<iostream.h>

#include<conio.h>

#include<math.h>

int main(){

clrscr();

int m=10,i,imin;

int *k=new int[m];

float min=100*10.8*sin((2000)+1.4);

float min2=100*10.8*sin((2000)+1.4);

float sum=0;

cout<<"Tytchyna V.E. p-23, V-15";

cout<<"\n\t_________________________________\t\n";

cout<<"\t|\trik\t|\tprybutok\t|\n";

cout<<"\n\t_________________________________\t\n";

for(i=0;i<m;i++){

k[i]=100*10.8*sin((2000+i)+1.4);

cout<<"\n\t|\t"<<i<<"\t|\t"<<k[i]<<"\t|\t\n";

cout<<"\n\t---------------------------------\t\n";

if(k[i]<0){

if(k[i]>min){min=k[i];imin=i;}}

if(k[i]<min){

if(k[i]>min2){min2=k[i];}}}

if(min<0){cout<<"\nzbytok za 200"<<imin<<"rik"<<min;}

else cout<<"\nzbytkiv ne maje";

if(min2==min){cout<<min2;}

else cout<<"\npovtoriv ne maje";

delete []k;

getch ();

return 0;

}


 

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Результат виконання програми:

 

-3-

Масиви із різною кількістю елементів.

У підрозділі Y є 15 співробітників, а в G - 20. Протягом місяця вони відпрацювали певну кількість днів, яка задана як випадкове число зі значенням від 0 до 31. Денна оплата праці d y.o. Податкова ставка 20%. Утворити масиви у, g, вивести значення їх елементів на екран. Виконати завдання пошуку даних для кожного підрозділу. Вивести повідомлення, якщо шуканих даних немає.

Індивідуальне завдання:

У скількох осіб заробіток вищий за середній?

Завдання підвищеної складності. Яка кількість відпрацьованих днів найчастіше була зафіксована у кожному підрозділі?

 

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Хід виконання роботи

Етапи розв’язку поставленого завдання:

1. Оголошуємо змінні типу int: kilk1=0,kilk2=0,kilk=0, m=15,n=20,d=1000,max=0,imax;

2. Оголошуємо змінну типу float: ser=0,sumY, sumG;

3. Операція new виконує виділення пам’яті під m величин типу int і записує адресу початку цієї ділянки у змінну y.

4. Операція new виконує виділення пам’яті під n величин типу int і записує адресу початку цієї ділянки у змінну g.

5. Операція new виконує виділення пам’яті під m величин типу int і записує адресу початку цієї ділянки у змінну zar1.

6. Операція new виконує виділення пам’яті під n величин типу int і записує адресу початку цієї ділянки у змінну zar2.

7. Операція new виконує виділення пам’яті під 32 величин типу int і записує адресу початку цієї ділянки у змінну vd.

8. Заповнюємо масив VD нулями:

8.1. Ініціалізуємо зміну-номер елементу- і=0;

8.2. Задаємо умову виконання циклу i<32;

8.3. Модифікуємо параметр циклу і++;

8.4. Присоюємо масиву vd[i] нуль.

9. Заповнюємо масив y[m] випадковими числами:

9.1. Ініціалізуємо зміну-номер елементу- і=0;

9.2. Задаємо умову виконання циклу i<m;

9.3. Модифікуємо параметр циклу і++;

9.4. Заповнюємо масив y[i] випадковими числами додатніми числами в діапазона до 32.

10. Заповнюємо масив g[n] випадковими числами:

10.1. Ініціалізуємо зміну-номер елементу- і=0;

10.2. Задаємо умову виконання циклу i<n;

10.3. Модифікуємо параметр циклу і++;

10.4. Заповнюємо масив g[i] випадковими числами додатніми числами в діапазона до 32.

11. Підраховуємо заробітню плату підрозділу Y та суму зарплат:

11.1. Ініціалізуємо зміну-номер елементу- і=0;

11.2. Задаємо умову виконання циклу i<m;

11.3. Модифікуємо параметр циклу і++;

11.4. Виконуємо підрахунок і заносимо його в масив zar1;

12. Підраховуємо заробітню плату підрозділу G та суму зарплат:

12.1. Ініціалізуємо зміну-номер елементу- і=0;

12.2. Задаємо умову виконання циклу i<n;

12.3. Модифікуємо параметр циклу і++;

12.4. Виконуємо підрахунок і заносимо його в масив zar2;

13. Підраховуємо середню зарплату обож підрозділів;

 

14. Рахуємо кількість працівників підрозділу Y, зарплата в яких більша за середню:

14.1. Ініціалізуємо зміну-номер елементу- і=0;

14.2. Задаємо умову виконання циклу i<m;

14.3. Модифікуємо параметр циклу і++;

14.4. Перевіряємо умову zar1[i]>ser , якщо умова виконується змінну kilk1 збільшуємо на 1 ;

15.

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Рахуємо кількість працівників підрозділу G, зарплата в яких більша за середню:

15.1. Ініціалізуємо зміну-номер елементу- і=0;

15.2. Задаємо умову виконання циклу i<n;

15.3. Модифікуємо параметр циклу і++;

15.4. Перевіряємо умову zar2[i]>ser , якщо умова виконується змінну kilk2 збільшуємо на 1 ;

16. Рахуємо середню кількість працівників, в яких заробітня платня більша за сереню;

17. Перевіряємо умову kilk==0, якщо вона виконується виводимо надпис «Заробітньої плати більшої за середнє не має», інакше виводимо зарплати підрозділів Y та G:

17.1. Ініціалізуємо зміну-номер елементу- і=0;

17.2. Задаємо умову виконання циклу i<m;

17.3. Модифікуємо параметр циклу і++;

17.4. Виводимо значення масиву zar1;

17.5. Ініціалізуємо зміну-номер елементу- і=0;

17.6. Задаємо умову виконання циклу i<m;

17.7. Модифікуємо параметр циклу і++;

17.8. Виводимо значення масиву zar2;

18. Рахуємо кількість найчастіше відпрацьованих днів підрозділу Y:

18.1. Ініціалізуємо зміну-номер елементу- і=0;

18.2. Задаємо умову виконання циклу i<m;

18.3. Модифікуємо параметр циклу і++;

18.4. Масив vd[y[i]] збільшуємо на 1;

19. Рахуємо кількість найчастіше відпрацьованих днів підрозділу G:

19.1. Ініціалізуємо зміну-номер елементу- і=0;

19.2. Задаємо умову виконання циклу i<n;

19.3. Модифікуємо параметр циклу і++;

19.4. Масив vd[g[i]] збільшуємо на 1

20. Виводимо значення массиву VD:

20.1. Ініціалізуємо зміну-номер елементу- і=0;

20.2. Задаємо умову виконання циклу i<32;

20.3. Модифікуємо параметр циклу і++;

20.4. Виводимо значення масиву vd[i];

20.5. Перевіряємо умову vd[i]>max, якщо вона виконується, то присвоюємо змінній max значення з массиву, змінній imin-індекс.

21. Виводимо значення змінних: max, imax, ser, sumY, sumG, kilk;


 

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Початок
kilk1=0,kilk2=0,kilk=0, m=15,n=20,d=1000,max=0,imax=0
ser=0,sumY, sumG
*y=new int[m]
*g=new int[n]
*zar1=new int[m]
*zar2=new int[n]
*vd=new int[32];
i=0; i<32; i++
vd[i]=0
vd[31]=0
i=0; i<m; i++
y[i]=random(32)
i=0; i<n; i++
g[i]=random(32)
y[i]
g[i]
Блок-схема:

 

 


 

i=0; i<m; i++
zar1[i]=(y[i]*d)*0.8
i=0; i<n; i++
zar2[i]=(g[i]*d)*0.8
sumY+=zar1[i]
sumG+=zar2[i]
ser=(sumY+sumG)/(m+n)
i=0; i<m; i++
kilk=kilk1+kilk2
kilk1++
zar1[i]>ser
i=0; i<n; i++
Kilk2++
zar1[i]>ser
Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  

 


 

kilk==0
Не має зарплати більшої за середню
i=0; i<m; i++
vd[y[i]]++
vd[i]>max
zar1[i]
i=0; i<n; i++
zar2[i]
i=0; i<m; i++
i=0; i<n; i++
vd[g[i]]++
i=0; i<32; i++
i
vd[i]
max=vd[i]; imax=I;
max
imax
ser
sumY
kilk
sumG
Кінець
Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  

 


 

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Лістинг програми:

#include<iostream.h>

#include<conio.h>

#include<math.h>

#include<stdlib.h>

int main(){clrscr();

int kilk1=0,kilk2=0,kilk=0, m=15,n=20,d=1000,max=0,imax=0;

float ser=0,sumY, sumG;

int *y=new int[m];

int *g=new int[n];

int *zar1=new int[m];

int *zar2=new int[n];

int *vd=new int[32];

for (int i=0;i<32;i++)vd[i]=0;vd[31]=0;

cout<<"Tytchyna V.E. p-23, V-15";

randomize();

cout<<"\nKilkist vidpr. dniv gidrozdilu Y:";

for(int i=0;i<m;i++){y[i]=random(32);cout<<" "<<y[i];}

cout<<"\nKilkist vidpr. dniv gidrozdilu G:";

for(int i=0;i<n;i++){g[i]=random(32);cout<<" "<<g[i];}

for(int i=0;i<m;i++){

zar1[i]=(y[i]*d)*0.8;

sumY+=zar1[i];}

for(int i=0;i<n;i++){

zar2[i]=(g[i]*d)*0.8;

sumG+=zar2[i];}

ser=(sumY+sumG)/(m+n);

for(int i=0;i<m;i++){

if(zar1[i]>ser)kilk1++;}

for(int i=0;i<n;i++){

if(zar2[i]>ser)kilk2++;}

kilk=kilk1+kilk2;

if (kilk==0)cout<<"\nne maje zarpl. bilsoi za ser.";

else{cout<<"\nZarplta pidrozdilu Y:";

for (int i=0;i<m;i++){

cout<<"\n"<<zar1[i];}

cout<<"\nZarplta pidrozdilu G:";

for (int i=0;i<n;i++){

cout<<"\n"<<zar2[i];} }

cout<<"\nnajchastushe vidp. dniv: ";

for(int i=0;i<m;i++)vd[y[i]]++;

for(int i=0;i<n;i++)vd[g[i]]++;

for (int i=0;i<32;i++){

cout<<i<<" "<<vd[i]<<" "<<endl;

if (vd[i]>max){max=vd[i];imax=i;}}

cout<<"\nkilkist najchast. vid.d:"<<max<<"\nden'"<<imax;

cout<<"\nSerednje znachennja:"<<ser; cout<<"\nsuma pidrozdilu Y:"<<sumY;

cout<<"\nsuma pidrozdilu G:"<<sumG; cout<<"\nkilkist:"<<kilk;

delete []y; delete []g; delete []zar1; delete []zar2;

getch ();

return 0;

}

Змн.
Арк.
№ докум.
Підпис
Дата
Арк.
Практична робота №18  
Результат виконання програми:

Висновок: На цій практичній роботі я навчився створювати і використовувати одномірні динамічні масиви. Виконав завдання згідно мого варіанту, результат виконання оформив у звіт.