1 Востаннє редагувалося Joker (07.07.2014 10:00:14)

Тема: Не працює задача на 2 вимірний масив

Дана квадратная матрица порядка n (n строк, n столбцов). Найти наибольшее из значений элементов, расположенных в тёмно-синих частях матриц. (скопійовано з оригіналу, за n взято 5)

https://cloud.сайт-злодій/public/bfea8 … %D0%BA.JPG

P.S. Як тут вставити картинку з компа?

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

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

    int max; // Результат

    vector<int> b;

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

// Вивід запоаненого масиву у консоль
    for (int i=0; i<size; ++i)
    {
        for (int j=0; j<size; ++j)
            cout << "Arr[" << i << "][" << j << "] = " << arr[i][j] << endl;
    }

// Заповнення векторного масиву потрібними елементами
    for (int i=0; i<size; ++i)
    {
        for (int j=0; j<size; ++j)
        {
            if (i >= j)
                b.push_back(arr[i][j]);
        }
    }

// Пошук максимального елемента векторного масива
    int size_v = b.size()-1;
    max = b[0];

    for (int i=0; i < size_v; ++i)
    {
        if (b[i] < b[i+1]);
            max = b[i+1];
    }


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

Моя логіка задачі
https://cloud.сайт-злодій/public/19fc3 … D0%BA2.JPG

Але результат ЗДАЄТЬСЯ не правильний (


І от тепер не кажіть що я замість того щоб вчитися тільки хочу зламати Пентагон

2

Re: Не працює задача на 2 вимірний масив

рядок 51-52 має бути
        if (max < b[i+1])
            max = b[i+1];

3 Востаннє редагувалося yarko (07.07.2014 10:11:52)

Re: Не працює задача на 2 вимірний масив

рядок 46-53 має бути

max = b[0];
    for (int i=1; i < b.size(); i++)
    {
        if (max < b[i]);
            max = b[i];
    }

р.s. де тут кнопка видалення повідомлення? :)

Подякували: Joker1

4

Re: Не працює задача на 2 вимірний масив

Якщо наводите текст мовою оригіналу, то давайте і переклад, а то мета форуму втрачається.
Якщо вам щось здається - уточніть, чому. Просто для себе - це вам і допоможе розібратися.
Копіювати елементи з масиву у вектор - це, звісно, можна, але нащо? Ви спершу пхаєте елементи в вектор, а потім ідете по ним в тому самому порядку. То чи не варто замість пхати елемент одразу робити те, що йде в наступному циклі? Тим більше що зайва крапка з комою весь сенс знищувала, та ще й максимум ви з двох елементів постійно шукали замість з усіх:

if (b[i] < b[i+1]);
  max = b[i+1];
замість
if (max < b[i+1])
  max = b[i+1];

Але це ще не все. Ви правильно встановили критерій, але застосували його неоптимально. Нащо взагалі крутити цикл там, де i < j? Ось вам ваші два останні цикли, і vector не потрібен:

for ( int i = 0; i < size; ++i )
{
  for ( int j = 0; j <= i; ++j ) //ось так!
  {
    if (max < arr[ i ][ j ])
      max = arr[ i ][ j ];
  }
}
Подякували: Joker, Felis silvestris catus2

5

Re: Не працює задача на 2 вимірний масив

// Заповнення векторного масиву потрібними елементами
// Пошук максимального елемента векторного масива

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

Вкладений масив не потрібно проходити до кінця, у вас же в умові циклу перевірка j<size і тут же i >= j, причому size завжди менший за j. Варто б писати отак:

for (int j=0; j<size; ++j)

А так ніби знаходить максимум там, де треба, і не знаходить там, де не треба.

Подякували: Joker1

6

Re: Не працює задача на 2 вимірний масив

Пахає але залишилося 1 питання. ЯК тут засунути скрін з компа

7

Re: Не працює задача на 2 вимірний масив

Залити на хостинг зображень, а далі як з будь-якою картинкою із мережі.

Подякували: koala1

8

Re: Не працює задача на 2 вимірний масив

нажати img і туда всунути лінк де взяти фотку?

9 Востаннє редагувалося Joker (07.07.2014 10:47:43)

Re: Не працює задача на 2 вимірний масив

https://cloud.сайт-злодій/public/19fc3ecae02d/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.JPG

ей що з нею? чому так?

10

Re: Не працює задача на 2 вимірний масив

@yarko

Кнопка видалення повідомлення відсутня у звичайних користувачів.

11 Востаннє редагувалося koala (07.07.2014 11:02:14)

Re: Не працює задача на 2 вимірний масив

Ви посилання не назображення, а на сторінку із ним даєте.
І не

Моя логіка задачі
https://cloud.сайт-злодій/public/19fc3ecae02d/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.JPG

а

[spoiler=Моя логіка задачі]
[img]https://cloclo16.cloud.сайт-злодій/weblink/thumb/xw1/19fc3ecae02d/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.JPG[/img][/spoiler]
Моя логіка задачі

https://cloclo16.cloud.сайт-злодій/weblink/thumb/xw1/19fc3ecae02d/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.JPG

Подякували: Joker1

12 Востаннє редагувалося Joker (07.07.2014 11:25:38)

Re: Не працює задача на 2 вимірний масив

Якщо потрібно видаліть це повідомлення просто я хочу пробувати сам.

Я пробую сам!

https://cloclo16.cloud.сайт-злодій/weblink/thumb/xw1/19fc3ecae02d/%D0%A1%D0%BD%D0%B8%D0%BC%D0%BE%D0%BA2.JPG

13

Re: Не працює задача на 2 вимірний масив

Подивіться, що знаходиться за вашим посиланням:
https://cloclo16.cloud.сайт-злодій/thu … %40mail.ru
Якщо хочете, щоб це була картинка - там має бути картинка.

14

Re: Не працює задача на 2 вимірний масив

Тепер вже все ок

Подякували: koala1

15 Востаннє редагувалося Joker (07.07.2014 13:44:30)

Re: Не працює задача на 2 вимірний масив

Задача та ж сама от тільки тепер у цій області.
https://cloud.сайт-злодій/public/8bcb408d23e8/3.JPG
Підкиньте алгоритм як відділити темну частину від всього масиву

під словом алгоритм я маю на увазі

16

Re: Не працює задача на 2 вимірний масив

Ви, мабуть, гадаєте, що ми бачимо картинку...

17

Re: Не працює задача на 2 вимірний масив

ну нехай заки так

18 Востаннє редагувалося koala (07.07.2014 13:53:01)

Re: Не працює задача на 2 вимірний масив

https://cloclo14.cloud.сайт-злодій/weblink/thumb/xw1/8bcb408d23e8/3.JPG
Номер рядка ( i ) від 0 до size / 2 (далі нема сенсу)
Номер стовпця ( j ) від i до size - i - 1 (побічна діагональ).
В чому проблема?

Подякували: Joker1

19

Re: Не працює задача на 2 вимірний масив

Як ви засунули ту картинку, те ж АНРІАЛ.
Що ви зробили коли зайшли по тій силці.

P.S. Дякую

20

Re: Не працює задача на 2 вимірний масив

ПКМ на малюнку - копіювати посилання на малюнок.

Подякували: Joker1