Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Си

Автор: Zundell 25.04.2007 3:03

Ребят,подскажите пожалуйста, как сделать чтобы ввод был форматированым, т.е я ввожу какую-либо информацию,но вдруг ошибся и мне нужно вернуться назад и изменить введенное данное.Например фамилию или что либо.В программе подразумевается работа со структурами, вводим данные в файл.Заранее спасибо

Автор: Fanat 25.04.2007 10:55

Цитата(Zundell @ 25.04.2007 0:03) *

Ребят,подскажите пожалуйста, как сделать чтобы ввод был форматированым, т.е я ввожу какую-либо информацию,но вдруг ошибся и мне нужно вернуться назад и изменить введенное данное.Например фамилию или что либо.В программе подразумевается работа со структурами, вводим данные в файл.Заранее спасибо




Добавить проверку при вводе.Например вот так можно.

Код
  
double Epsilon;
  do {
    cout << "Enter Epsilon : ";
    cin >> Epsilon;
  } while (Epsilon <= 0.0 || Epsilon >= 1.0);



Потом записываем Epsilon в файл.

Автор: Zundell 25.04.2007 20:43

Спасибо большое...например есть у меня два поля,заполнил одно поле нажал энтер и перешел на второе поле...как сделать чтоб вернуться снова на первое поле и изменить введенные там данные ?

Автор: volvo 25.04.2007 22:29

Можешь уточнить, по какому признаку ты хочешь определять, надо ли вернуться к предыдущему полю, и его исправить, или продолжать ввод текущего?

Автор: Fanat 25.04.2007 22:33

Цитата(Zundell @ 25.04.2007 17:43) *

Спасибо большое...например есть у меня два поля,заполнил одно поле нажал энтер и перешел на второе поле...как сделать чтоб вернуться снова на первое поле и изменить введенные там данные ?


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

Код

double Epsilon;
Again:
  do {
    cout << "Enter Epsilon : ";
    cin >> Epsilon;
  } while (Epsilon <= 0.0 || Epsilon >= 1.0);

  do {
    cout << "Enter Epsilon2 : ";
    cin >> Epsilon2;
    if (Epsilon2==100) goto Again;
  } while (Epsilon2 <= 0.0 || Epsilon2 >= 1.0);


Проверить не могу...но должно работать...
Может кто-нибудь ещё подскажет?..

Автор: Zundell 26.04.2007 2:45

Volvo
Просто по желанию...ввел фамилию,начал вводить имя...и вдруг передумал....взял вернулся с поля имя на поле фамилия и изменил фамилию и т.д....получается своеобразный переход от поля к полю с возможностью изменения в полях информации

Добавлено через 1 мин.
а итог изменения записываем в файл..ну это я напишу...мучаюсь только с таким вот вводом,препод сказал так и никак больше.Извиняюсь за тупость

Автор: volvo 26.04.2007 2:56

Ну, в принципе, ничего невозможного в этом нет... Я бы сделал так: пишешь свою функцию ввода строки (я делал такое на Паскале, если интересно - посмотри в поиске), которая "собирает" строку посимвольно, и по нажатию Enter-а копирует введенную до этого момента строку в определенную переменную. Туда же добавить обработку Delete/Backspace/кнопок управления курсором, чтоб можно было свободно редактировать строку, и (внимание!!!) обработку, скажем, нажатия Ctrl+1, Ctrl+2, ..., нажатие на Ctrl+<цифра> переводит тебя в режим редактирования строки №<цифра> ...

Попробуй, если не получится - я помогу...

Автор: Zundell 26.04.2007 16:07

Набор строки и выход из неё в любой момент -кажись это?спасибо Volvo...тогда на праздниках буду сидеть кодить если не получится,то обращусь за помошью..за ранее спасибо