![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Буду |
![]() ![]()
Сообщение
#1
|
Школьник ![]() Группа: Продвинутые Сообщений: 17 Регистрация: 30.9.2008 Город: Калининград Учебное заведение: КГТУ Вы: студент ![]() |
Разработать программу, обеспечивающую прием и анализ (проверку на правильность, допустимость) ответа пользователя ПК на вопрос, высвечиваемый ему на экране видеотерминала. При правильном ответе выдается сообщение об успешном результате, и программа завершает свою работу. Если пользователь ответил на вопрос неверно, то выводится сообщение о неправильном ответе и вопрос повторяется. Кроме того, предусматривается возможность получения справочной информации по данному вопросу: для этого пользователю нужно ввести вопросительный знак. Вопрос может повториться не более 3-х раз, после чего программа завершает свою работу.
Приведите пример одной строки описания нескольких переменных вещественного типа в языке Паскаль (в программе проверить на допустимость первый символ каждого идентификатора) Т.е. если вводится допустим var a1,b34:real; должно выводиться что всё верно, а если например var a1,34d:real; должно выводиться сообщение об ошибке. Получилось у меня то что приведено ниже..Но есть проблема. Проверяет он мне только первое обозначение переменной, т.е. в обоих примерах a1. И радостно пишет и там и там верно =( И ещё.. если выводится 'stroka vvedena ne verno! oshibcka peremen.', то программа зацикливается. Не могу найти ошибки( Помогите, пожалуйста. Заранее благодарю. Код Program Vopr; uses crt; procedure PDellB(var s:string); begin while (s>'')and (s[1]=' ') do delete (s,1,1); end; var s,s1,c1,c2,c3,r:string; l1,l2,l3,i,i1,l,k,j,n,x,m:byte; begin c1:='var '; c2:=':real;'; c3:='1234567890,.!@#$^&*(){}[]-_=+~'; l1:=length(c1); l2:=length(c2); l3:=length(c3); m:=0; while m<3 do begin writeln('Vvedite primer odnoj stroki opisaniya neskolkih peremennyh veschestvennogo tipa: '); writeln('Dlya spravki naberite "?"'); readln(s); {$v-}PDellB(s); {v+} if s=('?') then begin textcolor(yellow); writeln('Красным указана обязательная часть, синим не обязательная'); writeln('значения в скобках описание переменных начинающихся латинской буквой'); textcolor(red); write('var '); textcolor(blue); write('[...]'); textcolor(red); writeln(':real;'); textcolor(white); end; i:=pos(c1,s); i1:=pos(c2,s); if (i=0) or (i1=0) then begin writeln('primer ne vernyj!'); m:=m+1; end else begin if i>i1 then begin writeln('primer ne vernyj! nepr.posled.ident.'); m:=m+1; end else begin delete(s,i,l1); i1:=pos(c2,s); delete(s,i1,l2); r:=','; l:=length(s); while l<>0 do begin j:=pos(r,s); s1:=copy(s,1,j); delete(s,1,length(s1)); for n:=1 to l3 do begin k:=pos(s1[1],c3[n]); if k<>0 then begin writeln('stroka vvedena ne verno! oshibcka peremen.'); {???} l3:=l3+1; l:=0; m:=m+1; end else n:=n+1; end; l:=length(s); if l=0 then begin writeln('Verno!'); m:=5; end; end; end; end; end;end. |
![]() ![]() |
crazymaster |
![]()
Сообщение
#2
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 240 Регистрация: 9.3.2007 Город: Нефтеюганск Учебное заведение: ТУСУР Вы: студент ![]() |
есть подозрение что все помеченное красным ошибка
for n:=1 to l3 do begin цикл вроде можно убрать отсюда k:=pos(s1[1],c3[n]); if k<>0 then begin writeln('stroka vvedena ne verno! oshibcka peremen.'); {???} l3:=l3+1; l:=0; m:=m+1; end else n:=n+1; end; |
Буду |
![]()
Сообщение
#3
|
Школьник ![]() Группа: Продвинутые Сообщений: 17 Регистрация: 30.9.2008 Город: Калининград Учебное заведение: КГТУ Вы: студент ![]() |
Если это убрать программа зацикливается,если var a1,11b:real; =((
|
crazymaster |
![]()
Сообщение
#4
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 240 Регистрация: 9.3.2007 Город: Нефтеюганск Учебное заведение: ТУСУР Вы: студент ![]() |
а если оставить m:=m+1
|
Буду |
![]()
Сообщение
#5
|
Школьник ![]() Группа: Продвинутые Сообщений: 17 Регистрация: 30.9.2008 Город: Калининград Учебное заведение: КГТУ Вы: студент ![]() |
То же самое - замерший экран с моргающим курсором, и ничем из него не выйти, кроме диспетчера задач(
|
crazymaster |
![]()
Сообщение
#6
|
Студент ![]() ![]() Группа: Продвинутые Сообщений: 240 Регистрация: 9.3.2007 Город: Нефтеюганск Учебное заведение: ТУСУР Вы: студент ![]() |
а вот так?
while l<>0 do begin j:=pos(r,s); if j=0 then s1:=s else s1:=copy(s,1,j); delete(s,1,length(s1)); k:=pos(s1[1],c3); if k<>0 then begin writeln('stroka vvedena ne verno! oshibcka peremen.'); {???} m:=m+1; break; end; .... все что ниже без изменений |
Буду |
![]()
Сообщение
#7
|
Школьник ![]() Группа: Продвинутые Сообщений: 17 Регистрация: 30.9.2008 Город: Калининград Учебное заведение: КГТУ Вы: студент ![]() |
УРАА!!! Работает!!!!! Спасибо ОГРОМНОЕ!!! Я уже неделю с ней мучилась..))
|
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 25.5.2025, 20:12 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru