Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
IntM
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 9
#1

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

12.01.2014, 16:52. Просмотров 438. Ответов 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;
Заметил, что оно тупо не хочет выводить матрицу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.01.2014, 16:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Матрица m x n. Найти макс значение среди средних значений для каждой строки матрицы. Вернуть номер строки (C++):

Найти среднее арифметическое каждой строки заданной матрицы, а среди найденых значений найти наибольшее - C++
Дана программа, в которой через внешний файл задан массив a и идёт подсчет среднего арифметического каждой строки. Требуется доделать...

Найти среднее значение из максимальных значений каждой строки заданной матрицы - C++
Помогите с задачей: Необходимо найти среднее значение из максимальных значений (элементов) строк матрицы, размером NxM. ...

Определить для каждой строки матрицы произведение элементов, и среди них найти максимум - C++
Дан двумерный массив из 5 строк и 6 столбцов. Определить для каждой строки массива произведение элементов. Найти, в какой строке это...

Найти сумму модулей элементов для каждой строки матрицы и среди них наибольший - C++
Помогите пожалуйста Предоставленная матрица размером n * n . Найти сумму модулей элементов для каждой строки матрицы и найти среди них...

Для каждой строки матрицы определить минимальный элемент, среди которых найти максимальный - C++
Задание: Дан двумерный массив из 5 строк и 6 столбцов. Определить для каждой строки минимальный элемент. Среди этих элементов найти...

Для каждой матрицы вычислить сумму элементов строк и определить наименьшее значение этих сумм и номер соответствующей строки - C++
Даны матрицы А(4,5) и В(5,5). Для каждой матрицы вычислить сумму элементов строк и определить наименьшее значение этих сумм и номер...

1
MrGluck
Модератор
Эксперт CЭксперт С++
7491 / 4606 / 692
Регистрация: 29.11.2010
Сообщений: 12,596
12.01.2014, 17:25 #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;
}
по классам сами разобьете
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.01.2014, 17:25
Привет! Вот еще темы с ответами:

Для каждой строки матрицы найти номер первого отрицательного элемента, и записать данные в новый массив - C++
Дан массив размером n*n, элементы которого целые числа. Для каждой строки найти номер первого отрицательного элемента и записать данные...

Для каждой строки матрицы найти номер первого по порядку четного числа и получить одномерный массив этих номеров - C++
для каждой строки матрицы найти номер первого по порядку четного числа и получить одномерный массив этих номеров. количество элементов...

Вычисление средних значений положительных элементов каждой строки матриц - C++
Помогите, пожалуйста, составить поцедуру. Вот задачка: Составбте программу для вычисления средних значений положительных элементов...

умножить элемент каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы - C++
Даны две действительные квадратные матрици порядка n. Получить новую матрицу: умножением элементов каждой строки первой матрици на...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru