Uploaded by Vlad Penziy

Звіт1

advertisement
Звіт
до лабораторної роботи №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;
}
Download