Звіт до лабораторної роботи №1 студента 101-а групи Мельника О. А. Варіант №10 Завдання 1 Із одновимірного масиву А розміру N, побудувати масив C із елементів, ci= 2^i∗ ai, i = 1…𝑁. Код: #include <stdio.h> int main () { int a[100], c[100], n, i, f = 1; printf ("vvedit kilkist elemrntiv masuvy\n"); scanf ("%d", &n); printf ("vvedit %d elemrntvi masuvy\n", n); for (i = 0; i < n; i++) scanf ("%d", &a[i]); for (i = 0; i < n; i++) { f *= 2; c[i] = f * a[i]; } for (i = 0; i < n; i++) printf ("%d ", c[i]); return 0; } #include <stdio.h> #include <stdlib.h> int main () { int *a, *c, n, i, f = 1; printf ("vvedit kilkist elemrntiv masuvy\n"); scanf ("%d", &n); a=malloc(n*sizeof(int)); c=malloc(n*sizeof(int)); printf ("vvedit %d elemrntvi masuvy\n", n); for (i = 0; i < n; i++) scanf ("%d", a+i); for (i = 0; i < n; i++) { f *= 2; *(c+i) = (f * *(a+i)); } printf("new masiv:\n"); for (i = 0; i < n; i++) printf ("%d ", *(c+i)); return 0; } Завдання 2 Знайти номер останнього максимального елемента серед елементів, що лежать у діапазоні [c,d ] і розташованих до першого парного елемента. Код: #include <stdio.h> int main () { int a[100], n, i, c, d, max = 0, f = 0, box = 0, flag = 0, f2 = 0;//c-мінімальний діапазон,d-максимальний діапазон //max-максимум ,box-перший підходящий, //f-непускає в цикл коли найшовся парний елемет //f2-закриває цикл пошуку першого підхлдящого //і відкриває цикл пушуку максимуму //flag-перевіряє чи є підходящі елементи printf ("vvedit kilkist elemrntiv masuvy\n"); scanf ("%d", &n); printf ("vvedit naimenshe iz znachen diapazonu\n"); scanf ("%d", &c); printf ("vvedit naibilshe iz znachen diapazonu\n"); //знаходить діапазон scanf ("%d", &d); if(c>d) //міняє с і d місцями якщо с більше d без третьої змвнної { c=c+d; d=-d; d=d+c; c=c-d; } printf ("vvedit %d chisl masiva\n", n); for (i = 0; i < n; i++) scanf ("%d", &a[i]); if (a[0] % 2 != 0)//непускає парне число { for (i = 0; i < n; i++) { if (a[i] % 2 != 0 && f == 0)//закриває цикл якшо знаходиться парне число { if (a[i] >= c && a[i] <= d && f2 == 0)//знаходить перше підходяще число і відкриває цикл пошуку максимального { box = a[i]; f2++; flag++; max=i; } if (a[i] >= box && a[i] >= c && a[i] <= d && f2>0)//перевіряє чи число більше за попереднє максимальне і чи воно в діапазоні { box = a[i]; max = i; flag += 1; } } else f += 1; } if (flag > 0)//перевіряє чи знайшлися числа printf ("chislo pid nomeron %d ", max + 1); else printf ("nema pidhodiashchih chisl"); } else printf ("pershiy element parniy"); return 0; } #include <stdio.h> #include <stdlib.h> int main () { int *a, n, i, c, d, max = 0, f = 0, box = 0, flag = 0, f2 = 0; printf ("vvedit kilkist elemrntiv masuvy\n"); scanf ("%d", &n); a=malloc(n*sizeof(int)); printf ("vvedit naimenshe iz znachen diapazonu\n"); scanf ("%d", &c); printf ("vvedit naibilshe iz znachen diapazonu\n"); scanf ("%d", &d); printf ("vvedit %d chisl masiva\n", n); for (i = 0; i < n; i++) scanf ("%d", a+i); if (*a % 2 != 0) { for (i = 0; i < n; i++) { if (*(a+i) % 2 != 0 && f == 0) { if (*(a+i) >= c && *(a+i) <= d && f2 == 0) { box = *(a+i); f2++; flag++; max=i; } if (*(a+i) >= box && *(a+i) >= c && *(a+i) <= d && f2>0) { box = *(a+i); max = i; } } else f += 1; } if (flag > 0) printf ("chislo pid nomeron %d ", max + 1); else printf ("nema pidhodiashchih chisl"); } else printf ("pershiy element parniy"); return 0; } Завдання 3 Задано масив дійсних чисел А(n),n ≤ 500. Розробити програму, яка обчислює суму всіх чисел, які повторюються, і добуток всіх чисел, які не повторюються. Код: #include <stdio.h> int main() { int i, j, n, a[500], suma=0, db=1, flag=0, flag1=0; printf("vvedit kilkist elemrntiv masuvy\n"); scanf("%d",&n); printf("vvedit chisla masiva "); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { flag=0; for(j=0;j<n;j++) { if(a[i]==a[j]) flag++; } if(flag>1) suma+=a[i]; else { db*=a[i]; flag1++; } } if(flag1>0) { printf("suma povtorienuh chisel rivna %d\n", suma); printf("dobutuk nepovtorienuh chisel rivniy %d\n", db); } else { printf("suma povtorienuh chisel rivna %d\n", suma); printf("dobutuk nepovtorienuh chisel rivniy 0\n"); } return 0; } #include <stdio.h> #include <stdlib.h> int main() { int i, j, n, *a, suma=0, db=1, flag=0, flag1=0; printf("vvedit kilkist elemrntiv masuvy\n"); scanf("%d",&n); a=malloc(n*sizeof(int)); printf("vvedit chisla masiva "); for(i=0;i<n;i++) scanf("%d",a+i); for(i=0;i<n;i++) { flag=0; for(j=0;j<n;j++) { if(*(a+i)==*(a+j)) flag++; } if(flag>1) suma+=*(a+i); else { db*=*(a+i); flag1++; } } if(flag1>0) { printf("suma povtorienuh chisel rivna %d\n", suma); printf("dobutuk nepovtorienuh chisel rivniy %d\n", db); } else { printf("suma povtorienuh chisel rivna %d\n", suma); printf("dobutuk nepovtorienuh chisel rivniy 0\n"); } return 0; } Завдання 4 Дано два одновимірних масиви. „Злити” ці два масиви у новий третій масив, в який спочатку ввійдуть елементи першого масиву, а потім — другого, зберігаючи свою первісну послідовність. Код: #include <stdio.h> int main () { int a[100], c[100], ac[200], n, m, i, j; printf ("vvedit kilkist elemrntiv u masuvy 1\n"); scanf ("%d", &n); printf ("vvedit kilkist elemrntiv u masuvy 2\n"); scanf ("%d", &m); printf ("vvedit %d elemrntvi masuvy 1\n", n); for (i = 0; i < n; i++) scanf ("%d", &a[i]); printf ("vvedit %d elemrntvi masuvy 2\n", m); for (i = 0; i < m; i++) scanf ("%d", &c[i]); for (i = 0; i < n; i++) { ac[i] = a[i]; j = i; } for (i = 0; i < m; i++) { j++; ac[j] = c[i]; } printf("elementu masiva 3\n"); for (i = 0; i < n + m; i++) printf ("%d ", ac[i]); return 0; } #include <stdio.h> #include <stdlib.h> int main () { int *a, *c, *ac, n, m, i, j, nm; printf ("vvedit kilkist elemrntiv u masuvy 1\n"); scanf ("%d", &n); printf ("vvedit kilkist elemrntiv u masuvy 2\n"); scanf ("%d", &m); a=malloc(n*sizeof(int)); c=malloc(n*sizeof(int)); nm=n+m; ac=malloc(nm*sizeof(int)); printf ("vvedit %d elemrntvi masuvy 1\n", n); for (i = 0; i < n; i++) scanf ("%d",a+i); printf ("vvedit %d elemrntvi masuvy 2\n", m); for (i = 0; i < m; i++) scanf ("%d",c+i); for (i = 0; i < n; i++) { *(ac+i) = *(a+i); j = i; } for (i = 0; i < m; i++) { j++; *(ac+j) = *(c+i); } printf("elementu masiva 3\n"); for (i = 0; i < n + m; i++) printf ("%d ",*(ac+i)); return 0; } Завдання 5 У даній дійсній матриці розмірності 6*9 знайти суму елементів рядка, що містить найбільший елемент.Вважається що такий елемент в матриці єдиний. #include <stdio.h> int main () { int a[6][9], i, j, f1 = 0, f2 = 1, max, ai, s = 0;//a[6][9]-матриця, i-змінна, j-змінна, f1 = 0-флажок //який недає ввійти в оператор який записує першечисло, //f2 = 1-флажок який перевіряє кількість найбільших першечисл, //max-максимальне число, ai-запамятовує степень максимального числа, //s = 0-сума рядка з найбільшим числом for (i = 0; i < 6; i++) { printf ("vvedit 9 elemrntvi matritsi %d riadka\n", i + 1); for (j = 0; j < 9; j++) { scanf ("%d", &a[i][j]);//цикл який саписує в матрицю значення if (f1 == 0) //оператор запамятовування першого числа та його рядка, незапускається другий раз через f2 { max = a[i][j]; f1++; ai = i; } else if (a[i][j] >= max)//оператор який пропускає найбільші та однакові до найбільших чисел { if (a[i][j] == max)//оператор який рахує скільки найбільших числ є в матриці f2++; else//оператор який зберігає максимальне число, його рядок та скидає лічильник f1 який рахує кількість однакових максимальних { max = a[i][j]; f2 = 1; ai = i; } } } } i = ai; if (f2 > 1)//перевіряє чи є тільки одне найбільше число printf ("nemae edunogo naibilshogo chisla"); else { for (ai; ai == i; ai++) { for (j = 0; j < 9; j++) { s += a[ai][j]; //printf("%d", s); рахує суму рядка з найбільшим числом } } printf ("suma %d riadka dorivnue %d", ai, s); //друкує суму та рядок } //for (i = 0; i < 6; i++) //for (j = 0; j < 9; j++) //printf("%d, ",a[i][j]); return 0; } #include <stdio.h> #include <stdlib.h> int main () { int *a, i, j, f1 = 0, f2 = 1, max, ai, s = 0; a=malloc(54*sizeof(int)); for (i = 1; i < 55; i+9) { printf ("vvedit 9 elemrntvi matritsi %d riadka\n", i/9+1); for (j = 0; j < 9; j++) { scanf ("%d", a+i+j);//цикл який саписує в матрицю значення if (f1 == 0) //оператор запамятовування першого числа та його рядка, незапускається другий раз через f2 { max = *(a+i+j) ; f1++; ai = i; } else if (*(a+i+j) >= max)//оператор який пропускає найбільші та однакові до найбільших чисел { if (*(a+i+j) == max)//оператор який рахує скільки найбільших числ є в матриці f2++; else//оператор який зберігає максимальне число, його рядок та скидає лічильник f1 який рахує кількість однакових максимальних { max = *(a+i+j) ; f2 = 1; ai = i; } } }i+=9; } i = ai; if (f2 > 1)//перевіряє чи є тільки одне найбільше число printf ("nemae edunogo naibilshogo chisla"); else { for (ai; ai == i; ai++) { for (j = 0; j < 9; j++) { s += *(a+i+j) ; //printf("%d", s); рахує суму рядка з найбільшим числом } } printf ("suma %d riadka dorivnue %d", ai/9+1, s); //друкує суму та рядок } //for (i = 0; i < 6; i++) //for (j = 0; j < 9; j++) //printf("%d, ",a[i][j]); return 0; }