|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.01.2013, 10:45 | #1 |
Регистрация: 02.01.2013
Сообщений: 5
|
Работа с матрицей
Помогите, пожалуйста, разобраться. Мне нужно найти максимальное из чисел, встречающихся в заданной матрице более одного раза. Ошибок при компиляции нет, но почему то не выводит на экран последние две строки или сам метод просто не работает..
вот код: #include <iostream> #include <conio.h> #include <time.h> using namespace std; int main() { cout << "\n1) Введите размер матрицы\n\n"; cout << " Количество строк - "; int n; cin >> n; cout << "\n"; cout << " Количество столбцов - "; int m; cin >> m; cout << "\n\n"; cout << "2) Введите максимальный размер случайных чисел матрицы - "; int max; cin >> max; cout << "\n"; int matr[n][m]; //ввод матрицы srand(time(NULL)); for(int i=0; i<n; i++) { for(int j=0; j<m; j++) { matr[i][j] = rand()% max + 1; } } //вывод матрицы на экран for(int i=0; i<n; i++) { cout << endl; cout << "\t"; for(int j=0; j<m; j++) { cout << matr[i][j] << " "; } cout << "\n"; } //нахождение максимального повторяющегося элемента int x,y,maxI,maxJ,i,j; bool flag1, flag2; for( i=0; i<n; i++) { for( j=0; j<m; j++) { x = i; y = j + 1; flag2 = false; while((x<=n)&&(flag2==false)) { while((y<=m)&&(flag2==false)) { if(matr[i][j]==matr[x][y]) { flag2 = true; y++;} } x++; } if((flag1==true)&&(flag2==true)&&(m atr[i][j]>matr[maxI][maxJ])) {maxI = i; maxJ = j;} } if((flag1==false)&&(flag2==true)) { maxI = i; maxJ = j; flag1 = true; } if(flag1==true) cout << "Максимальное из чисел, встречающееся в данной матрице более одного раза - " << matr[maxI][maxJ]; else cout << "В данной матрице нет повторяющихся элементов"; } getch(); return 0; } Последний раз редактировалось sbnm; 02.01.2013 в 10:54. |
03.01.2013, 23:44 | #2 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Привет!
Цитата:
Сейчас изучаю Qt C++ и решил на вашей задачке потренироваться в создании GUI. Архив с файлами проекта приложил к данному сообщению. Моя программка просто выводит максимальный элемент матрицы. Элементы матрицы - это случайные числа: [0 100]. Размеры матрицы от 2 до 10 При запуске появляется диалоговое окно: Далее, вводим размеры матрицы [n x m]. Где n - число строк (от 2 до 10). m - число столбцов (от 2 до 10). И нажимаем кнопку "Make Matrix". Генерируются элементы матрицы: Нажимаем кнопку "Find Max Element", чтобы найти максимальный элемент матрицы: Иван P.S. Программа не имеет защит от некорректных входных данных. Последний раз редактировалось 8Observer8; 03.01.2013 в 23:48. |
|
04.01.2013, 07:10 | #3 |
Регистрация: 02.01.2013
Сообщений: 5
|
если все числа разные, надо вывести сообщение, что повторяющихся элементов нет.
|
04.01.2013, 23:43 | #4 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,323
|
Сначала нужно создать матрицу, выделив для неё память:
Код:
Потом не забыть удалить матрицу из памяти: Код:
Объявление функции: Код:
- объект myvector типа vector заполняется элементами матрицы - элементы объекта myvector сортируются по возрастанию - отыскиваем пару одинаковых элементов в myvector от конца - если найдена пара, то возвращаем флаг: isRepeating = true - иначе возращаем: isRepeating = false Код:
Код:
P.S. В начале файла нужно добавить: Код:
Последний раз редактировалось 8Observer8; 04.01.2013 в 23:48. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с матрицей | Дашка Шевцова | Помощь студентам | 2 | 21.06.2011 11:44 |
Работа с матрицей | Иги | Помощь студентам | 2 | 21.01.2011 00:03 |
Работа с матрицей | xarti | Общие вопросы C/C++ | 11 | 18.01.2011 15:31 |
Работа с матрицей | GM402 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 29.11.2010 23:22 |
работа с матрицей | RanMa | Помощь студентам | 6 | 12.03.2010 17:05 |