Cin и иже с ним

Тема в разделе "Общие вопросы по С и С++", создана пользователем AlexSaaa, 26 сен 2005.

Статус темы:
Закрыта.
  1. AlexSaaa

    AlexSaaa Гость

    существует задачка где необходимо выровнять введенный текст по ширине..
    в принципе не сложно.. проблема в малом..ввести сий текст.. при попытке перейти на новую строчку--> предлагает выйти из программы(прес ени кей ту континуе)
    завел динамический многомерный массив...



    опять проблемка..нужно вводить текст пока масив не будет наполнен.. и нет никакой гаранти, что в конце этого насильного ввода не выдаст сообщения типа:"Инструкция обратилась по адресу блаблабла"
     
  2. Guest

    Guest Гость

    Ну про cin ничего не скажу - я на С++ консольных прог и не писал B) А вот выделение памяти сразу никуда не годится, как и цикл на полное заполнение. Вводишь текст во временный буфер, анализируешь на окончание ввода (например, Введите 2 пустые строки для окончания), потом добавляешь в массив данных. Используй либо STL vector (если ты реально на программера учишься, лучше сразу изучай STL и привыкай пользоваться), либо список, либо просто сам наращивай массив по необходимости.
     
  3. Guest

    Guest Гость

    Кстати, а почему у тебя для текста выделяется только 10 мест, а потом заполнять пытаешься 50?
     
  4. AlexSaaa

    AlexSaaa Гость

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

    а можна поподробней..не совсем уловил идею...


    относительно STL мне бы со стандартными библиотеками разобратся... хотя есть какая-нить лит-ра чтобы и я понял что сие такое?
     
  5. ????

    ???? Гость

    <!--QuoteBegin-AlexSaaa+26:09:2005, 21:05 -->
    <span class="vbquote">(AlexSaaa @ 26:09:2005, 21:05 )</span><!--QuoteEBegin-->относительно STL мне бы со стандартными библиотеками разобратся... хотя есть какая-нить лит-ра чтобы и я понял что сие такое?
    [snapback]25194" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    STL и есть стандартная библиотека (Standart Template Library).
    Лит-ра есть тут:
    http://anatolix.naumen.ru/Books/CPPSTL?v=15p5 и на других книжных обменниках.
     

    Вложения:

    • stl.chm
      Размер файла:
      158,5 КБ
      Просмотров:
      68
  6. Guest

    Guest Гость

    <!--QuoteBegin-AlexSaaa+26:09:2005, 20:05 -->
    <span class="vbquote">(AlexSaaa @ 26:09:2005, 20:05 )</span><!--QuoteEBegin-->оздать динамический 10-мерный_))) массив с максимум 50 елементов в каждой сроке..[/quote]

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

    По поводу ввода. А ты подумай. Пользователь может ввести 1, а может и 30 строк. Как ему сказать тебе, что он закончил вводить, при отсутствии явного интерфейса?
     
  7. alam

    alam Гость

    Я так понял нужно выровнять введенный текст по ширине дополняя его пробелами. Это задача кажется есть в книге Кернигана-Ритчи. Вроде как есть и решебник к этой книге. А зачем вводить весь текст сразу? Введи строку, до символа перевода строки или до определенного размера. Выровняй ее, выведи, введи новую.
    Типа
    #define WIDTH 50
    char s[WIDTH];
    while(getline(s, 30)!=EOF)
    {
    spreadline(s, WIDTH);
    cout << s;
    }
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей