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

считать строку чисел в массив - C++

Восстановить пароль Регистрация
 
Tiva
94 / 94 / 1
Регистрация: 25.04.2012
Сообщений: 429
30.03.2013, 15:16     считать строку чисел в массив #1
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
#include <sstream>
#include <string>
#include <iostream>
using std::cout;
using std::string;
using std::istringstream;
using std::endl;
#define TICK 12
#define RATE 7
#define iRATE int i=0; i<RATE; i++
#define jTICK int j=0; j<TICK; j++
class Table
{
public:
    int table[RATE][TICK];
    string temp_val;
    Table();
    Table(const char* str);
    void output();
};
Table::Table()
{
    for(iRATE)
    {
        for(jTICK)
        table[i][j]=0;
    }
}
Table::Table(const char *str)
{
    int i=0, j=0;
    istringstream iss(str);
    while(iss)
    {
        do
        {
            int temp;
            iss >> temp;
            table[i++][j++]=temp;
        }
        while(i<RATE && j<TICK);
        i=0;
        j=0;
    }
}
void Table::output()
{
    for(iRATE)
    {
        for(jTICK)
        {
            cout<<table[i][j]<<"  ";
        }
        cout<<endl;
    }
}
int main(void)
{
string strAffliction="1783 5320 8845 12392 15940 19476 23011 26578 30119 33631 37200 40711 493 3928 7349 10794 14238 17671 21103 24566 28004 31414 34879 38288 0 3043 6400 9778 13157 16525 19892 23289 26661 30006 33405 36749 0 1717 4975 8256 11536 14806 18074 21373 24647 27894 31194 34441 0 0 0 0 1145 3786 6426 9089 11734 14357 17023 19645 0 0 0 0 313 2904 5494 8107 10701 13274 15889 18461 0 0 0 0 0 1582 4096 6633 9151 11649 14188 16685";
Table Warlock_Affliction(strAffliction.c_str());
Warlock_Affliction.output();
 
}
почему не заполняет массив из строки?
массив 12 на 7 (12 столбцов 7 строк)
выводит вот что
Код
1908587216  0  0  0  0  0  0  0  0  0  0  0
0  1908587216  0  0  0  0  0  0  0  0  0  0
0  0  1908587216  0  0  0  0  0  0  0  0  0
0  0  0  1908587216  0  0  0  0  0  0  0  0
0  0  0  0  1908587216  0  0  0  0  0  0  0
0  0  0  0  0  1908587216  0  0  0  0  0  0
0  0  0  0  0  0  1908587216  0  0  0  0  0

Для продолжения нажмите любую клавишу . . .
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2013, 15:16     считать строку чисел в массив
Посмотрите здесь:

C++ считать строку в динамический массив
C++ Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а
C++ Массив чисел в строку
Можно ли в массив чаров считать строку полностью? C++
Считать строку в массив символов, который является членом класса C++
Строку чисел в массив integer C++
C++ Преобразование типов - как строку чисел перевести в целочисленный массив ?
C++ Из текстового файла считать массив целых чисел

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
iifat
2179 / 1332 / 96
Регистрация: 05.06.2011
Сообщений: 3,689
30.03.2013, 15:50     считать строку чисел в массив #2
Цитата Сообщение от Tiva Посмотреть сообщение
C++
35
36
37
38
39
40
41
42
43
        do
        {
            int temp;
            iss >> temp;
            table[i++][j++]=temp;
        }
        while(i<RATE && j<TICK);
        i=0;
        j=0;
Прочие не заполняются, потому что вот этот цикл заполняет только главную диагональ.
Вот откуда берётся число, которое там сидит, -- не понял.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
30.03.2013, 16:16     считать строку чисел в массив #3
Да, в конструкторе явно перемудрили. А не проще?:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Table::Table(const char* str)
{
   istringstream iss(str);
 
   for (int i = 0; i < RATE; ++i)
   {
      for (int j = 0; j < TICK; ++j)
      {
         int temp = 0;
         iss >> temp;
         table[i][j] = temp;
      }
   }
}
Yandex
Объявления
30.03.2013, 16:16     считать строку чисел в массив
Ответ Создать тему
Опции темы

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