IPB

Здравствуйте, гость ( Вход | Регистрация )

> Диалоговая задачка, Turbo Pascal
Буду
сообщение 5.4.2009, 17:47
Сообщение #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.
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов(1 - 6)
crazymaster
сообщение 5.4.2009, 19:59
Сообщение #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;
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 6.4.2009, 8:04
Сообщение #3


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



Если это убрать программа зацикливается,если var a1,11b:real; =((
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
crazymaster
сообщение 6.4.2009, 8:43
Сообщение #4


Студент
**

Группа: Продвинутые
Сообщений: 240
Регистрация: 9.3.2007
Город: Нефтеюганск
Учебное заведение: ТУСУР
Вы: студент



а если оставить m:=m+1
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 6.4.2009, 8:51
Сообщение #5


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



То же самое - замерший экран с моргающим курсором, и ничем из него не выйти, кроме диспетчера задач(
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
crazymaster
сообщение 6.4.2009, 9:39
Сообщение #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;
....
все что ниже без изменений
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Буду
сообщение 6.4.2009, 9:49
Сообщение #7


Школьник
*

Группа: Продвинутые
Сообщений: 17
Регистрация: 30.9.2008
Город: Калининград
Учебное заведение: КГТУ
Вы: студент



УРАА!!! Работает!!!!! Спасибо ОГРОМНОЕ!!! Я уже неделю с ней мучилась..))
Пользователь в офлайнеКарточка пользователяОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия Сейчас: 25.5.2025, 19:43

Книжки в помощь: "Сборник заданий по высшей математике" Кузнецов Л.А., "Сборник заданий по высшей математике" Чудесенко В.Ф., "Индивидуальные задания по высшей математике" Рябушко А.П., и другие.




Зеркало сайта Решебник.Ру - reshebnik.org.ru