Масиви із різною кількістю елементів.
Хід виконання роботи
Етапи розв’язку поставленого завдання:
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 |
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 |
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 |
Висновок: На цій практичній роботі я навчився створювати і використовувати одномірні динамічні масиви. Виконав завдання згідно мого варіанту, результат виконання оформив у звіт.