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

считать в вектор пар все числа, отличные от нуля - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.63
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
18.07.2011, 12:30     считать в вектор пар все числа, отличные от нуля #1
У меня такая задача:
считать в вектор пар все числа, отличные от нуля. В паре - первое число - всегда типа int, второе - double. Написал небольшую ф-цию. Но не получается считать.
"Debug Assertion failed" - vector subscript out of range. - не пойму, где ошибка
Из файла считываю вот такую последовательность:
1 4 0
2 1 3 6 0
1 5 3 2 234 5 0

А вот мой код:

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
double b;
    vector <double> stringMatrix;
    ifstream fin3("3.txt");
    while ( fin3 >> b )
    {
        stringMatrix.push_back(b);
    }
 
vector<pair <int,double> > pairStringMatrix; 
int i = 0;
    while ( i <= stringMatrix.size() )
    {
        if ( stringMatrix[i] != 0  )
        {
            pairStringMatrix.push_back(make_pair(stringMatrix[i],stringMatrix[i+1]));
            if  ( stringMatrix[i+2] == stringMatrix[stringMatrix.size()] )
            {
                pairStringMatrix.push_back(make_pair(0,0));
                return 0;
            } 
            else { i = i + 2; }
        } 
        else { pairStringMatrix.push_back(make_pair(0,0)); i++; } 
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2011, 12:30     считать в вектор пар все числа, отличные от нуля
Посмотрите здесь:

C++ Вывести на печать все числа до нуля включительно
С помощью cin.getline считать все строки файла в контейнер (вектор или очередь) C++
одномерные массивы (Вывести на печать все числа до нуля включительно) C++
Файл: Считать все числа из файлав динамический массив C++
Считать вектор из файла, записать вектор в файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
18.07.2011, 13:02     считать в вектор пар все числа, отличные от нуля #2
hello19, Наверное все таки так:

C++
1
while (i < stringMatrix.size())
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
18.07.2011, 13:04  [ТС]     считать в вектор пар все числа, отличные от нуля #3
это уже исправил... та же ошибка
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
18.07.2011, 13:06     считать в вектор пар все числа, отличные от нуля #4
C++
1
2
3
4
5
6
if ( stringMatrix[i+2] == stringMatrix[stringMatrix.size()] )
{
    pairStringMatrix.push_back(make_pair(0,0));
    return 0;
} 
else { i = i + 2; }
Этот кусок также немного настоаживает..
CAHTEXHUK
Заблокирован
18.07.2011, 13:09     считать в вектор пар все числа, отличные от нуля #5
результат какой должен быть? То есть в первой паре вектора ((int)1,(double)4) во второй (2, 1) и так далее?
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
18.07.2011, 13:10     считать в вектор пар все числа, отличные от нуля #6
если у нас i == stringMatrix.size() - 1 => stringMatrix[i+2] - будем обращаться к несуществующему элементу вектора...
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
18.07.2011, 13:25  [ТС]     считать в вектор пар все числа, отличные от нуля #7
to CAHTEXHUK: Вы все правильно поняли
В итоге результат должен быть следующим: (1,4)(0,0)(2.1)...


to nameless: а разве такое может быть применительно к вышеупомянутой матрице?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
18.07.2011, 13:44     считать в вектор пар все числа, отличные от нуля #8
Цитата Сообщение от hello19 Посмотреть сообщение
stringMatrix[stringMatrix.size()]
Вылет за границу массива как минимум в этом месте, последним валидным индексом будет stringMatrix.size() - 1.
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
18.07.2011, 13:48  [ТС]     считать в вектор пар все числа, отличные от нуля #9
to fasked: Спасибо! Глупая ошибка...

Добавлено через 2 минуты
Тем не менее код пока что не рабочий(((
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.07.2011, 13:57     считать в вектор пар все числа, отличные от нуля #10
hello19, Совет : перепишите свой код через итераторы, контролируя выход за пределы.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
18.07.2011, 14:01     считать в вектор пар все числа, отличные от нуля #11
Код
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
int main()
{
    std::vector< std::pair<int,double> > vec;
 
    std::ifstream ifile("1.txt");
 
    int i = 0;
    double d = 0.0;
 
    while (!ifile.eof()) {
 
        while (!i)
            ifile >> i;
 
        while (!d)
            ifile >> d;
 
        vec.push_back(std::make_pair(i,d));
 
        i=0;
        d=0.0;
 
    }
 
    for (int i=0; i<vec.size(); i++)
        std::cout << vec[i].first << ' ' << vec[i].second << '\n';
 
 
    getch();
    return 0;
}

Содержимое файла:
1 2 3
4 0 5 6 0 0 0 5
6 7 5 4 3

нет проверок, если количество ненулевых будет нечетных. также в паре мест проверки на Еоф надо бы.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,267
18.07.2011, 19:52     считать в вектор пар все числа, отличные от нуля #12
hello19, просто непонятно ты чё хотел этим сказать?
C++
1
( stringMatrix[i+2] == stringMatrix[stringMatrix.size()] )
Тут какое-то условие должно быть, ты опиши на словах, какое именно. Поможем!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2011, 10:06     считать в вектор пар все числа, отличные от нуля
Еще ссылки по теме:

C++ Как записать все числа из файла в вектор?
C++ Записать в файл все числа от нуля до 2^16 в hex-виде
Компоненты файла A – целые (отличные от нуля) числа,получить файл B C++

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

Или воспользуйтесь поиском по форуму:
Stas0n
3 / 4 / 0
Регистрация: 13.07.2011
Сообщений: 313
19.07.2011, 10:06  [ТС]     считать в вектор пар все числа, отличные от нуля #13
Спасибо всем! уже разобрался сам.
Yandex
Объявления
19.07.2011, 10:06     считать в вектор пар все числа, отличные от нуля
Ответ Создать тему
Опции темы

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