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

Матрица m x n. Найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки - C++

Восстановить пароль Регистрация
 
IntM
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 9
12.01.2014, 16:52     Матрица m x n. Найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки #1
Здравствуйте. Код есть, но ведет себя не стабильно. Выводит не то, что нужно. Прошу помочь.

matrix.cpp
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
#include <iostream>
#include "matrix.h"
 
using namespace std;
 
Matrix::Matrix(int rows, int cols){
    this->rows = rows;
    this->cols = cols;
 
    mas = new int*[rows];
 
    for(i=0; j<rows; i++){
        mas[i] = new int[cols];
        for(j=0; j<cols; j++){
            mas[i][j]=0;
        }
    }
}
 
 
void Matrix::Middle(int rows){
    this->rows = rows;
    for(i = 0; i < cols; i++)
        max += mas[0][i];
    for(i = 1; i < rows; i++){
        tmp = 0;
        for(j = 0; j< cols; j++)
            tmp = mas[i][j];
        if(tmp > max){
            max = tmp;
            nj = j;
        }
    }
    max/=cols;
}
 
 
void Matrix::Fill(){
 
    for(i = 0; i < rows; i++){
        for(j = 0; j < cols; j++){
            mas[i][j] = (int)rand();
        }
        Middle(i);
    }
    return;
}
 
void Matrix::Display(){
    cout<<endl<<"Matrix"<<endl;
    for(i = 0; i < rows; i++){
        printf("Строка:%i> ", i+1);
        for(j = 0; j < cols; j++){
            printf("%d ", mas[i][j]);
        }
    }
    cout<<max<<endl;
    cout<<nj<<endl;
    return;
}
matrix.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
 
class Matrix{
private:
    int i, j;
    int rows;
    int cols;
    int nj;
    int **mas;
    int max;
    int tmp;
public:
    Matrix(int rows, int cols);
    void Fill();
    void Middle(int rows);
    void Display();
};
main.cpp
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
//создать класс, для представления и обработки данных по заданию.
//обработка эл прямоугольной матрицы MxN
//найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки.
 
#include <iostream>
#include "matrix.h"
 
using namespace std;
 
void main(){
 
    setlocale(0,"");
 
    int rows, cols;
    //Вводим строки и столбцы
    cout<<"Количество строк: ";
    cin>>rows;
    cout<<"Количество столбцов: ";
    cin>>cols;
 
    Matrix Matrix(rows, cols);//Передаем данные
    Matrix.Fill();//Находим максимальное значение среди средних значений для каждой строки матрицы
    Matrix.Display();//Отображаем
 
    system("pause");
}
Добавлено через 2 часа 7 минут
Некоторая замена
matrix.h
C++
1
int nj;
на
C++
1
int ni;
matrix.cpp
C++
1
nj = j;
на
C++
1
ni++;
и
C++
1
cout<<nj<<endl;
на
C++
1
cout<<ni<<endl;
Заметил, что оно тупо не хочет выводить матрицу
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2014, 16:52     Матрица m x n. Найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки
Посмотрите здесь:

C++ Вычисление средних значений положительных элементов каждой строки матриц
Для каждой матрицы вычислить сумму элементов строк и определить наименьшее значение этих сумм и номер соответствующей строки C++
От значений элементов каждой строки двумерного массива вычесть значение минимального элемента этой строки C++
умножить элемент каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы C++
Найти наибольшее среди средних арифметических значений строк матрицы C++
C++ .Упорядочить строки матрицы по убыванию значений произведений наименьшего и наибольшего элементов каждой строки
C++ Для каждой строки матрицы найти номер первого по порядку четного числа и получить одномерный массив этих номеров
C++ Найти сумму модулей элементов для каждой строки матрицы и среди них наибольший

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4925 / 2668 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
12.01.2014, 17:25     Матрица m x n. Найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки #2
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
#include <cstdlib>
#include <ctime>
#include <iomanip>
#include <iostream>
 
int main()
{
    int M, N;            // размеры матрицы
    int **A;             // сама матрица
    double maxAve;       // максимальное среднее значение
    int indexMaxAve = 0; // индекс строки с максимальным средним значением
    std::cout << "Enter M: ";
    std::cin >> M;
    std::cout << "Enter N: ";
    std::cin >> N;
 
    std::srand(time(0)); // инициализируем ГПСЧ
    // выделяем память, заполняем случайными числами и выводим на экран
    A = new int*[M];
    for (int i=0; i < M; i++)
    {
        A[i] = new int[N];
        double sum = 0;
        for (int j=0; j < N; j++)
        {
            A[i][j] = rand() % 100;
            std::cout << std::setw(2) << A[i][j] << " ";
            sum += A[i][j];
        }
        std::cout << std::endl;
        // подсчет среднего, сравнение с текущим максимальным знаением среднего
        double ave = sum / N;
        if (i == 0)
            maxAve = ave;
        else if (maxAve < ave)
        {
            maxAve = ave;
            indexMaxAve = i;
        }
        // фактически память больше не нужна - освобождаем её
        delete[] A[i];
    }
    delete[] A;
 
    std::cout << "\nNumber of line with max ave: " << indexMaxAve + 1
              << " with " << maxAve << std::endl;
}
по классам сами разобьете
Yandex
Объявления
12.01.2014, 17:25     Матрица m x n. Найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки
Ответ Создать тему
Опции темы

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