Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 64
1

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

28.02.2014, 11:17. Показов 1131. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Или подскажите в чем я ошибаюсь... Суть задачи: 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;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.02.2014, 11:17
Ответы с готовыми решениями:

Определение максимумов и минимума на кривой
Имеется txt-файл, содержащий 300 тыс. значений в двух столбцах. Необходимо извлечь данные из файла...

в чем ошибка( поиск максимума в строке и потом нахождение минимума)
max,k,s:real; i,j,min:integer; begin max:=0; k:=0; for i := 1 to 3 do begin min:=10000; for...

DataGridView и двумерный массив, ошибка поиск минимума и максимума в каждой строке
Здравствуйте, написал код, собственно что он должен делать: я заношу в ячейки дата грид вью...

Ошибка в коде - поиск записей в IBQuery
Доброго времени суток, подскажите пож-та, что не так. Вообщем есть DBGridEh, в нем данные...

12
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
28.02.2014, 11:34 2
Лучший ответ Сообщение было отмечено Warzone-blg как решение

Решение

Цитата Сообщение от Warzone-blg Посмотреть сообщение
for (i=0;i<n;i++){
Замените на m;
А вообще лучше использовать динамический массив.

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

Добавлено через 2 минуты
S_el, В этом случае Вы не правы, тот фрагмент на который Вы мне указали, ищет минимальный элемент из уже выбранных максимальных, в этой части кода ошибок нет, может быть он не оптимален, но с точки зрения с++ написан верно, ошибка именно в поиске или выводе
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
28.02.2014, 11:41 4
Цитата Сообщение от Warzone-blg Посмотреть сообщение
S_el, В этом случае Вы не правы, тот фрагмент на который Вы мне указали, ищет минимальный элемент из уже выбранных максимальных, в этой части кода ошибок нет, может быть он не оптимален, но с точки зрения с++ написан верно, ошибка именно в поиске или выводе
Warzone-blg, я вам не на синтаксическую ошибку указал,а на смысловую.
Не заметил,что забыл строчку указать,в предыдущем сообщении подразумевалась 38 строчка.
0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 64
28.02.2014, 11:43  [ТС] 5
S_el, Прошу прощения, я менял либо в том либо в том месте, надо было в поиске и в выводе поменять...
Но теперь в поиске минимальных из максимальных если минимальный элемент ноль он ищет следующий минимальный после нуля...
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
28.02.2014, 11:44 6
Лучший ответ Сообщение было отмечено Warzone-blg как решение

Решение

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;
    }
1
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 64
28.02.2014, 11:49  [ТС] 7
S_el, Спасибо, то что нужно, самое интересное что я это все понимаю, но когда реализую сам, то допускаю ошибки... пойду, как завещали нашему поколению, и буду учиться...учиться...учиться...
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
28.02.2014, 11:51 8
Только
C++
1
int max
можете убрать,она нигде не используется.
0
0 / 0 / 0
Регистрация: 20.05.2013
Сообщений: 64
28.02.2014, 11:53  [ТС] 9
S_el, Но это, насколько я понял динамический массив?
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
28.02.2014, 11:54 10
Цитата Сообщение от Warzone-blg Посмотреть сообщение
Но это, насколько я понял динамический массив?
Верно,раз есть оператор new.
0
Заблокирован
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
Для продолжения нажмите любую клавишу . . .
1
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,238
28.02.2014, 11:56 12
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
S_el, у вас ошибка в коде. Не надо присваивать нулевые значения:
Верно,но это не ошибка,а недосмотр.Все-таки код переделывал,а не сам писал.
0
Заблокирован
28.02.2014, 11:58 13
S_el, Еще бы неплохо, выводить информацию, перед вводом каких-то значений. А то непонятно, что требует консоль.
0
28.02.2014, 11:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.02.2014, 11:58
Помогаю со студенческими работами здесь

Поиск максимумов
Привет!!! У меня вопрос. У меня есть прога, которая сохраняет в текстовый фаил типа F= 2.256 ...

Поиск слов, содержащих цифры - ошибка в коде
Здравствуйте! Пожалуйста, скажите, в чем моя ошибка. Нужно написать функцию, которая считает все...

Поиск двух максимумов
В массиве записана информация о стоимости 30 видов товара. Определить стоимость двух самых дорогих...

Поиск и сравнение максимумов. Bash
Здравствуйте. Появился следующий вопрос. Допустим, есть файл log.txt, вида Pack date: elapsed...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru