1

Тема: Помилка у задачі з 2 вимірним масивом.

Умова: є 2 вимірний масив, у виділеній синім кольором частині масиву, знайти максимальне значення.
https://cloclo11.cloud.сайт-злодій/weblink/thumb/xw1/8bcb408d23e8/3.JPG

Начебто код мав працювати, але це не так.

#include <iostream>
#include <time.h>
#include <random>
#include <conio.h>
using namespace std;

int main()
{
setlocale(LC_CTYPE, "ukr");
system("color A");
srand(time(NULL));
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
const short int size = 6;
int arr[size][size];

int max = 0;

    // Заповнення масиву
for (int i = 0; i < size; ++i)
{
    for (int j = 0; j < size; ++j)
    {
        arr[i][j] = rand() % 100;
        cout << "arr [" << i << "][" << j << "] = " << arr[i][j] << endl;
    }
}

    //Пошук максимального значення
max = arr[0][0];

int j = 0;
int end = size;
for (int i = 0; i < (size / 2); ++i)
{
    for (; j < end; ++j)
    {
        if (max >= arr[0][0])
            max = arr[i][j];
    }

    j = i;
    end--;
}

    // результат
cout << "\nРезультат = " << max << endl;
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
_getch();
return 0;
}

Де тут помилка?

2

Re: Помилка у задачі з 2 вимірним масивом.

Прихований текст
#include <iostream>
#include <time.h>
#include <random>
#include <conio.h>
using namespace std;

int main()
{
    setlocale(LC_CTYPE, "ukr");
    system("color A");
    srand(time(NULL));
    //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    const short int size = 6;
    int arr[size][size];

    int max = 0;

    // Заповнення масиву
    for (int i = 0; i < size; ++i)
    {
        for (int j = 0; j < size; ++j)
        {
            arr[i][j] = rand() % 100;
            //cout << "arr [" << i << "][" << j << "] = " << arr[i][j] << endl;
            cout << arr[i][j]<<" ";
        }
        cout << endl;
    }

    //Пошук максимального значення
    max = arr[0][0];
    int k = 6;
    int l = 0;
    for (int i = 0; i < 3; i++)
    {
        for (int j = l; j < k; j++)
        {
            if (arr[i][j]>max)
                max = arr[i][j];
        }
        k -= 1;
        l += 1;
    }

    // результат
    cout << "\nРезультат = " << max << endl;
    //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    _getch();
    return 0;
}

Я не розумію на квадраті синій колір виділений до середини а в вас  size = 6; тобто середини немає тому я зробив до трьох

3

Re: Помилка у задачі з 2 вимірним масивом.

[0][0]   [0][1]   [0][2]   [0][3]   [0][4]   [0][5]
   [1][0]   [1][1]   [1][2]   [1][3]   [1][4]   [1][5]
   [2][0]   [2][1]  [2][2]   [2][3]   [2][4]   [2][5]
   [3][0]   [3][1]   [3][2]   [3][3]   [3][4]   [3][5]
   [4][0]   [4][1]   [4][2]   [4][3]   [4][4]   [4][5]
   [5][0]   [5][1]   [5][2]   [5][3]   [5][4]   [5][5]

4 Востаннє редагувалося Betterthanyou (22.07.2014 00:15:18)

Re: Помилка у задачі з 2 вимірним масивом.

А у вашому коді такі помилки j = i; потрібно ставити з верху і розгалуження не вірне max >= arr[0][0] при тому що max==arr[0][0] БУДЬТЕ УВАЖНІ і навіщо >= це серівно що писати

if (max == arr[i][j]){max = arr[i][j];}

а ось як потрібно

 
        j = i;
        for (; j < end; ++j)
        {
            if (max < arr[i][j])
                max = arr[i][j];
        }
        end--;
Подякували: Joker1

5

Re: Помилка у задачі з 2 вимірним масивом.

Дякую, але size = 6 - заповнення масиву, а при перевірці

for (int i = 0; i < (size / 2); ++i)

береться половина size;