Форум программистов, компьютерный форум CyberForum.ru

Ошибка в коде, поиск минимума из максимумов - C++

Восстановить пароль Регистрация
 
Warzone-blg
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 60
28.02.2014, 11:17     Ошибка в коде, поиск минимума из максимумов #1
Или подскажите в чем я ошибаюсь... Суть задачи: 1) задаем размерность матрицы, 2)задаем элементы матрицы, 3) выводим эту матрицу 4) и в каждом столбце ищем максимальный элемент, затем 6) среди этих максимальных элементов нужно найти минимальный... Допустим я задаю матрицу размера 3х3, алгоритм работает как должен, но при задании матрицы размером 2х3 поиск максимумов происходит только в первых двух столбцах, третий не находится, где я ошибся?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
[*]#include <iostream>
#include <iomanip>
 using namespace std;
 
int main()
{
int matrix[100][100];
int n, m, i, j;
int mass[100];
 
cin>>n>>m;
 
for (i=0; i<n; i++)
{
    for(j=0; j<m; j++)
    
{
    cin>>matrix[i][j]; }}
    
    for (i=0;i<n; i++)
    {
        for (j=0; j<m; j++)
         { 
                  cout << setw(5)<<matrix[i][j];
                  }
                  cout<<endl;
                  }
                  
 int MAX[n];
    int max;
    for (int j = 0; j < n; j++)
    {
        max = 0;
        for (int i = 0; i < m; i++)
        {
            if (matrix[max][j] < matrix[i][j])
            {
                max = i;
            }
        }
        MAX[j] = matrix[max][j];
    }
 
    cout << "Maximum po stolbcam " << '\n';
    for (int i = 0; i < n; i++)
    {
        cout << MAX[i] << "  ";
    }
      int betta=MAX[0];
      for (i=0;i<n;i++){
      if (MAX[i]<betta) betta = MAX[i];}
      cout<<endl<<endl<<"Betta = "<<betta<<endl;       
system("Pause");                 
 return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
28.02.2014, 11:34     Ошибка в коде, поиск минимума из максимумов #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Warzone-blg Посмотреть сообщение
for (i=0;i<n;i++){
Замените на m;
А вообще лучше использовать динамический массив.

Добавлено через 2 минуты
У вас еще в нескольких местах n на m надо заменить.
Warzone-blg
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 60
28.02.2014, 11:37  [ТС]     Ошибка в коде, поиск минимума из максимумов #3
S_el, менял, та же самая проблема, обрабатывал именно матрицу 2х3, первые 2 столбца просчитывает а третий нет, либо просчитывает но не выводит, но я пробовал выводить в другом цикле, та же беда...
По поводу динамического массива, я самую первую лабораторную написал таким образом, а последующие строятся на основе первой...поэтому нужно сделать здесь...

Добавлено через 2 минуты
S_el, В этом случае Вы не правы, тот фрагмент на который Вы мне указали, ищет минимальный элемент из уже выбранных максимальных, в этой части кода ошибок нет, может быть он не оптимален, но с точки зрения с++ написан верно, ошибка именно в поиске или выводе
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
28.02.2014, 11:41     Ошибка в коде, поиск минимума из максимумов #4
Цитата Сообщение от Warzone-blg Посмотреть сообщение
S_el, В этом случае Вы не правы, тот фрагмент на который Вы мне указали, ищет минимальный элемент из уже выбранных максимальных, в этой части кода ошибок нет, может быть он не оптимален, но с точки зрения с++ написан верно, ошибка именно в поиске или выводе
Warzone-blg, я вам не на синтаксическую ошибку указал,а на смысловую.
Не заметил,что забыл строчку указать,в предыдущем сообщении подразумевалась 38 строчка.
Warzone-blg
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 60
28.02.2014, 11:43  [ТС]     Ошибка в коде, поиск минимума из максимумов #5
S_el, Прошу прощения, я менял либо в том либо в том месте, надо было в поиске и в выводе поменять...
Но теперь в поиске минимальных из максимальных если минимальный элемент ноль он ищет следующий минимальный после нуля...
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
28.02.2014, 11:44     Ошибка в коде, поиск минимума из максимумов #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Warzone-blg, переделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 #include <iostream>
    using namespace std;
    int main()
    {
    int n, m, i, j,**mas,*arr,max;
    cin>>n>>m;
 
    mas=new int*[n];
    arr=new int[m];
 
    for(i=0;i<n;i++)
    {
    mas[i]=new int[m];
    }
 
    for (i=0; i<n; i++)
    {
        for(j=0; j<m; j++)
        {
        cin>>mas[i][j]; 
        }
    }
 
 
    for (i=0;i<n; i++)
    {
        for (j=0; j<m; j++)
        {
        cout <<"     "<<mas[i][j];
        }
        cout<<endl;
    }
 
    for (j = 0; j < m; j++)
    {
        arr[j]=0;
        for (i = 0; i <n; i++)
        {
        if (mas[i][j]>arr[j])
        arr[j]=mas[i][j];
        }
    }
    cout << "Maximum po stolbcam " << endl;
    for (i = 0; i < m; i++)
    {
    cout <<arr[i] <<" ";
    }
    int minmax=arr[0];
    for (i=0;i<m;i++){
    if (arr[i]<minmax) minmax = arr[i];}
    cout<<endl<<endl<<"minmax = "<<minmax<<endl;
    delete[] arr;
    delete [] mas;
    system("Pause");
    return 0;
    }
Warzone-blg
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 60
28.02.2014, 11:49  [ТС]     Ошибка в коде, поиск минимума из максимумов #7
S_el, Спасибо, то что нужно, самое интересное что я это все понимаю, но когда реализую сам, то допускаю ошибки... пойду, как завещали нашему поколению, и буду учиться...учиться...учиться...
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
28.02.2014, 11:51     Ошибка в коде, поиск минимума из максимумов #8
Только
C++
1
int max
можете убрать,она нигде не используется.
Warzone-blg
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 60
28.02.2014, 11:53  [ТС]     Ошибка в коде, поиск минимума из максимумов #9
S_el, Но это, насколько я понял динамический массив?
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
28.02.2014, 11:54     Ошибка в коде, поиск минимума из максимумов #10
Цитата Сообщение от Warzone-blg Посмотреть сообщение
Но это, насколько я понял динамический массив?
Верно,раз есть оператор new.
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,779
28.02.2014, 11:54     Ошибка в коде, поиск минимума из максимумов #11
S_el, у вас ошибка в коде. Не надо присваивать нулевые значения:
C++
1
2
3
4
5
6
7
8
9
for (j = 0; j < m; j++)
    {
        arr[j]=0;
        for (i = 0; i <n; i++)
        {
        if (mas[i][j]>arr[j])
        arr[j]=mas[i][j];
        }
    }
В случае отрицательных значений результат будет неправильный:
Код
3
3
-2
-3
-4
-5
0
2
-8
-9
-11
     -2     -3     -4
     -5     0     2
     -8     -9     -11
Maximum po stolbcam
0 0 2

minmax = 0
Для продолжения нажмите любую клавишу . . .
S_el
1906 / 1501 / 295
Регистрация: 15.12.2013
Сообщений: 5,915
28.02.2014, 11:56     Ошибка в коде, поиск минимума из максимумов #12
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
S_el, у вас ошибка в коде. Не надо присваивать нулевые значения:
Верно,но это не ошибка,а недосмотр.Все-таки код переделывал,а не сам писал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2014, 11:58     Ошибка в коде, поиск минимума из максимумов
Еще ссылки по теме:

C++ Поиск минимума в массиве
C++ Поиск минимума
Поиск второго минимума в массиве C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ev_Hyper
 Аватар для Ev_Hyper
1806 / 1627 / 435
Регистрация: 15.12.2013
Сообщений: 5,779
28.02.2014, 11:58     Ошибка в коде, поиск минимума из максимумов #13
S_el, Еще бы неплохо, выводить информацию, перед вводом каких-то значений. А то непонятно, что требует консоль.
Yandex
Объявления
28.02.2014, 11:58     Ошибка в коде, поиск минимума из максимумов
Ответ Создать тему
Опции темы

Текущее время: 14:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru