Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2012, 21:24   #1
Женька Good
Форумчанин
 
Регистрация: 15.03.2011
Сообщений: 126
По умолчанию Процедуры. Паскаль. Вывод данных

Есть задача, где необходимо конвертировать величины.
Задача получилась, а вывод результатов немного не работает...
Проблема в том, что мне необходимо, чтобы из 9 процедур выбиралась, одна в соответствии с заданным номером, а если задан номер с клавиатуры меньше 1 или больше 9, писалось, мол, ошибка, попробуйте ещё раз. На данный момент при вводе не корректного номера, просит ввести "сколько необходимо ввести", а должно "ошибка". а сейчас выдает ошибку только после того, как введешь количество необходимое перевести. Необходимо использовать "Сase of".
Это участок основной программы, где не получается выполнить указанные выше действия.


Код:
begin
clrscr;
menu;
Writeln;
textcolor(Magenta);
Write('Vvedite # napravleniya neobhodimogo konvertirovaniya ==> ');Readln(n);
Writeln;
If (n<1) and (n>9) then Write('Try one times more.')
else Write('Vvedite kol-vo neobhodimoe perevesti ==> ');readln(x);
Writeln;
   Case n of
  1 : s_s(x,r);
  2 : s_l(x,r);
  3 : l_s(x,r);
  4 : ch_l(x,r);
  5 : l_p(x,r);
  6 : ch_p(x,r);
  7 : c_l(x,r);
  8 : c_s(x,r);
  9 : l_st(x,r);
    else Write('Error!');
  end;
readln
end.
Женька Good вне форума Ответить с цитированием
Старый 20.01.2012, 21:29   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

не выполнимое условие
Цитата:
If (n<1) or (n>9)
дословно если n меньше 1 и n больше 9.
нужно использовать не and а or то есть или
If (n<1) and (n>9)
и тогда условие будет
если n меньше 1 или n больше 9

Зы а да и ещё заключить в блок begin end всё после else

Код:
Write('Vvedite # napravleniya neobhodimogo konvertirovaniya ==> ');Readln(n);
Writeln;
If (n<1) or (n>9) then Write('Try one times more.')
else 
begin
Write('Vvedite kol-vo neobhodimoe perevesti ==> ');readln(x);
Writeln;
   Case n of
  1 : s_s(x,r);
  2 : s_l(x,r);
  3 : l_s(x,r);
  4 : ch_l(x,r);
  5 : l_p(x,r);
  6 : ch_p(x,r);
  7 : c_l(x,r);
  8 : c_s(x,r);
  9 : l_st(x,r);
    else Write('Error!');
  end;
end;
readln
end.

Последний раз редактировалось vovk; 20.01.2012 в 21:39.
vovk вне форума Ответить с цитированием
Старый 20.01.2012, 21:32   #3
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Код:
begin
clrscr;
menu;
Writeln;
textcolor(Magenta);
Write('Vvedite # napravleniya neobhodimogo konvertirovaniya ==> ');Readln(n);
Writeln;
if (n<1) or (n>9) then
  repeat
      Write('Try one times more.');
      readln(n);
  until n in [1..9] ;

Write('Vvedite kol-vo neobhodimoe perevesti ==> ');readln(x);
Writeln;
   Case n of
  1 : s_s(x,r);
  2 : s_l(x,r);
  3 : l_s(x,r);
  4 : ch_l(x,r);
  5 : l_p(x,r);
  6 : ch_p(x,r);
  7 : c_l(x,r);
  8 : c_s(x,r);
  9 : l_st(x,r);
    else Write('Error!');
  end;
readln
end.
P.S. vovk, У тебя в коде после "If (n<1) and (n>9) then Write('Try one times more.')" прога сразу уйдет на финайльный readln, "попробовать еще один раз" уже не получится.
Все тривиальное просто

Последний раз редактировалось whatever; 20.01.2012 в 21:35.
whatever вне форума Ответить с цитированием
Старый 20.01.2012, 21:37   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Да действительно whatever прав , если нужно дождаться правильного ответа то будем спрашивать до посинения)), только в таком случае желательно сообщать пользователю, что от него ждут)) Хотя бы диапазон возможных значений обозначить.))
vovk вне форума Ответить с цитированием
Старый 20.01.2012, 21:39   #5
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

На сколько я помню, у него процедура menu это делает в самом начале
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 20.01.2012, 21:46   #6
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
P.S. vovk, У тебя в коде после "If (n<1) and (n>9) then Write('Try one times more.')" прога сразу уйдет на финайльный readln, "попробовать еще один раз" уже не получится.
Ну да, я понял ТС буквально, ещё раз значит перезапусти и пробуй))
Действительно если бы в сообщении указывалось о неообходимости повторить ввод используя цифры от 1 до 9, я бы подумал что требуется дождатся ввода правильного значения.
А так подумал об этом только после вашего сообщения.
vovk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод массива из процедуры Skalp Помощь студентам 8 14.01.2012 12:06
Сохранение и вывод данных (Паскаль) Diwixis Помощь студентам 0 12.12.2011 16:02
Вывод работы процедуры на экран User1992 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 06.11.2011 20:24
Вывод массива используя 2 процедуры(Turbo Pascal). anton_hoff Помощь студентам 1 29.03.2011 20:52
Вывод данных(Паскаль) Сирокко Помощь студентам 6 21.11.2010 14:12