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

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

Войти
Регистрация
Восстановить пароль
 
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
#1

Сумма строк - C++

17.12.2013, 22:30. Просмотров 473. Ответов 7
Метки нет (Все метки)

если сток меньше, чем столбцов, все нормально. Наоборот выдает ошибку. Что нужно изменить?
Матрицу ввожу вручную

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Находим сумму элементов строк отсортированного массива
 
    cout << "Summa elementov strok:\n";
 
for (i = 0; i < n; i++)  
    {
        for (j = 0; j < m; j++)
 
            temp[i] += a[i][j];                       
 
        cout<< temp[i]<<"\t";    // Печатаем сумму в виде одномерной матрицы.
 
    }
 
    _getch();
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2013, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сумма строк (C++):

Одинаковая сумма строк в матрице - C++
Подскажите, пожалуста! Какой код нужен для нахождения одинаковой суммы разных строк в матрице? Например, матрица: 1 2 3 3 2 1 1 1 1. ...

Сумма строк в двумерном массиве - C++
Дан двумерный массив, размерностью MxN. Определить: 1) общую сумму строк с четными индексами; 2) сумму тех строк, первый элемент...

Сумма строк и столбцов матрицы - C++
Всем привет, посоветуйте пожалуйста что не так делаю, есть двумерный динамический массив-матрица, нужно записать в диагональ матрицы суму...

Длинная арифметика: сумма двух строк - C++
int One = strlen(BufOne); int Two = strlen(BufTwo); int MaxL = max(One, Two); char *Result = (char*)malloc(MaxL); int a; double...

Сумма наибольших элементов матрицы чётных строк - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { int DSE,i,j,max,sum,m1,n2; cin&gt;&gt;m1&gt;&gt;n2; for (i=0; i&lt;m1;...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
outoftime
║XLR8║
509 / 431 / 33
Регистрация: 25.07.2009
Сообщений: 2,295
18.12.2013, 08:45 #2
Код в студию
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
18.12.2013, 19:42  [ТС] #3
Вот полный вид программы. проблема с суммой строк


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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <string>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
 
int a[100][100], temp[100];
int  n, m;
int i, j, h, k;
 
// Пусть матрица вводиться вручную с клавиатуры.
 
 
 
cout << " Vvedite kolichestvo strok n= \n";
cin >> n;                                            //ввод количества строк с клавиатуры.
cout << "Vvedite kolichestvo stolbchov m=\n";
cin >> m;                                         //ввод количества столбцов с клавиатуры.
cout << "\n";
 
 
for (i = 0; i < n; i++)
{
    for (j = 0; j < m; j++)
    {
        cout << "[" << i << "][" << j << "] : ";
        cin >> a[i][j];                                 //ввод значения элементов матрицы с клавиатуры.
 
    }
}
 
 
cout << "\n\nMatricha: \n";
for (i = 0; i < n; i++)                               //цикл для вывода матрицы на экран
{
    cout << "\n";
    for (j = 0; j < m; j++)
        cout << a[i][j] << "\t";
}
 
 
 // Находим суммы элементов столбцов
    for (j = 0; j < m; j++) 
    {
        for (i = 0; i < n; i++)       
            temp[j] += a[i][j];            // Записываем  дополнительный массив для суммы столбцов данной матрицы
 
    }
    cout << "\n";
 
 
 
// Сортируем методом выбора.
 
    for (j = 0; j < m; j++)      
    {         
        for (k = j + 1; k < m; k++) 
        {
 
            if (temp[j] > temp[k])      // По условию: сортировка происходит по возрастанию сумм столбцов
            {
 
                h = temp[j];
 
                temp[j] = temp[k];           // Заменяем значения исходного массива на новый, для дальнейшего использования при сортировки
 
                temp[k] = h;
 
                for (i = 0; i < n; i++)
                {
 
                    h = a[i][j];                       //Переставляем столбцы  по возрастанию сумм
 
                    a[i][j] = a[i][k];
 
                    a[i][k] = h;
 
                }
            }
        }
    }
 
 
 
// Печатаем отсортированную матрицу.
 
    cout << "Otsortirovannai matrich:\n";
    for (i = 0; i < n; i++)   
    {       
        for (j = 0; j < m; j++)  
        {
 
            cout << a[i][j] << "\t";
 
        }
        cout << "\n";
    }
 
    cout << "\n" << "\n";
 
 
    for (j = 0; j < m; j++)            // Обнуляем дополнительный массив
 
        temp[j] = 0;
 
// Находим сумму элементов строк отсортированного массива
 
    cout << "Summa elementov strok:\n";
 
for (i = 0; i < n; i++)  
    {
        for (j = 0; j < m; j++)
 
            temp[i] += a[i][j];                       
 
        cout<< temp[i]<<"\t";    // печатаем сумму в виде одномерной матрицы.
 
    }
 
    _getch();
 
    return 0;
}
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
18.12.2013, 19:55  [ТС] #4
вид ошибки


Сумма строк
Ev_Hyper
Заблокирован
18.12.2013, 20:06 #5
Сделайте динамический массив. У вас в коде наверняка идет обращение к элементу, который вы "не считали". Так как рамзер указан 100x100, то такое может быть сплошь и рядом
Тем более вы при обнулении, вот тут:

C++
1
2
3
  for (j = 0; j < m; j++)            // Обнуляем дополнительный массив
 
        temp[j] = 0;
только первые 2 обрабатываете, 3 туда не входит, так как n>m
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
18.12.2013, 21:04  [ТС] #6
А есть ли способ без динамического массива? С ним могут возникнуть проблемы
Ev_Hyper
Заблокирован
18.12.2013, 21:10 #7
Можно и без него)
Я же написал почему такое число выводит, сделайте вот так:
C++
1
2
3
    for (j = 0; j < 100; j++)            // Обнуление
 
        temp[j] = 0;
И везде где обнуляете, пишите границу не n или m, а ту которую вы задавали при объявлении.


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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
int a[100][100], temp[100];
int  n, m;
int i, j, h, k;
 
// ГЏГіГ±ГІГј Г¬Г*òðèöГ* ââîäèòüñÿ âðó÷Г*ГіГѕ Г± ГЄГ«Г*ГўГЁГ*òóðû.
 
 
 
cout << " Vvedite kolichestvo strok n= \n";
cin >> n;                                            //ââîä êîëè÷åñòâГ* ñòðîê Г± ГЄГ«Г*ГўГЁГ*òóðû.
cout << "Vvedite kolichestvo stolbchov m=\n";
cin >> m;                                         //ââîä êîëè÷åñòâГ* ñòîëáöîâ Г± ГЄГ«Г*ГўГЁГ*òóðû.
cout << "\n";
 
 
for (i = 0; i < n; i++)
{
    for (j = 0; j < m; j++)
    {
        cout << "[" << i << "][" << j << "] : ";
        cin >> a[i][j];                                 //ââîä Г§Г*Г*Г·ГҐГ*ГЁГї ýëåìåГ*òîâ Г¬Г*òðèöû Г± ГЄГ«Г*ГўГЁГ*òóðû.
 
    }
}
 
 
cout << "\n\nMatricha: \n";
for (i = 0; i < n; i++)                               //öèêë äëÿ âûâîäГ* Г¬Г*òðèöû Г*Г* ГЅГЄГ°Г*Г*
{
    cout << "\n";
    for (j = 0; j < m; j++)
        cout << a[i][j] << "\t";
}
 
 
 // ГЌГ*õîäèì ñóììû ýëåìåГ*òîâ ñòîëáöîâ
    for (j = 0; j < m; j++) 
    {
        for (i = 0; i < n; i++)       
            temp[j] += a[i][j];            // Г‡Г*ïèñûâГ*ГҐГ¬  Г¤Г®ГЇГ®Г«Г*èòåëüГ*ûé Г¬Г*Г±Г±ГЁГў äëÿ ñóììû ñòîëáöîâ Г¤Г*Г*Г*îé Г¬Г*òðèöû
 
    }
    cout << "\n";
 
 
 
// Ñîðòèðóåì ìåòîäîì âûáîðГ*.
 
    for (j = 0; j < m; j++)      
    {         
        for (k = j + 1; k < m; k++) 
        {
 
            if (temp[j] > temp[k])      // ГЏГ® óñëîâèþ: ñîðòèðîâêГ* ïðîèñõîäèò ГЇГ® âîçðГ*Г±ГІГ*Г*ГЁГѕ ñóìì ñòîëáöîâ
            {
 
                h = temp[j];
 
                temp[j] = temp[k];           // Г‡Г*ìåГ*ГїГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГї èñõîäГ*îãî Г¬Г*Г±Г±ГЁГўГ* Г*Г* Г*îâûé, äëÿ Г¤Г*ëüГ*åéøåãî èñïîëüçîâГ*Г*ГЁГї ïðè ñîðòèðîâêè
 
                temp[k] = h;
 
                for (i = 0; i < n; i++)
                {
 
                    h = a[i][j];                       //ÏåðåñòГ*âëÿåì ñòîëáöû  ГЇГ® âîçðГ*Г±ГІГ*Г*ГЁГѕ ñóìì
 
                    a[i][j] = a[i][k];
 
                    a[i][k] = h;
 
                }
            }
        }
    }
 
 
 
// ГЏГҐГ·Г*ГІГ*ГҐГ¬ îòñîðòèðîâГ*Г*Г*ГіГѕ Г¬Г*òðèöó.
 
    cout << "Otsortirovannai matrich:\n";
    for (i = 0; i < n; i++)   
    {       
        for (j = 0; j < m; j++)  
        {
 
            cout << a[i][j] << "\t";
 
        }
        cout << "\n";
    }
 
    cout << "\n" << "\n";
    
 
    for (j = 0; j < 100; j++)            // ГЋГЎГ*óëÿåì äîïîëГ*èòåëüГ*ûé Г¬Г*Г±Г±ГЁГў
 
        temp[j] = 0;
 
// ГЌГ*õîäèì ñóììó ýëåìåГ*òîâ ñòðîê îòñîðòèðîâГ*Г*Г*îãî Г¬Г*Г±Г±ГЁГўГ*
 
    cout << "Summa elementov strok:\n";
 
for (i = 0; i < n; i++)  
    {
        for (j = 0; j < m; j++)
 
            temp[i] += a[i][j];                       
 
        cout<< temp[i]<<"\t";    // ГЇГҐГ·Г*ГІГ*ГҐГ¬ ñóììó Гў âèäå îäГ*îìåðГ*îé Г¬Г*òðèöû.
 
    }
 
    _getch();
 
    return 0;
hhhhhh
0 / 0 / 0
Регистрация: 12.12.2013
Сообщений: 20
18.12.2013, 21:21  [ТС] #8
ВЫ меня спасли, огромное спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.12.2013, 21:21
Привет! Вот еще темы с ответами:

Найти в матрице числа строк, сумма элементов у которых отрицательна - C++
Доброго времени суток, начал потихоньку изучать данный язык, и наткнулся на не понимания формулировки задачи. &quot;Составить программу...

Найти число строк матрицы, сумма элементов которых меньше 0 - C++
void __fastcall TForm1::Edit1Change(TObject *Sender) { int i,n; n=StrToInt(Edit1-&gt;Text); for (i=0;i&lt;n;i++) ...

Найти число строк матрицы, сумма элементов которых меньше 0 - C++
Найти число строк матрицы, сумма элементов которых меньше 0. У кого есть код данной программы?(Если можно с блок схемой) Спасибо.

Найти номера строк матрицы, сумма элементов которых меньше 0 - C++
Найти номера строк матрицы, сумма элементов которых меньше 0. Матрица должна быть с 3 строками и n столбцами. Заранее спасибо! ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.12.2013, 21:21
Ответ Создать тему
Опции темы

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