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

Матрица, поиск наименьешего в строках - C++

Восстановить пароль Регистрация
 
San4ez
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 7
14.12.2011, 11:53     Матрица, поиск наименьешего в строках #1
Здравствуйте!
Проблема (
Задача: Дана матрица nxm, определить наименьшие числа в строках.
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
    int i,j,n,m,min,a[i][j];
    for(i = 0; i < n; i++)
    {
        min ^= min;
        for(j = 1; j < m; j++)
            if(a[i][j] < a[i][min])
                min = j;
                
                cout << min;
    }
    system("pause");
}
Компилируется без ошибок, но при выполнении программы в командной строке ничего не происходит и появляется ошибка "Ваша программа вызвала нарушение доступа (ошибка сегментации). Что это? Первый раз с такой ошибкой сталкиваюсь. Подскажите плз, и по возможности подправьте код.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 12:02     Матрица, поиск наименьешего в строках #2
Цитата Сообщение от San4ez Посмотреть сообщение
Что это?
это нарушение программой границ отведенной для нее памяти. Обращение к "чужой" области памяти. Строка 10 кода.

Добавлено через 3 минуты
кроме того что вы неверно проверяете минимум, также ваш минимум в случае ни одного выполнения условия по столбцам так и останется нулем, а не минимумом из чисел. Поэтому лучше не обнуляйте его, а присваивайте значение нулевого столбца i-той строки.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:19     Матрица, поиск наименьешего в строках #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int main()
{
    int i,j,n,m,min,a[i][j];
    for(i = 0; i < n; i++)
    {
        min = 0;
        for(j = 1; j < m; j++)
            if(a[i][j] < a[i][min])
                min = j;
                
                cout << min;
    }
    system("pause");
}
San4ez
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 7
14.12.2011, 12:31  [ТС]     Матрица, поиск наименьешего в строках #4
Цитата Сообщение от alkagolik Посмотреть сообщение
это нарушение программой границ отведенной для нее памяти. Обращение к "чужой" области памяти. Строка 10 кода.
Спасибо, я так думаю вот это
C++
1
a[i][min]
"ни к селу ни к городу" ?

Thinker, таже самая ошибка.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:37     Матрица, поиск наименьешего в строках #5
Цитата Сообщение от San4ez Посмотреть сообщение
Thinker, таже самая ошибка.
Где ошибка. Что это вы выдумали. Переменная min будет хранить номер первого столбца с минимальным значением. И так для каждой строчки.
alkagolik
 Аватар для alkagolik
1510 / 616 / 79
Регистрация: 15.07.2011
Сообщений: 3,552
14.12.2011, 12:39     Матрица, поиск наименьешего в строках #6
Цитата Сообщение от San4ez Посмотреть сообщение
"ни к селу ни к городу" ?
ага, только я сейчас внимательней посмотрел. Суть немного другая. Во - первых вы ищете не минимум, а индекс столбца с минимумом. поменяте условие так
C
1
2
if(a[i][j] < min)
    min = a[ i ][ j ];
а во - вторых у вас размера матрицы нет, неинициализированы явно n, m. Может это влияет.

Добавлено через 1 минуту
C
1
for(j = 1/*тут нуль надо поставить*/; j < m; j++)
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
14.12.2011, 12:39     Матрица, поиск наименьешего в строках #7
Цитата Сообщение от alkagolik Посмотреть сообщение
у вас размера матрицы нет, неинициализированы явно n, m. Может это влияет.

Не по теме:

Тоже только заметил, вот невнимательность

San4ez
0 / 0 / 0
Регистрация: 13.12.2011
Сообщений: 7
14.12.2011, 13:14  [ТС]     Матрица, поиск наименьешего в строках #8
Щас попробую =)

Добавлено через 13 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
    int i,j,n,m,min,a[i][j];
    cin >> n;
    cin >> m;
    cout << "\n\n";
    for(i = 0; i < n; i++)
    {
        min = 0;
        for(j = 0; j < m; j++)
            if(a[i][j] < min)
              min = a[i][j];
                
                cout << min;
    }
    cout << "\n\n";
    system("pause");
}
Сделал чтоб n и m вводились с клавиатуры и поправил условие, компилируется, работает без ошибок, но выводит всегда "0". Это так и должно быть? Ибо, программа выводит самый возможны минимум да? Чтобы выводила другие числа, нужно самому заполнять матрицу конкретными значениями?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.12.2011, 13:39     Матрица, поиск наименьешего в строках
Еще ссылки по теме:

C++ Поиск в строках файла
C++ Поиск подстроки в двух строках
Поиск чисел в строках файла C++

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

Или воспользуйтесь поиском по форуму:
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
14.12.2011, 13:39     Матрица, поиск наименьешего в строках #9
Цитата Сообщение от San4ez Посмотреть сообщение
int i,j,n,m,min,a[i][j];


Добавлено через 1 минуту
Цитата Сообщение от San4ez Посмотреть сообщение
Это так и должно быть?
Судя по вашему коду, никто не может сказать, т.к. i,j хранит какой-то "мусор".
Yandex
Объявления
14.12.2011, 13:39     Матрица, поиск наименьешего в строках
Ответ Создать тему
Опции темы

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