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

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

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

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

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

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


помогите плиз!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2009, 07:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти сумму, разность, произведение элементов матрицы (C++):

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

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

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

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

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

Найти сумму и произведение элементов k-го столбца данной матрицы - C++
2) И второй вопрос. Необходимо решить задачу. Также для Borland 5.02. Условие задачи: Дано число k (0 < k < 11) и матрица размера 4 x...

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

ещё вопрос, в чём отличия процедуры от функции?в том что, функция возвращает результат?
хотелось бы увидить пример процедуры и функции для наилучшего понимания
0
0xAX
2446 / 357 / 7
Регистрация: 27.06.2009
Сообщений: 880
07.09.2009, 09:27 #4
Насколько мне изветсно в C++ не существует процедур, есть лишь функциии с типом void которые ничего не возвращают.
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.09.2009, 09:40 #5
Цитата Сообщение от tron Посмотреть сообщение
как сделать чтобы разность рассчитывалась как сумма и произведение всех элементов, а не по строчно
В смысле? там все одинаково считается, только знаки разные и все
0
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
0
mamedovvms
2917 / 838 / 93
Регистрация: 30.04.2009
Сообщений: 2,627
07.09.2009, 10:02 #7
Цитата Сообщение от tron Посмотреть сообщение
ну вот как сделать чтобы разность вот так рассчитывалась 5-2-3 - 4 -4 - 5 = -13
если я не ошибаюсь то разность та которую ты нам показываешь будет равна
sum-2*a[1]
0
kirill29
2053 / 1216 / 55
Регистрация: 01.02.2009
Сообщений: 2,842
07.09.2009, 10:14 #8
Цитата Сообщение от tron Посмотреть сообщение
ну вот как сделать чтобы разность вот так рассчитывалась 5-2-3 - 4 -4 - 5 = -13
ИМХО в таком случае в коде, который предоставил M128K145, необходимо приравнять переменной razn двойное значение первого элемента массива.

PS: в с++ не силен, но думаю так.
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 10:45  [ТС] #10
нет не получается, неправильно считает разность
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
tron
0 / 0 / 0
Регистрация: 07.09.2009
Сообщений: 14
07.09.2009, 11:07  [ТС] #12
всё гуд заработало, спс большое M128K145.

а насчёт процедур и функций, процедур правда в c++ нет?
0
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
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
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
0
valeriikozlov
Эксперт С++
4673 / 2499 / 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;
}
0
13.09.2009, 11:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2009, 11:47
Привет! Вот еще темы с ответами:

Найти сумму и произведение элементов k-го столбца данной матрицы - C++
Дано число k (0 &lt; k &lt; 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.

Найти сумму и произведение элементов k-го столбца данной матрицы - C++
Дано число k (0 &lt; k &lt; 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы. Спасибо...

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

Найти сумму и произведение элементов k-ого столбца матрицы - C++
Дана матрица m*n и целое число k (1&lt;=k&lt;=m) найти сумму и произведение элементов k-ого столбца данной матрицы


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

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

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