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

Найти в каждой строке матрицы максимальный и минимальный элементы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Из двумерного массива сделать одномерный массив, так что бы в него вошла сумма элементов строк http://www.cyberforum.ru/cpp-beginners/thread85154.html
Подскажите в чем ошибка! Вот условие "из двумерного массива сделать одномерный массив, так что бы в него вошла сумма елементов строк ( каждоя строка отдельно)" А оно считает только первую строку(((( #include<iostream.h> #include<math.h> #include<conio.h> const int n=3; void main ( )
C++ Не могу написать проги. А время сдавать уже. Выручите плиз, послезавтро зачет и нужно написать 2 проги (вроде простенькие) на Си а я пока что нубко в программировании... Вот задание: 1.Дана матрица и ее размерность A(NxM), вектор b(N) и вектор x(M). С помощью подстановки определить является ли вектор x решением уравнения Ax=b. 2.При выполнении заданий учитывать следующие требования и ограничения: 1. Размер любой входной строки не... http://www.cyberforum.ru/cpp-beginners/thread85143.html
C++ [Visual C++]strcmp()
Нужно слова, которые считываются в буфер stroka, отсортировать по алфавиту с пом. strcmp. Ошибка в том, что в условии if (strcmp( &stroka, &stroka )>0) в массивах stroka, stroka - хранится весь массив строк, а не отдельные его слова.Думаю, что ошибка в циклах. visual c++ 6.0 mfc appwizzard. Код прилагается: void CProjectDlg::OnReadF() { char Filter = "TextFile (*.txt),(*.doc) |...
Организовать ввод кириллицы в массив C++
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <conio.h> #define sz2 20 int _tmain(int argc, _TCHAR* argv) { setlocale(LC_ALL, "Russian");
C++ Файл http://www.cyberforum.ru/cpp-beginners/thread85128.html
Здравствуйте!Помогите мне решить,это последняя задача осталась(а то мне оценку на экзамене снизят) наверно, её надо реализовать в одной функции main...на языке Си В каждой строке файла содержится имя файла, находящегося в текущем каталоге. Переписать файл, удалив из него имена не существующих файлов, а для каждого существующего файла записать его размер в байтах.
C++ Удалить из списка все отрицательные элементы Постановка задачи: Составить программу, которая удаляет из списка все отрицательные элементы люди умные спасите от провала в зачете. подробнее

Показать сообщение отдельно
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
13.01.2010, 11:45     Найти в каждой строке матрицы максимальный и минимальный элементы
Вот решение, надеюсь я вам помог.

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <stdio.h>
#include <iostream.h>
 
 
 
 
void main(){
const int Height = 4;
const int Weight = 5;
 
int matrix[Height][Weight] = { 
    { 9,18,1,3,5     }, 
    { 9,19,1,3,5     }, 
    { 2,20,1,3,5     },
    { 1,25,1,3,5     }
 };
 
int max=matrix[0][0];               //максимальный
int min=matrix[0][0];               //минимальный
 
int posMax(0); //позиция максимального
int posMin(0); //позиция минимального
 
//Вычисляем максисмальный и меняем его с последним
 
//Расматриваем по строкам
for(int i = 0;i<Height;i++){
    //расматриваем массив: строку        
    for(int j = 0;j<Weight;j++){
   
    //Проверяем на  максимальный------
    if(matrix[i][j]>max){
    max=matrix[i][j];  // это максимальный
    posMax = j;        // записываем позицию максимального
    }
 
    //Производим перстановку------
    //Если просмотр строки закончен
    if(j==Weight-1){
    matrix[i][posMax]=matrix[i][j];   //записывае значение из конца в максимальный  
    matrix[i][j]=max;   //записываем в конец  строки максимальный
 
    }
   
    }
    //Устанваливаем что первый элемент следующей строки максимальный
    int nextstr=i+1;
    int nextstb=0;
    max=matrix[nextstr][nextstb];
    posMax=0;
 
}
 
    //Показ на экран
    for(int p = 0;p<Height;p++){
    //расматриваем массив: строку        
    for(int g = 0;g<Weight;g++)cout<<matrix[p][g]<<' ';
    cout<<'\n';
}
 
 
//Далее вычисляем минимальный
 
//Расматриваем по строкам
for(i = 0;i<Height;i++){
    //расматриваем массив: строку        
    for(int j = 0;j<Weight;j++){
   
    //Проверяем на  максимальный------
    if(matrix[i][j]<min){
    min=matrix[i][j];  // это максимальный
    posMin = j;        // записываем позицию максимального
    }
 
    //Производим перстановку------
    //Если просмотр строки закончен
    if(j==Weight-1){
    matrix[i][posMin]=matrix[i][0];   //записывае значение из начала строки в минимальный   
    matrix[i][0]=min;   //записываем в начало строки минимальный
    }
   
    }
    //Устанваливаем что первый элемент следующей строки минимальный
    int nextstr=i+1;
    int nextstb=0;
    min=matrix[nextstr][nextstb];
    posMin=0;
 
}
cout<<'\n';
 
    //Показ на экран
    for(p = 0;p<Height;p++){
    //расматриваем массив: строку        
    for(int g = 0;g<Weight;g++)cout<<matrix[p][g]<<' ';
    cout<<'\n';
}
 
cout<<'\n';
 
 
 
 
return;
}
Добавлено через 12 часов 29 минут
Исправлена баг: нашёл в своей проге выход за буфер по строке.
Вот усовершенствованная версия все в двух циклах:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#include <stdio.h>
#include <iostream.h>
 
 
 
 
void main(){
const int Height = 4;
const int Weight = 5;
 
int matrix[Height][Weight] = { 
    { 9,18,1,3,5     }, 
    { 9,19,1,3,5     }, 
    { 2,20,1,3,5     },
    { 1,25,1,3,5     }
 };
 
int max=matrix[0][0];               //максимальный
int min=matrix[0][0];               //минимальный
 
int posMax(0); //позиция максимального
int posMin(0); //позиция минимального
 
//Вычисляем максисмальный и меняем его с последним
 
//Расматриваем по строкам
for(int i = 0;i<Height;i++){
    //расматриваем массив: строку        
    for(int j = 0;j<Weight;j++){
   
    //Проверяем на  максимальный------
    if(matrix[i][j]>max){
    max=matrix[i][j];  // это максимальный
    posMax = j;        // записываем позицию максимального
    }
 
    //Проверяем на  минимальный------
    if(matrix[i][j]<min){
    min=matrix[i][j];  // это минимальный
    posMin = j;        // записываем позицию минимального
    }
 
    //Производим перстановку------
    //Если просмотр строки закончен
    if(j==Weight-1){
    matrix[i][posMax]=matrix[i][j];   //записывае значение из конца в максимальный  
    matrix[i][j]=max;   //записываем в конец  строки максимальный
 
    matrix[i][posMin]=matrix[i][0];   //записываем значение из начала строки в минимальный  
    matrix[i][0]=min;   //записываем в начало строки минимальный
 
    }
   
 
 
 
    }
 
 
    //Устанваливаем что первый элемент следующей строки максимальный  и минимальный
    int nextstr=i+1;
    int nextstb=0;
    if(nextstr==Height)break;  //исключение, что бы не обратится за буфер
 
    max = matrix[nextstr][nextstb];
    posMax=0;
    min = matrix[nextstr][nextstb];
    posMin=0;
}
 
 
cout<<'\n';
 
    //Показ на экран
    for(int p = 0;p<Height;p++){
    //расматриваем массив: строку        
    for(int g = 0;g<Weight;g++)cout<<matrix[p][g]<<' ';
    cout<<'\n';
}
 
cout<<'\n';
 
 
 
 
return;
}
 
Текущее время: 09:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru