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

Подсчитать сумму первого и последнего столбца в матрице - C++

Восстановить пароль Регистрация
 
Alexex
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 23
15.04.2012, 23:01     Подсчитать сумму первого и последнего столбца в матрице #1
Есть задача. Подсчитать сумму первого и последнего столбца в неопределенной матрице и с неопределенном количеством пробелов между элементами. Написать именно на C++ использовать потоки. Вот код
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
#include <sstream>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
int main(){
int x;
vector <int> arr(100);  
int sum1=0, sum2=0,i=0;
ifstream mat("mat");
 
while(mat.get()!=EOF){ 
mat.unget();
  for(i=0;mat.peek()!='\n';i++){
  mat >> arr[i];
  cout << arr[i] << endl;
  
}
 
sum1=arr[0];
sum2=arr[i-1];
i=0;
}
cout << "Сумма 1 -- " << sum1 << " Сумма 2 --" << sum2 << endl;
return 0;
}
Программа зацикливается, не могу понять в чем дело.

Добавлено через 1 час 35 минут
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
#include <sstream>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
int main(){
vector <int> arr(10);  
int sum1=0, sum2=0,i=0;
ifstream mat("mat");
  while(mat.get()!=EOF){ 
    mat.unget();
  for(i=0;mat.get()!='\n';i++){ 
    mat.unget();
  mat >> arr[i];
  //cout << arr[i] << endl;
  if(mat.peek()==EOF) break;
}
sum1+=arr[0];
sum2+=arr[i-1];
i=0;
//cout << endl;
}
 
cout << "Сумма 1 -- " << sum1 << " Сумма 2 --" << sum2 << endl;
return 0;
}
Вот более исправленный вариант который не зацикливается, но почему то считает последний столбец иногда неправильно, а иногда аварийная остановка. Помогите

Добавлено через 42 минуты
C++
1
vector <int> arr(10); - это контейнер обладающий всеми свойствами обычного массива, просто с ним удобнее работать как с динамическим и потом я его хочу использовать для расширения памяти. Не обращайте на этого особого внимания.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2012, 23:01     Подсчитать сумму первого и последнего столбца в матрице
Посмотрите здесь:

Найти сумму элементов первого и последнего столбца матрицы C++
Дан двумерный массив С[10][10], поменять местами элементы первого и последнего столбца, второго и предпоследнего и так далее C++
C++ Найти сумму элементов первого столбца без одного последнего элемента, сумму элементов второго столбца без двух последних...
C++ Односвязный список. Вывести сумму последнего элемента и первого, предпоследнего и последнего и т.д.
В матрице найти наибольший и наименьший элементы и поместить их на место первого и последнего элемента матрицы соответственно (Pascal -> C++) C++
C++ Как присвоить нужному элементу в матрице значение первого или последнего элемента?
C++ В прямоугольной матрице заменить элементы каждого столбца на сумму элементов этого столбца

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
antoha398
155 / 155 / 3
Регистрация: 29.03.2012
Сообщений: 418
15.04.2012, 23:17     Подсчитать сумму первого и последнего столбца в матрице #2
mat >> arr[i];
вы не можете так делать, если выделили вектор только на 10 эелементов!
либо используйте arr.push_back, либо резервируйте больше памяти( лучше по ходу выполнеия).
Alexex
0 / 0 / 0
Регистрация: 22.12.2011
Сообщений: 23
15.04.2012, 23:31  [ТС]     Подсчитать сумму первого и последнего столбца в матрице #3
Цитата Сообщение от antoha398 Посмотреть сообщение
mat >> arr[i];
вы не можете так делать, если выделили вектор только на 10 эелементов!
либо используйте arr.push_back, либо резервируйте больше памяти( лучше по ходу выполнеия).
Не в этом суть. Суть в том что неправильно считает. Оптимизацию и динамическое выделение памяти я потом сделаю.
Yandex
Объявления
15.04.2012, 23:31     Подсчитать сумму первого и последнего столбца в матрице
Ответ Создать тему
Опции темы

Текущее время: 16:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru