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

Ввод двумерного динамического массива с консоли - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.93
emmure
2 / 2 / 0
Регистрация: 15.12.2012
Сообщений: 93
24.04.2013, 17:54     Ввод двумерного динамического массива с консоли #1
Здравствуйте, помогите пожалуйста, мне нужно ввести с консоли двумерный массив, мне известна максимальная длинна строки, но я не знаю максимальное количество этих строк. Как я понимаю нужно выделять память под строки по мере ввода, если я правильно понимаю то это можно сделать как-то с помощью malloc,realloc только хз как.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6373 / 4839 / 440
Регистрация: 14.02.2011
Сообщений: 16,038
25.04.2013, 08:08     Ввод двумерного динамического массива с консоли #21
Цитата Сообщение от emmure Посмотреть сообщение
но вопрос остаётся открытым почему выдаёт ошибку
здесь???

Цитата Сообщение от emmure Посмотреть сообщение
delete(Arr[i]);
* * delete(Arr);
наверно надо написать так
C++
1
2
delete[] Arr[i];
delete[] Arr;
зачем это
Цитата Сообщение от emmure Посмотреть сообщение
y--;
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
emmure
2 / 2 / 0
Регистрация: 15.12.2012
Сообщений: 93
25.04.2013, 09:21  [ТС]     Ввод двумерного динамического массива с консоли #22
Цитата Сообщение от ValeryS Посмотреть сообщение
здесь???



наверно надо написать так
C++
1
2
delete[] Arr[i];
delete[] Arr;
зачем это
C++
1
2
delete[] Arr[i];
delete[] Arr;
разницы нету
emmure
2 / 2 / 0
Регистрация: 15.12.2012
Сообщений: 93
20.05.2013, 17:53  [ТС]     Ввод двумерного динамического массива с консоли #23
Здравствуйте. Нужна помощь, я бы хотел реализовать динамический ввод двух массивов, у меня 2 вопроса.
1)Почему выдаёт ошибку (1>c:\users\pavel\documents\visual studio 2010\projects\firma\firma\firma.cpp(375): error C2065: numberELemFirma: необъявленный идентификатор) я же вроде его обьявил.
2)Соответственно как сделать выход из цикла по вводу массива после 2 нажатия enter, то есть если бы это был не int массив я бы написал
C++
1
2
if (str[i]=='\n')
            break;
но так как это интовский массив, если я правильно понимаю он не считывает '\n', а так и оставляет её в потоке ввода, возможно можно как нибудь считать '\n' с потока ввода.
Вот код:
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
class firma
{
public:
    int *rating;
    int *number;
    int numberElemFirma;
    firma();
    ~firma();
    void inputFirma();
};
firma :: firma()
{
    rating = NULL;
    number = NULL;
    numberElemFirma = 0;
}
firma :: ~firma()
{
    rating = NULL;
    delete[] rating;
    number = NULL;
    delete[] number;
    numberElemFirma  = 0;
}
void firma :: inputFirma()
{
    while (true)
    {
        rating = (int*)realloc(rating,(numberElemFirma+1)*sizeof(int));
        number = (int*)realloc(number,(numberElemFirma+1)*sizeof(int));
        cout<<"Введите номинал"<<endl;
        cin >> rating[numberElemFirma];
        cout<<"Введите количество номинала"<<endl;
        cin >> number[numberELemFirma];
        cin.ignore(numeric_limits<streamsize>::max(), '\n');
        numberELemFirma++;
    }
};
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
20.05.2013, 18:17     Ввод двумерного динамического массива с консоли #24
emmure, numberELemFirma - ошибка. А выход через ctrl+c можно сделать
emmure
2 / 2 / 0
Регистрация: 15.12.2012
Сообщений: 93
20.05.2013, 18:30  [ТС]     Ввод двумерного динамического массива с консоли #25
Цитата Сообщение от nexen Посмотреть сообщение
emmure, numberELemFirma - ошибка. А выход через ctrl+c можно сделать
А точно спасибо а можно поподробнее о ctrl+c
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
20.05.2013, 18:42     Ввод двумерного динамического массива с консоли #26
emmure, ох, или ctrl+z.. Я уж и не помню >_< Если кто-нибудь ещё в темку заглянет, то отпишитесь об этом?
faLek
99 / 100 / 7
Регистрация: 06.03.2012
Сообщений: 478
20.05.2013, 18:42     Ввод двумерного динамического массива с консоли #27
emmure, можно попробывать использовать перевод строки в целочисленный тип
C++
1
atoi ()
,но не уверен...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.05.2013, 18:46     Ввод двумерного динамического массива с консоли #28
Цитата Сообщение от nexen Посмотреть сообщение
или ctrl+z
В Windows генерирует EOF.

Добавлено через 1 минуту
Цитата Сообщение от emmure Посмотреть сообщение
cin.ignore(numeric_limits<streamsize>::max(), '\n');
Эта строчка зачем?
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
20.05.2013, 18:50     Ввод двумерного динамического массива с консоли #29
emmure, как сказал alsav22, можно пробовать feof на stdin для проверки ctrl+c. Примерно так:
C++
1
2
3
4
5
6
7
8
9
while (true)
{
cin << number;
if (feof(stdin)) break;
else
{
// do something with number
}
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.05.2013, 18:55     Ввод двумерного динамического массива с консоли #30
C++
1
if (cin.eof()) break;
Добавлено через 1 минуту
Ctrl + z
emmure
2 / 2 / 0
Регистрация: 15.12.2012
Сообщений: 93
20.05.2013, 19:14  [ТС]     Ввод двумерного динамического массива с консоли #31
Цитата Сообщение от alsav22 Посмотреть сообщение
C++
1
if (cin.eof()) break;
Добавлено через 1 минуту
Ctrl + z
щас попробую

C++
1
cin.ignore(numeric_limits<streamsize>::max(), '\n');
это для очистки потока ввода, мне потом ещё и строки надо вводить

Добавлено через 10 минут
если я правильно понял
C++
1
if (cin.eof()) break;
выходит из цикла если в консол ввести ctrl+z,
И ещё если не затруднит не могли бы вы обьяснить что эта за функция
C++
1
(cin.eof())
, или дать какую нибудь ссылку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 19:21     Ввод двумерного динамического массива с консоли
Еще ссылки по теме:

Cоздание двумерного динамического массива C++
Сортировка двумерного динамического массива C++
Заполнение двумерного динамического массива C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.05.2013, 19:21     Ввод двумерного динамического массива с консоли #32
Цитата Сообщение от emmure Посмотреть сообщение
мне потом ещё и строки надо вводить
Тогда понятно.
Цитата Сообщение от emmure Посмотреть сообщение
что эта за функция
Член класса ios. Возвращает true, если при вводе обнаружен конец потока ввода.
Yandex
Объявления
20.05.2013, 19:21     Ввод двумерного динамического массива с консоли
Ответ Создать тему
Опции темы

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