Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cin и иже с ним
Форум программистов > Системное программирование > C, С++ и С Builder > Общие вопросы по С и С++
AlexSaaa
существует задачка где необходимо выровнять введенный текст по ширине..
в принципе не сложно.. проблема в малом..ввести сий текст.. при попытке перейти на новую строчку--> предлагает выйти из программы(прес ени кей ту континуе)
завел динамический многомерный массив...

Цитата
char**text;
text=new char*[10];
for(i=0; i<50; ++i)
  text[i]=new char[100];
for(i=0; i<50; ++i) cin.getline(text[i],100);
cout<<endl<<"Text "<<text[1];


опять проблемка..нужно вводить текст пока масив не будет наполнен.. и нет никакой гаранти, что в конце этого насильного ввода не выдаст сообщения типа:"Инструкция обратилась по адресу блаблабла"
Guest
Ну про cin ничего не скажу - я на С++ консольных прог и не писал smile.gif А вот выделение памяти сразу никуда не годится, как и цикл на полное заполнение. Вводишь текст во временный буфер, анализируешь на окончание ввода (например, Введите 2 пустые строки для окончания), потом добавляешь в массив данных. Используй либо STL vector (если ты реально на программера учишься, лучше сразу изучай STL и привыкай пользоваться), либо список, либо просто сам наращивай массив по необходимости.
Guest
Кстати, а почему у тебя для текста выделяется только 10 мест, а потом заполнять пытаешься 50?
AlexSaaa
Цитата
Кстати, а почему у тебя для текста выделяется только 10 мест, а потом заполнять пытаешься 50?

идея была такова...создать динамический 10-мерный_))) массив с максимум 50 елементов в каждой сроке.. потом строки ТЕКСТ(и) воспринимать как отдельные строки ..не получилось...

Цитата
Вводишь текст во временный буфер, анализируешь на окончание ввода (например, Введите 2 пустые строки для окончания), потом добавляешь в массив данных.
а можна поподробней..не совсем уловил идею...


относительно STL мне бы со стандартными библиотеками разобратся... хотя есть какая-нить лит-ра чтобы и я понял что сие такое?
????
Цитата(AlexSaaa @ 26:09:2005, 21:05 )
относительно STL мне бы со стандартными библиотеками разобратся... хотя есть какая-нить лит-ра чтобы и я понял что сие такое?
*

STL и есть стандартная библиотека (Standart Template Library).
Лит-ра есть тут:
]]>http://anatolix.naumen.ru/Books/CPPSTL?v=15p5]]> и на других книжных обменниках.
Guest
Цитата(AlexSaaa @ 26:09:2005, 20:05 )
оздать динамический 10-мерный_))) массив с максимум 50 елементов в каждой сроке..


По коду ты создаешь место для 10 строк по 100 символов. А потом пытаешься прочитать 50 строк, вот и получаешь свои AV. А слово "динамический" ты просто так употребляешь? В программировании "динамический массив" имеет конкретное значение - способный изменять размер. Твой массив как раз статический, т.к. ты выделяешь фиксированное количество элементов. Хочешь динамический - смотри STL, или сам пиши.

По поводу ввода. А ты подумай. Пользователь может ввести 1, а может и 30 строк. Как ему сказать тебе, что он закончил вводить, при отсутствии явного интерфейса?
alam
Я так понял нужно выровнять введенный текст по ширине дополняя его пробелами. Это задача кажется есть в книге Кернигана-Ритчи. Вроде как есть и решебник к этой книге. А зачем вводить весь текст сразу? Введи строку, до символа перевода строки или до определенного размера. Выровняй ее, выведи, введи новую.
Типа
#define WIDTH 50
char s[WIDTH];
while(getline(s, 30)!=EOF)
{
spreadline(s, WIDTH);
cout << s;
}
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2009 IPS, Inc.