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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.65
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
#1

Найти сумму, разность, произведение элементов матрицы - C++

07.09.2009, 07:33. Просмотров 3849. Ответов 20
Метки нет (Все метки)

найти сумму, разность, произведение элементов двумерного массива с применением процедур и функций.


помогите плиз!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2009, 07:33     Найти сумму, разность, произведение элементов матрицы
Посмотрите здесь:

Найти сумму, разность, произведение и частное от деления первого числа на второе C++
Найти сумму и произведение элементов k-го столбца матрицы C++
C++ Найти сумму и произведение элементов k-го столбца данной матрицы
C++ Найти произведение нечетных элементов каждой строки матрицы, и их сумму
C++ Найти сумму и произведение элементов k-ого столбца матрицы
Дана матрица А (4,4) найти сумму нечетных элементов матрицы и произведение элементов находящихся на главной диагонали C++
Найти сумму нечетных элементов 3 столбца и произведение отрицательных кратных 3 элементов 2-ой строки матрицы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.09.2009, 09:05     Найти сумму, разность, произведение элементов матрицы #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
48
49
50
51
52
53
54
55
56
57
#include <iostream>
 
int Sum(int** matr, int n, int m);
int Razn(int** matr, int n, int m);
int Mult(int** matr, int n, int m);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, m, i, j;
    std::cout<<"Введите количество строк:\n> ",std::cin>>n;
    std::cout<<"Введите количество столбцов:\n> ",std::cin>>m;
 
    int **mas = new int*[n];
    for(i = 0; i < n; ++i)
        mas[i] = new int[m];
 
    std::cout<<"Введите матрицу:\n";
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            std::cin>>mas[i][j];
 
    std::cout<<"Введенный массив:\n";
    for(i = 0; i < n; ++i, std::cout<<'\n')
        for(j = 0; j < m; ++j)
            std::cout<<mas[i][j]<<' ';
 
    std::cout<<"Сумма:\n< "<<Sum(mas, n, m)<<std::endl;
    std::cout<<"Разность:\n< "<<Razn(mas, n, m)<<std::endl;
    std::cout<<"Произведение:\n< "<<Mult(mas, n, m)<<std::endl;
    system("pause");
    return 0;
}
 
int Sum(int** matr, int n, int m)
{
    int sum(0), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            sum += matr[i][j];
    return sum;
}
int Razn(int** matr, int n, int m)
{
    int razn(0), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            razn -= matr[i][j];
    return razn;
}
int Mult(int** matr, int n, int m)
{
    int mult(1), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            mult *= matr[i][j];
    return mult;
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 09:24  [ТС]     Найти сумму, разность, произведение элементов матрицы #3
в задаче не уточнялось, но этот код пойдёт, я понял. и как сделать чтобы разность рассчитывалась как сумма и произведение всех элементов, а не по строчно?

ещё вопрос, в чём отличия процедуры от функции?в том что, функция возвращает результат?
хотелось бы увидить пример процедуры и функции для наилучшего понимания
0xAX
2446 / 356 / 7
Регистрация: 27.06.2009
Сообщений: 880
07.09.2009, 09:27     Найти сумму, разность, произведение элементов матрицы #4
Насколько мне изветсно в C++ не существует процедур, есть лишь функциии с типом void которые ничего не возвращают.
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.09.2009, 09:40     Найти сумму, разность, произведение элементов матрицы #5
Цитата Сообщение от tron Посмотреть сообщение
как сделать чтобы разность рассчитывалась как сумма и произведение всех элементов, а не по строчно
В смысле? там все одинаково считается, только знаки разные и все
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 09:53  [ТС]     Найти сумму, разность, произведение элементов матрицы #6
ну например массив

5 2 3
4 4 5

сумма расчитывается (5+2+3) + (4+4+5) = 23
разность рассчиитыв (5+2+3) - (4+4+5) = - 23
произведение рассчитыв 5*2*3*4*4*5 = 2400

ну вот как сделать чтобы разность вот так рассчитывалась 5-2-3 - 4 -4 - 5 = -13
mamedovvms
2916 / 837 / 93
Регистрация: 30.04.2009
Сообщений: 2,624
07.09.2009, 10:02     Найти сумму, разность, произведение элементов матрицы #7
Цитата Сообщение от tron Посмотреть сообщение
ну вот как сделать чтобы разность вот так рассчитывалась 5-2-3 - 4 -4 - 5 = -13
если я не ошибаюсь то разность та которую ты нам показываешь будет равна
sum-2*a[1]
kirill29
2051 / 1214 / 55
Регистрация: 01.02.2009
Сообщений: 2,842
07.09.2009, 10:14     Найти сумму, разность, произведение элементов матрицы #8
Цитата Сообщение от tron Посмотреть сообщение
ну вот как сделать чтобы разность вот так рассчитывалась 5-2-3 - 4 -4 - 5 = -13
ИМХО в таком случае в коде, который предоставил M128K145, необходимо приравнять переменной razn двойное значение первого элемента массива.

PS: в с++ не силен, но думаю так.
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.09.2009, 10:31     Найти сумму, разность, произведение элементов матрицы #9
tron,
так
C++
1
2
3
4
5
6
7
8
9
10
11
int Razn(int** matr, int n, int m)
{
    int razn(0), i, j;
    int *mas = new int[n];
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            mas[i] += matr[i][j];
    for(i = 1; i < n; ++i)
        mas[0]-=mas[i];
    return mas[0];
}


Цитата Сообщение от Джоник Посмотреть сообщение
3. Написать функцию заполнения начала строки каким-то символом.
что понимается под началом строки? N первых символов, первый символ, пробелы в начале строки. Что именно?
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 10:45  [ТС]     Найти сумму, разность, произведение элементов матрицы #10
нет не получается, неправильно считает разность
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.09.2009, 11:02     Найти сумму, разность, произведение элементов матрицы #11
tron, в смысле надо
так?
C++
1
2
3
4
5
6
7
8
int Razn(int** matr, int n, int m)
{
    int razn(2 * matr[0][0]), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            razn -= matr[i][j];
    return razn;
}
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 11:07  [ТС]     Найти сумму, разность, произведение элементов матрицы #12
всё гуд заработало, спс большое M128K145.

а насчёт процедур и функций, процедур правда в c++ нет?
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
07.09.2009, 11:28     Найти сумму, разность, произведение элементов матрицы #13
tron, вот тебе
полный код
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
#include <iostream>
 
int Sum(int**, int, int);
int Razn(int**, int, int);
int Mult(int**, int, int);
void Print(int**, int, int);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, m, i, j;
    std::cout<<"Введите количество строк:\n> ",std::cin>>n;
    std::cout<<"Введите количество столбцов:\n> ",std::cin>>m;
 
    int **mas = new int*[n];
    for(i = 0; i < n; ++i)
        mas[i] = new int[m];
 
    std::cout<<"Введите матрицу:\n";
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            std::cin>>mas[i][j];
 
    Print(mas, n, m);
    std::cout<<"Сумма:\n< "<<Sum(mas, n, m)<<std::endl;
    std::cout<<"Разность:\n< "<<Razn(mas, n, m)<<std::endl;
    std::cout<<"Произведение:\n< "<<Mult(mas, n, m)<<std::endl;
 
    for(i = 0; i < n; ++i)
        delete []mas[i];
    delete []mas; 
    system("pause");
    return 0;
}
 
void Print(int** matr, int n, int m)
{
    int i, j;
    std::cout<<"Введенный массив:\n";
    for(i = 0; i < n; ++i, std::cout<<'\n')
        for(j = 0; j < m; ++j)
            std::cout<<matr[i][j]<<' ';
}
int Sum(int** matr, int n, int m)
{
    int sum(0), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            sum += matr[i][j];
    return sum;
}
int Razn(int** matr, int n, int m)
{
    int razn(2 * matr[0][0]), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            razn -= matr[i][j];
    return razn;
}
int Mult(int** matr, int n, int m)
{
    int mult(1), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            mult *= matr[i][j];
    return mult;
}
с функциями и процедурами. Sum, Razn, Mult - функции. Print - это процедура. Процедура - это функция, которая ничего не возвращает, т.е. void
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
13.09.2009, 11:36  [ТС]     Найти сумму, разность, произведение элементов матрицы #14
C++
1
2
3
4
5
6
7
8
9
randomize;
for (i=0;i<n;++i)
     { for (j=0;j<m;++j)
 
     {
 
         mas[i][j]=random(10);
      cout<<mas[i][j]<<"  ";
}
как сделать чтобы выводились числа от 1 до 10, по этому коду выводятся в массив от 0 до 10
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
13.09.2009, 11:47     Найти сумму, разность, произведение элементов матрицы #15
Если Вам нужна именно такая разность как Вы описали, то функцию Razn() нужно описать так:
C++
1
2
3
4
5
6
7
8
9
int Razn(int** matr, int n, int m)
{
        int razn=matr[0][0]*2;
        int i, j;
        for(i = 0; i < n; ++i)
                for(j = 0; j < m; ++j)
                        razn -= matr[i][j];
        return razn;
}
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
13.09.2009, 11:59  [ТС]     Найти сумму, разность, произведение элементов матрицы #16
с разностью разобрались
easybudda
Эксперт С++
9439 / 5462 / 925
Регистрация: 25.07.2009
Сообщений: 10,481
13.09.2009, 18:08     Найти сумму, разность, произведение элементов матрицы #17
Цитата Сообщение от tron Посмотреть сообщение
как сделать чтобы выводились числа от 1 до 10, по этому коду выводятся в массив от 0 до 10
C++
1
mas[i][j]=random(9) + 1;
так не получится?
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
14.09.2009, 05:43  [ТС]     Найти сумму, разность, произведение элементов матрицы #18
сделал так
C++
1
 mas[i][j]=rand()%9+1
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
15.09.2009, 15:20  [ТС]     Найти сумму, разность, произведение элементов матрицы #19
Цитата Сообщение от M128K145 Посмотреть сообщение
tron, вот тебе
полный код
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
#include <iostream>
 
int Sum(int**, int, int);
int Razn(int**, int, int);
int Mult(int**, int, int);
void Print(int**, int, int);
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int n, m, i, j;
    std::cout<<"Введите количество строк:\n> ",std::cin>>n;
    std::cout<<"Введите количество столбцов:\n> ",std::cin>>m;
 
    int **mas = new int*[n];
    for(i = 0; i < n; ++i)
        mas[i] = new int[m];
 
    std::cout<<"Введите матрицу:\n";
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            std::cin>>mas[i][j];
 
    Print(mas, n, m);
    std::cout<<"Сумма:\n< "<<Sum(mas, n, m)<<std::endl;
    std::cout<<"Разность:\n< "<<Razn(mas, n, m)<<std::endl;
    std::cout<<"Произведение:\n< "<<Mult(mas, n, m)<<std::endl;
 
    for(i = 0; i < n; ++i)
        delete []mas[i];
    delete []mas; 
    system("pause");
    return 0;
}
 
void Print(int** matr, int n, int m)
{
    int i, j;
    std::cout<<"Введенный массив:\n";
    for(i = 0; i < n; ++i, std::cout<<'\n')
        for(j = 0; j < m; ++j)
            std::cout<<matr[i][j]<<' ';
}
int Sum(int** matr, int n, int m)
{
    int sum(0), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            sum += matr[i][j];
    return sum;
}
int Razn(int** matr, int n, int m)
{
    int razn(2 * matr[0][0]), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            razn -= matr[i][j];
    return razn;
}
int Mult(int** matr, int n, int m)
{
    int mult(1), i, j;
    for(i = 0; i < n; ++i)
        for(j = 0; j < m; ++j)
            mult *= matr[i][j];
    return mult;
}
с функциями и процедурами. Sum, Razn, Mult - функции. Print - это процедура. Процедура - это функция, которая ничего не возвращает, т.е. void


проставь пожалуйста комменты, где что делаем и для чего
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2009, 15:45     Найти сумму, разность, произведение элементов матрицы
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
M128K145
Эксперт С++
8282 / 3501 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
15.09.2009, 15:45     Найти сумму, разность, произведение элементов матрицы #20
Сообщение было отмечено автором темы, экспертом или модератором как ответ
вот
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
#include <iostream>
 
//описываем прототипы наших функций
int Sum(int**, int, int);
int Razn(int**, int, int);
int Mult(int**, int, int);
void Print(int**, int, int);
 
int main()
{
        setlocale(LC_ALL, "Russian");//делаем русскую локализацию
        int n, m, i, j;//обьявляем переменные размеров и индексов
        std::cout<<"Введите количество строк:\n> ",std::cin>>n;//ввод n
        std::cout<<"Введите количество столбцов:\n> ",std::cin>>m;//ввод m
 
        int **mas = new int*[n];//динамически выделяем массив указателей на n массивов
        for(i = 0; i < n; ++i)
                mas[i] = new int[m];//выделяем память под n новых 
                //массивов размерностью m
 
        //вводим матрицу
        std::cout<<"Введите матрицу:\n";
        for(i = 0; i < n; ++i)
                for(j = 0; j < m; ++j)
                        std::cin>>mas[i][j];
 
        Print(mas, n, m);//вызываем функцию(процедуру), которая выводит нашу матрицу, 
        //параметры - указатекь на матрицу, количество строк и столбцов
        std::cout<<"Сумма:\n< "<<Sum(mas, n, m)<<std::endl;
        //вывод суммы с вызовом функции Sum. параметры те же что и у Print
        std::cout<<"Разность:\n< "<<Razn(mas, n, m)<<std::endl;
        //вывод разности с вызовом функции Razn. параметры те же что и у Print
        std::cout<<"Произведение:\n< "<<Mult(mas, n, m)<<std::endl;
        //вывод произведения с вызовом функции Mult. параметры те же что и у Print
        for(i = 0; i < n; ++i)
                delete []mas[i];//сбрасываем всю память выделенную под наши массивы
        delete []mas; //сбрасываем память выделенную под массив указателей
        system("pause");//задержка экрана
        return 0;//возврат значения, что программа выполнена успешно
}
 
void Print(int** matr, int n, int m)
{
        int i, j;//обьявляем индексы
        std::cout<<"Введенный массив:\n";
        for(i = 0; i < n; ++i, std::cout<<'\n')
                for(j = 0; j < m; ++j)
                        std::cout<<matr[i][j]<<' ';//выводим матрицу поэлементно
}
int Sum(int** matr, int n, int m)
{
        int sum(0), i, j;//обьявляем индексы и задаем переменной, в которую будем
        //считать сумму, значение 0
        for(i = 0; i < n; ++i)
                for(j = 0; j < m; ++j)
                        sum += matr[i][j];//считаем сумму
        return sum;//возвращаем значение
}
int Razn(int** matr, int n, int m)
{
        int razn(2 * matr[0][0]), i, j;//обьявляем индексы и задаем переменной, 
        //в которую будем считать разницу, удвоенное значение первого элемента
        for(i = 0; i < n; ++i)
                for(j = 0; j < m; ++j)
                        razn -= matr[i][j];//считаем разницу
        return razn;//возвращаем ее значение
}
int Mult(int** matr, int n, int m)
{
        int mult(1), i, j;//обьявляем индексы и задаем переменной, в которую будем
        //считать произведение, значение 1
        for(i = 0; i < n; ++i)
                for(j = 0; j < m; ++j)
                        mult *= matr[i][j];//считаем произведение
        return mult;//возвращаем его значение
}
Yandex
Объявления
15.09.2009, 15:45     Найти сумму, разность, произведение элементов матрицы
Ответ Создать тему
Опции темы

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