Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.65/26: Рейтинг темы: голосов - 26, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
1

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

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

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


помогите плиз!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.09.2009, 07:33
Ответы с готовыми решениями:

Найти произведение и сумму четных элементов массива, разность произведения и суммы
Ввести массив А(N). Найти произведение и сумму четных элементов массива, разность произведения и...

Найти сумму элементов на главной и произведение элементов на побочной диагонали матрицы
Помогите срочно нужно. Ввести квадратную матрицу 5 х 5. Найти сумму элементов на главной диагонали...

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

Найти сумму нечетных элементов 3 столбца и произведение отрицательных кратных 3 элементов 2-ой строки матрицы
Найти сумму нечетных элементов 3-го столбца и произведение отрицательных кратных 3 элементов 2-ой...

20
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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;
0
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 09:24  [ТС] 3
в задаче не уточнялось, но этот код пойдёт, я понял. и как сделать чтобы разность рассчитывалась как сумма и произведение всех элементов, а не по строчно?

ещё вопрос, в чём отличия процедуры от функции?в том что, функция возвращает результат?
хотелось бы увидить пример процедуры и функции для наилучшего понимания
0
2448 / 359 / 8
Регистрация: 27.06.2009
Сообщений: 880
07.09.2009, 09:27 4
Насколько мне изветсно в C++ не существует процедур, есть лишь функциии с типом void которые ничего не возвращают.
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
07.09.2009, 09:40 5
Цитата Сообщение от tron Посмотреть сообщение
как сделать чтобы разность рассчитывалась как сумма и произведение всех элементов, а не по строчно
В смысле? там все одинаково считается, только знаки разные и все
0
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
0
2920 / 841 / 324
Регистрация: 30.04.2009
Сообщений: 2,633
07.09.2009, 10:02 7
Цитата Сообщение от tron Посмотреть сообщение
ну вот как сделать чтобы разность вот так рассчитывалась 5-2-3 - 4 -4 - 5 = -13
если я не ошибаюсь то разность та которую ты нам показываешь будет равна
sum-2*a[1]
0
2086 / 1250 / 170
Регистрация: 01.02.2009
Сообщений: 2,842
07.09.2009, 10:14 8
Цитата Сообщение от tron Посмотреть сообщение
ну вот как сделать чтобы разность вот так рассчитывалась 5-2-3 - 4 -4 - 5 = -13
ИМХО в таком случае в коде, который предоставил M128K145, необходимо приравнять переменной razn двойное значение первого элемента массива.

PS: в с++ не силен, но думаю так.
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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 первых символов, первый символ, пробелы в начале строки. Что именно?
0
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 10:45  [ТС] 10
нет не получается, неправильно считает разность
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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;
}
1
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 11:07  [ТС] 12
всё гуд заработало, спс большое M128K145.

а насчёт процедур и функций, процедур правда в c++ нет?
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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
1
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
0
Эксперт С++
4705 / 2530 / 753
Регистрация: 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;
}
0
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
13.09.2009, 11:59  [ТС] 16
с разностью разобрались
0
Модератор
Эксперт JavaЭксперт CЭксперт С++
10808 / 6559 / 1611
Регистрация: 25.07.2009
Сообщений: 12,337
13.09.2009, 18:08 17
Цитата Сообщение от tron Посмотреть сообщение
как сделать чтобы выводились числа от 1 до 10, по этому коду выводятся в массив от 0 до 10
C++
1
mas[i][j]=random(9) + 1;
так не получится?
0
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
14.09.2009, 05:43  [ТС] 18
сделал так
C++
1
 mas[i][j]=rand()%9+1
0
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


проставь пожалуйста комменты, где что делаем и для чего
0
Эксперт JavaЭксперт С++
8357 / 3578 / 419
Регистрация: 03.07.2009
Сообщений: 10,708
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;//возвращаем его значение
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.09.2009, 15:45

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти сумму и произведение элементов матрицы, кратных 3 и 5
Дан целочисленный двумерный массив,размерности n x m . Найти сумму и произведение элементов,кратных...

Найти сумму и произведение элементов k-го столбца матрицы
Написал программу по заданию, хочу узнать правильно ли она? У меня пока компилятор не работает,...

Найти сумму и произведение элементов K-го столбца матрицы
Данная матрица размера M × N и целое число K (1 ≤ K ≤ N). Найти сумму и произведение элементов...

Дана матрица А (4,4) найти сумму нечетных элементов матрицы и произведение элементов находящихся на главной диагонали
Дана матрица А (4,4) найти сумму нечетных элементов матрицы и произведение элементов находящихся на...


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

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

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