1

Тема: Двохвимірний масив. Подробніше в повідомлені.

Задачка:
Згенерувати двохвимірні масиви з допомогою генератора псевдовипадкових чисел rand() відрізка [-100;100].
Ввести прямокутну матрицю дійсних чисел.
Вилучити з матриці рядок з мінімальнимзначенням добутку усіх його елементів.

Я зробив такий код по цій задачі мені потрібно щоб провірили мій код і сказали чи він є правильним для цієї задачі і чи виводить правильні значення.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    int i,j, a[10][10];
    srand(time(NULL));
    while(1)
    {
        for(i=0;i<10;i++)
     {
         for(j=0;j<10;j++)
      {
          a[i][j] = rand() % 201-100;
          printf("%5d",a[i][j]);
      }
      printf("\n");
     }
     return 0;
    }
}
    

2

Re: Двохвимірний масив. Подробніше в повідомлені.

правильно, але навіщо там нескінечний цикл я не розумію =(

Згенерувати двохвимірні масиви з допомогою генератора псевдовипадкових чисел rand() відрізка [-100;100].
Ввести прямокутну матрицю дійсних чисел.

тепер думайте над реалізацією цієї функції

Вилучити з матриці рядок з мінімальнимзначенням добутку усіх його елементів.

3

Re: Двохвимірний масив. Подробніше в повідомлені.

Якось так виийшло

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
int x = 10, y = 10;
int i,j, a[x][y];
int i_min = 0,j_min = 0;
srand(time(NULL));
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
a[i][j] = rand() % 201-100;
printf("%5d",a[i][j]);
if(a[i][j] < a[i_min][j_min]) /* пошук мінімального значення */
{
i_min = i;
j_min = j;
}
}
printf("\n");
}

for(i = i_min; i < x - 1; i++)
{
for(j = 0; j < y; j++)
{
a[i][j] = a[i+1][j];
/* копіюємо дані з наступного рядка */
}
}
x--; /* зменшуємо кількість рядків */
/* виводимо, що вийшло на екран */
printf("Вивід матриці без рядка з мінімальним значенням добутку усіх його елементів ");

putchar('\n');
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
printf("%5d",a[i][j]);
putchar('\n');
}

return 0;
}

4 Востаннє редагувалося mamkin haker (30.09.2021 19:51:05)

Re: Двохвимірний масив. Подробніше в повідомлені.

//1)
//вам уже казали що потрібно не так
int i,j
for(i = 0; i < x; i++)
{
for(j = 0; j < y; j++)
{
}

//а ось так
for(int i = 0; i < x; i++) {
        for(int j = 0; j < y; j++) {
        }
}

2) чому у вас немає відступів (пробілів або табів) це полегшує читання коду

3) навіщо вам пошук мінімального елементу, якщо у вас в умові прописаний добуток

//це робота вашого коду але з добавленням деякої функції яка виводить на екран добутки стрічок
   40  -62   76  -17  -76  -36   80  -13  -40  -80
  -90   71  -38   92   -2  -14  -60   94  -37  -29
  -58   82   12   49   65  -63   34  -35   38   94
  -72  -23   83  -97   60  -94  -83   39  -57  -22
   10  -97  -52   72   95   -4  -93  -65  -10  -80
  -44  -18   53   18  -69   17    5   65   32  -58
    9   10  -31   -9  -36  -72   -3  -19   17  -10
    9   77   -7    8   -2  -13  -97    5  -28   -7
   26  -22   76  -72   46   57   45 -100   21  -74
   93   80  -13  -39  -30   51  -61   67   82    7


1) -29175184097280000
2) -3785377003430400
3) -48677861391868800
4) -305231604038824320
5) -6673865702400000
6) 534604858444800
7) -630674812800
8) 95916300480
9) 57390278609664000
10) 13539070690891200

найменший добуток у рядку 4
його добуток становить -305231604038824320

Вивід матриці без рядка з мінімальним значенням добутку усіх його елементів 
   40  -62   76  -17  -76  -36   80  -13  -40  -80
  -90   71  -38   92   -2  -14  -60   94  -37  -29
  -58   82   12   49   65  -63   34  -35   38   94
  -72  -23   83  -97   60  -94  -83   39  -57  -22
   10  -97  -52   72   95   -4  -93  -65  -10  -80
  -44  -18   53   18  -69   17    5   65   32  -58
    9   10  -31   -9  -36  -72   -3  -19   17  -10
    9   77   -7    8   -2  -13  -97    5  -28   -7
   93   80  -13  -39  -30   51  -61   67   82    7

як ми побачили з фрагменту вище, ваш алгоритм спрацює майже ніколи, найменьший множник був у стрічці 9 (-100) а от найменьший добуток в стрічці 4, ваш алгоритм видалив стрічку 9 -_-

5 Востаннє редагувалося mamkin haker (30.09.2021 19:55:39)

Re: Двохвимірний масив. Подробніше в повідомлені.

для коректного рахування добутків використовуйте long int відображення у printf() таке

long int product = 13539070690891200; // таке число запихнути в int неможливо
printf("%ld\n", product); //використовуємо %ld замість %d