Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
#1

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

29.05.2010, 18:40. Просмотров 1769. Ответов 35
Метки нет (Все метки)

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

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

Упорядочить строки матрицы по неубыванию суммы элементов каждой строки
17.22. Дан двумерный массив. Разместить его строки так, чтобы при их просмотре...

Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы больше суммы (i-1)-й строки
Дана квадратная матрица натуральных чисел, (получаемая через rand())....

Определить, верно ли утверждение: сумма элементов каждой i-ой строки матрицы больше суммы (i-1)-ой строки
1. Дана квадратная матрица натуральных чисел, (получаемая через rand())....

Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы меньше суммы (i-1)-й строки
Дана квадратная матрица натуральных чисел, (получаемая через rand())....

Вычислить суммы элементов каждой строки матрицы
как сделать, чтобы выводило номер строки матрицы, и возле него сумму...

35
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 18:48 #2
И в чем у вас загвоздка?
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 18:58  [ТС] #3
Помогите , как это сделать
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:00 #4
Помогите, а вы сами то пытались?
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 19:03  [ТС] #5
Да питался
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:09 #6
Алгоритм таков:

1) У нас имеется заполненый двумерный массив, размером Row на Column. Создаем одномерный массив, размером Row (в котором будут хранится сумма элементов каждой строки). Дак вот, циклом считаем сумму и записываем в соответствующую ячейку результат.
2) А тут я вообще не вижу проблем. Проверяем первый элемент строки, если больше нулю, заменяем все последующие элементы, иначе переходим к следующей строке.
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 19:21  [ТС] #7
А можно на языке С пожалуйста
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:23 #8
Я вам рассказал алгоритм решения.
Что у вас не получается?)
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 19:29  [ТС] #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
int mat[10][10]={           {  10, 20, 30, 40, 50, 60, 70, 80,  90, -200},
                    { -10,-20,-30,-40,-50,-60,-70,-80, -90,-100},
                    {   6,  1,  2,  3,  4,  5,  6,  7,   8,   9},
                    {-345, 66, 57, 98, 69, 13, 22, 16,  76,  89},
                    { -66, 76, 45, 32, 76,867, 67,677,  68,   9},
                    {  45, 54, 65, 56, 78, 98, 10, -9,  55,  43},
                    {  16, 13,-20,-80, 44, 55, 66, 77,  88,  99},
                    {   0, -1, -2, -3, -4, -5, -6, -7,  -8,  -9},
                    {  12, 98, 10, 20, 30,-30,-50,-80,-777, -32},
                    {  13, 14, 15, 16, 17, 18, 19, 20,  11,  12}
                };
 
 
int main (int argc, char*argv[])
{
    // цикл как написать ?
}
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 19:31 #10
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

1)
C++
1
2
3
4
5
6
7
8
int MAS_sum[Row];
int sum=0;
 
for (int i=0; i<Row; i++) {
    sum=0;
    for (int j=0; j<Column; j++)
        sum+=MAS[i][j];
    MAS_sum[i]=sum; }
2)
C++
1
2
3
4
for (int i=0; i<Row; i++) 
    if (MAS[i][0]>0)
        for (int j=0; j<Column; j++)
        MAS[i][j]=MAS[i][0];
Отличные у вас попытки.
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:02  [ТС] #11
ничего не получается

Добавлено через 2 минуты
sum всегда равно 155
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 20:13 #12
Покажите ваш вариант программы.
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:20  [ТС] #13
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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <locale.h>
const int  Row=10,Column=10;
char mat[Row][Column]={         {  1, 1, 1, 1, 1, 1, 1, 1,  1, 1},
                    { 1,1,1,1,1,1,1,1, 1,1},
                    {   6,  1,  2,  3,  4,  5,  6,  7,   8,   9},
                    {-34, 66, 57, 98, 69, 13, 22, 16,  76,  89},
                    { -66, 76, 45, 32, 76,867, 67,677,  68,   9},
                    {  45, 54, 65, 56, 78, 98, 10, -9,  55,  43},
                    {  16, 13,-20,-80, 44, 55, 66, 77,  88,  99},
                    {   0, -1, -2, -3, -4, -5, -6, -7,  -8,  -9},
                    {  12, 98, 10, 20, 30,-30,-50,-80,-777, -32},
                    {  13, 14, 15, 16, 17, 18, 19, 20,  11,  12}
                };
 
 
int main (int argc, char*argv[])
{
    int MAS_sum[Row];
int sum=0;
 
for (int i=0; i<Row; i++) {
    sum=0;
    for (int j=0; j<Column; j++)
        sum+=mat[i][j];
    MAS_sum[i]=sum; }
printf("%d",sum);
for (int i=0; i<Row; i++) 
    if (MAS[i][0]>0)
        for (int j=0; j<Column; j++)
        mat[i][j]=mat[i][0];
}
1
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 20:38 #14
6-ая строчка.
Откуда там взялся char?
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:47  [ТС] #15
Я знаю там int но все равно
0
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 20:49 #16
C++
1
2
3
4
5
6
for (int i=0; i<Row; i++) {
    sum=0;
    for (int j=0; j<Column; j++)
        sum+=mat[i][j];
    MAS_sum[i]=sum; 
printf("%d",sum); }
Так правильно.
А в вашем коде печатается только сумма последней строки, т.к. у вас вывод суммы в цикл не входил.
0
kypiwindy
369 / 283 / 226
Регистрация: 29.05.2010
Сообщений: 717
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:56  [ТС] #17
Выводит число с 12 цифр
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 20:58 #18
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
   // size
   const int NROW = 10;
   const int NCOL = 10;
 
   // generate matrix
   int nmatrix[NROW][NCOL];
   for(int i = 0; i < NROW; ++i)
      for(int j = 0; j < NCOL; ++j)
         nmatrix[i][j] = rand() % 9;
 
   for(int i = 0; i < NROW; ++i) {
      std::copy(nmatrix[i], nmatrix[i] + NCOL, std::ostream_iterator<int>(std::cout, " "));
      std::cout << std::endl;
   }  std::cout << std::endl;
 
   // sum rows to array
   int * narray = new int [NROW];
   for(int i = 0; i < NROW; ++i) {
      narray[i] = 0;
      for(int j = 0; j < NCOL; ++j)
         narray[i] += nmatrix[i][j];
   }
 
   std::copy(narray, narray + NROW, std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl << std::endl;
 
   delete [] narray;
 
   // update matrix
   for(int i = 0; i < NROW; ++i)
      if(nmatrix[i][0] > 0)
         std::fill_n(nmatrix[i], NCOL, nmatrix[i][0]);
 
   for(int i = 0; i < NROW; ++i) {
      std::copy(nmatrix[i], nmatrix[i] + NCOL, std::ostream_iterator<int>(std::cout, " "));
      std::cout << std::endl;
   }  std::cout << std::endl;
 
   system("pause");
   return 0;
}
Код
5 8 7 4 8 1 3 0 7 2
8 2 7 6 7 5 7 8 3 0
0 6 5 0 4 7 6 5 8 5
2 0 2 0 6 4 8 1 7 3
2 6 2 3 6 2 3 7 2 1
5 5 1 6 3 7 2 3 7 4
4 2 5 6 0 1 4 5 4 4
5 0 5 6 7 5 3 6 3 2
0 5 0 1 0 5 7 5 8 1
6 3 2 1 2 1 8 3 6 8

45 53 46 33 34 43 35 42 32 40

5 5 5 5 5 5 5 5 5 5
8 8 8 8 8 8 8 8 8 8
0 6 5 0 4 7 6 5 8 5
2 2 2 2 2 2 2 2 2 2
2 2 2 2 2 2 2 2 2 2
5 5 5 5 5 5 5 5 5 5
4 4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5 5
0 5 0 1 0 5 7 5 8 1
6 6 6 6 6 6 6 6 6 6
1
neske
1527 / 894 / 192
Регистрация: 26.03.2010
Сообщений: 3,074
29.05.2010, 21:01 #19
fasked, за последующие вопросы по copy/fill_n и .т.п отвечаешь ты)
0
fasked
29.05.2010, 21:05     Создать массив, составленный из суммы элементов каждой строки матрицы
  #20

Не по теме:

Цитата Сообщение от neske Посмотреть сообщение
fasked, за последующие вопросы по copy/fill_n и .т.п отвечаешь ты)
подписался :D

0
29.05.2010, 21:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2010, 21:05
Привет! Вот еще темы с ответами:

Вывести на экран суммы элементов каждой строки матрицы.
Задана матрица размером NxM. Вывести на экран суммы элементов каждой строки...

Вывести на экран суммы элементов каждой строки матрицы
как я понимаю, сумма элементов одной строки матрицы выводится так: ...

Найти суммы элементов каждой строки матрицы и отсортировать
Для матрицы MATR (5,6) найти суммы элементов каждой строки и записать их в...

Вычислить и запомнить суммы и числа элементов каждой строки матрицы
вычислить и запомнить суммы и числа элементов каждой строки матрицы. результаты...


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

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

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