Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 19.09.2020
Сообщений: 14
1

Нужно содействие в редактировании программы

25.11.2020, 10:46. Показов 1068. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Прошу помочь дополнить программу!

Задача: найти наибольшую сумму элементов строки и поделить на нее матрицу. В программе должна присутствовать минимум одна функция.

Проблема в том, что наибольшая сумма строк вычисляется неправильно.
Функции delenie и summa не вызывались, пока я не добавила аргумент int и не передавала его нулём.

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
#include <iostream>
using namespace std;
 
int i, j, N, M;
double sum[50], a[20][20];
double summax = -1000;
 
void delenie(int)
{
    setlocale(LC_ALL, "RUS");
    for (i = 0; i < N; i++) //деление элементов матрицы на саксимальную сумму
        for (j = 0; j < M; j++)
            a[i][j]=a[i][j] / summax;
    cout << "Измененная матрица: \n";
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
            cout << a[i][j] << "\t";
        cout << endl;
    }
}
 
void summa_stroki(int)
{
    setlocale(LC_ALL, "RUS");
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)
        {
            sum[i] = a[i][j];
            if (sum[i] > summax) summax = sum[i];
        }
        cout << "Сумма " << i+1 << " строки: " << sum[j] << endl;
    }
    cout << "Наибольшая сумма строки: " << summax << endl;
}
 
void main()
{
    setlocale(LC_ALL, "RUS");
    cout << "Кол-во строк: "; 
    cin >> N;
    cout << "Кол-во столбцов: "; 
    cin >> M;
    cout << "Введите " << N*M << " элементов матрицы: \n";
    //цикл по переменной i, в которой перебираем строки матрицы
    for (i = 0; i < N; i++) //ввод элементов матрицы
        for (j = 0; j < M; j++)
            cin >> a[i][j]; 
    cout << "Полученная матрица: \n";
    for (i = 0; i < N; i++)
    {//цикл по переменной i, в котором перебираем строки матрицы
        for (j = 0; j < M; j++)
            cout << a[i][j] << "\t"; //вывод очередного элемента матрицы
        cout << endl;
    }
    summa_stroki(0);
    delenie(0);
 
    for (int i = 0; i < N; i++)//очистка памяти
    {
        delete[i] a;
        for (int j = 0; j < M; j++)
        {
            delete[j] a; 
        }
    }
    delete[]a;
 
    for (int i = 0; i < N; i++)//очистка памяти
    {
        delete[i] sum;
    }
    delete[]sum;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2020, 10:46
Ответы с готовыми решениями:

Нужно Содействие
Нужно содейство в написании игры &quot;Пятнашки&quot; C++ Builder 6(желательно с подробным обьяснением). Буду...

нужно содействие!
кто может , пож-та, поконсультировать on-line по программе на Qt, например, вечером в аське или...

Нужно содействие в написании программы на JS, точнее в доработке задания с учетом замечаний преподавателя
Задание: Написать функцию, которая выдает среднее значение элементов прозвольной матрицы. Я...

Нужно Ваше содействие
Доброго времени суток. Помогите решить задания в паскале,я гуманитарий и в этом не особо...

3
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
25.11.2020, 11:37 2
Лучший ответ Сообщение было отмечено Julia_Rzhueva как решение

Решение

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
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
void Random (double **a, int N, int M)
{
    for (int i = 0; i < N; i++)
        for (int j = 0; j < M; j++)
        a[i][j]=rand()%9 + 1;
} 
 
double MaxSumRow (double** a, int N, int M)
{    
    double sum, max=0.;
    for (int i = 0; i < N; i++)
    {
        sum=0;
        for (int j = 0; j < M; j++)        
            sum+=a[i][j];
            if (i==0 || sum > max) max=sum;                
    }
    return max;
}
 
void Division (double** a, int N, int M)
{
    double d=MaxSumRow(a,N,M), eps=1e-9;
    for (int i = 0; i < N; i++) 
        for (int j = 0; j < M; j++)
            if (d<-eps || d>eps) a[i][j]=a[i][j]/d;    
}
 
void Print (double **a, int N, int M)
{
    for (int i = 0; i < N; i++)
    {
        for (int j = 0; j < M; j++)       
        cout << a[i][j] << " ";        
    cout << "\n";
    }
} 
 
int main()
{
    srand((int)time(0));
    int N, M;
    cout << "N="; cin >> N;
    cout << "M="; cin >> M;
    
    double **a = new double*[N]; 
    for (int i = 0; i < N; i++)
      a[i]=new double[M];
    
    Random(a,N,M);
    Print(a,N,M);
    cout << "max sum=" << MaxSumRow(a,N,M) << "\n";
    Division(a,N,M);
    Print(a,N,M);
    
    for (int i = 0; i < N; i++)
    delete[]a[i];
    delete[]a;
system("pause");
return 0;
}
1
0 / 0 / 0
Регистрация: 19.09.2020
Сообщений: 14
25.11.2020, 13:49  [ТС] 3
Возможна реализация программы более простым языком и без подключения библиотеки ctime?
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
25.11.2020, 14:18 4
Цитата Сообщение от Julia_Rzhueva Посмотреть сообщение
Возможна реализация программы более простым языком
Вам показалось, что программа сложная, сложного там ничего нет, даже проще чем у Вас, без дополнительного массива. функции нужны по условию. динамический массив применяется при вводе размера с клавиатуры.
Цитата Сообщение от Julia_Rzhueva Посмотреть сообщение
Возможна реализация... без подключения библиотеки ctime
да. если хотите заполнять массив с клавиатуры, замените строку 10 на cin >> a[i][j];
0
25.11.2020, 14:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2020, 14:18
Помогаю со студенческими работами здесь

Нужно содействие, платежные системы
Нужна помощь в подключении платежных систем, на сайт. Сроки поджимают !!!

Нужно содействие по созданию бота
Всем привет. Я чайник в python'e(в прямом смысле слова). Как автоматизировать процесс в Coin Math...

Нужно содействие в покупке дополнений к видеокурсу
Хочу заиметь листинги исходного кода к видеокурсам Олега Молчанова:...

Мне нужно содействие в борьбе с вирусом
Доброе утро, уважаемые форумчане. Компьютер поразил вирус. AVG с ним не справился. Утилиты от...

Нужно содействие с решением задачи, пожалуйста
На картинке задача. Вроде бы все сделал, но при вычислении данные не совпадают. Подскажите в чем...

прошу оказать содействие в создании программы
Здравствуйте, форумчане! я сразу извиняюсь за свою тему: прекрасно понимаю, что, наверное, на 500...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru