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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
kypiwindy
360 / 274 / 105
Регистрация: 29.05.2010
Сообщений: 704
Записей в блоге: 1
Завершенные тесты: 3
#1

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

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

Создать массив, составленный из суммы элементов каждой строки. Вывести на дисплей полученный массив. После этого из исходной матрицы создать новую следующим образом: если первый элемент каждой строки является положительным числом, необходимо заменить все ее элементы значениями первого элемента этой же строки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.05.2010, 18:40     Создать массив, составленный из суммы элементов каждой строки матрицы
Посмотрите здесь:
Создать массив, составленный из суммы отрицательных элементов каждого столбца матрицы C++
C++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы меньше суммы (i-1)-й строки
C++ Определить, верно ли утверждение: сумма элементов каждой i-ой строки матрицы больше суммы (i-1)-ой строки
C++ Определить, верно ли утверждение: сумма элементов каждой i-й строки матрицы больше суммы (i-1)-й строки
Вычислить суммы элементов каждой строки матрицы C++
C++ Вывести на экран суммы элементов каждой строки матрицы.
C++ Найти суммы элементов каждой строки матрицы и отсортировать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
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); }
Так правильно.
А в вашем коде печатается только сумма последней строки, т.к. у вас вывод суммы в цикл не входил.
kypiwindy
360 / 274 / 105
Регистрация: 29.05.2010
Сообщений: 704
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 20:56  [ТС]     Создать массив, составленный из суммы элементов каждой строки матрицы #17
Выводит число с 12 цифр
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 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
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
29.05.2010, 21:01     Создать массив, составленный из суммы элементов каждой строки матрицы #19
fasked, за последующие вопросы по copy/fill_n и .т.п отвечаешь ты)
fasked
29.05.2010, 21:05
  #20

Не по теме:

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

kypiwindy
360 / 274 / 105
Регистрация: 29.05.2010
Сообщений: 704
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:06  [ТС]     Создать массив, составленный из суммы элементов каждой строки матрицы #21
А через stdio можно их заменить ?
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
29.05.2010, 21:15     Создать массив, составленный из суммы элементов каждой строки матрицы #22
Используем алгоритмы до конца!)
Код.
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
#include <cstdlib>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <numeric>
 
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] = std::accumulate (nmatrix[i], nmatrix[i] + NCOL, 0);
 
   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;
}


Добавлено через 1 минуту
kypiwindy, а ваш последний вариант, почему не подходит? Мы же вроде бы все ошибки исправили.
kypiwindy
360 / 274 / 105
Регистрация: 29.05.2010
Сообщений: 704
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:18  [ТС]     Создать массив, составленный из суммы элементов каждой строки матрицы #23
Дурно потраченное время

Добавлено через 2 минуты
выводило вот это 65654445646-776868
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
29.05.2010, 21:27     Создать массив, составленный из суммы элементов каждой строки матрицы #24
Вот, я вашу программу чуть-чуть изменил

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
#include <stdio.h>
#include <stdlib.h>
int main ()
{
    const int  Row=10,Column=10;
    int MAS[Row][Column];
 
    for (int i=0; i<Row; i++) { // заполняем и выводим на экран.
        for (int j=0; j<Column; j++) {
            MAS[i][j]=rand()%50;
            printf ("%d  ", MAS[i][j]); }
        printf ("\n"); }
    printf ("\n");
 
    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;
        printf("%d   ",sum); }
    printf ("\n\n");
 
    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];
 
    for (int i=0; i<Row; i++) {
        for (int j=0; j<Column; j++)
            printf ("%d  ", MAS[i][j]);
        printf ("\n"); }
 
    printf ("\n");
    system ("pause");
    return 0;
}
fasked
Эксперт С++
4933 / 2513 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.05.2010, 21:35     Создать массив, составленный из суммы элементов каждой строки матрицы #25
Цитата Сообщение от neske Посмотреть сообщение
C++
1
narray[i] = std::accumulate (nmatrix[i], nmatrix[i] + NCOL, 0)
;
забыл про нее, пытался вспомнить и не осилил

Цитата Сообщение от neske Посмотреть сообщение
C++
1
2
3
for(int i = 0; i < NROW; ++i)
 for(int j = 0; j < NCOL; ++j)
 nmatrix[i][j] = rand() % 9;
может сюда std::generate_n пришпилить?
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
29.05.2010, 21:41     Создать массив, составленный из суммы элементов каждой строки матрицы #26
Можно-можно)
kypiwindy
360 / 274 / 105
Регистрация: 29.05.2010
Сообщений: 704
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:46  [ТС]     Создать массив, составленный из суммы элементов каждой строки матрицы #27
Та просто препод не поверит мы не учили stdlib
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
29.05.2010, 21:49     Создать массив, составленный из суммы элементов каждой строки матрицы #28
kypiwindy, ну вы же человек разумный !)
Уберите, посмотрите что изменится.
Увидите что выскочит две ошибки.
-warning: unused variable 'system'
-warning: unused variable 'rand()'

Вместо рандома ставите то что вы писали, ручками когда заполняли.
А задержку экрана и вовсе убираете, если не изучали.
kypiwindy
360 / 274 / 105
Регистрация: 29.05.2010
Сообщений: 704
Записей в блоге: 1
Завершенные тесты: 3
29.05.2010, 21:59  [ТС]     Создать массив, составленный из суммы элементов каждой строки матрицы #29
Что делать с этим
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;

Добавлено через 4 минуты
То же самое с iostream .Как то по другому можно записать ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.05.2010, 22:01     Создать массив, составленный из суммы элементов каждой строки матрицы
Еще ссылки по теме:
C++ Вывести на экран суммы элементов каждой строки матрицы
C++ Вычислить и запомнить суммы и числа элементов каждой строки матрицы
Как вычислить суммы положительных элементов каждой строки матрицы? C++
Найти суммы элементов каждой строки матрицы А и наибольшую из этих сумм C++
C++ Вычислить суммы элементов каждой строки матрицы, определить наименьшее значение этих сумм и ...

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

Или воспользуйтесь поиском по форуму:
neske
1479 / 846 / 75
Регистрация: 26.03.2010
Сообщений: 2,904
29.05.2010, 22:01     Создать массив, составленный из суммы элементов каждой строки матрицы #30
Зачем вам это? Я же вам предложил вариант в посте #24 без непонятного вам?
Yandex
Объявления
29.05.2010, 22:01     Создать массив, составленный из суммы элементов каждой строки матрицы
Ответ Создать тему
Опции темы

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