Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 04.06.2012, 19:52   #1 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите, пожалуйста, с задачей на Паскале

Составить программу, организующую работу с пользователем в диалоговом режиме: программа запрашивает слово с заданным числом слогов, проверяет правильность ввода такого слова и выводит следующий запрос. Окончание работы – ввод пустой строки. Программа также должна подсчитывать количество правильных ответов и выводить, сколько баллов набрал пользователь и количество попыток.

вот моя программа, но она не работает....в чем ошибка? я не могу разобраться(

program romanuk_6_2;
uses crt;
var a:string;
z: set of char;
n,n1,i,x,c:integer;
begin
textbackground(black);
clrscr;
z:=[' а','е','ё','и','о','у','ы','э','ю','я'];
x:=3;
randomize;
c:=random(5)+2;
textcolor(white);
writeln('введите слово из ',c,' слогов ');
textcolor (white);
read(a);
repeat
for i:= 1 to length(a) do
begin
if a[i] in z then
begin
n:=n+1;
end;
end;
n1:=n1+n;
x:=x-1;
if n=c then
begin
textcolor(green);
writeln('правильно! вы набрали',n1,' бала(ов)');
writeln('у вас осталось',x,' попытки(ок)');
end
else
begin
textcolor(red);
writeln('неверно!');
writeln('у вас осталось ',x,' попытки(ок)');
end;
if x<=0 then
begin
textcolor(green);
writeln('кол-во попыток = 0!игра закончена ');
writeln('вы набрали ',n1,'бала(ов) ');
break
end;
until a='';
READLN;
end.
Андрей Романюк вне форума   Ответить с цитированием

Старый 04.06.2012, 19:52
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Поищите в этих ссылках ответы

Помогите с задачей на Паскале
Помогите с задачей в паскале на одномерные массивы
Помогите пожалуйста с задачей
Помогите с задачей в паскале, работа с файлами
Помогите, пожалуйста, с задачей в C++
Помогите пожалуйста с задачей по C++

Старый 04.06.2012, 20:28   #2 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Черт, трудно мне проверять из-за этого изобилия кириллицы, но кое-что видно сразу, а именно
Чтение строковой переменной осуществляется ТОЛЬКО оператором Readln. Read для этого не годится.
Исправьте - дальше посмотрим.
Vladimir_S вне форума   Ответить с цитированием
Старый 04.06.2012, 20:36   #3 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

ну вот, уже чуть-чуть лучше, но у него не работает генератор чисел( точнее на протяжении "игры" он просит вводить слова с одинаковым кол-ом слогов)) и после первой попытки(которая работает нормально), вторая и третья всегда выдают ошибку.
Андрей Романюк вне форума   Ответить с цитированием
Старый 04.06.2012, 20:37   #4 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

и что с кириллицей? лучше на латыне это писать?
Андрей Романюк вне форума   Ответить с цитированием
Старый 04.06.2012, 21:00   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Андрей Романюк Посмотреть сообщение
и что с кириллицей? лучше на латыне это писать?
Нет-нет, это мои заморочки: у меня DOS-Паскаль, а там кодировки другие. Поэтому для меня возня с кириллицей - головная боль. Ладно, сейчас попробую отладить.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 04.06.2012, 21:19   #6 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Попробуйте такой вариант:
Код:
uses crt;
var
 a:string;
 z: set of char;
 n,n1,i,x,c:integer;
 yn:char;
 b:boolean;
begin
 textbackground(black);
 clrscr;
 z:=['а','е','и','о','у','ы','э','ю','я'];
 randomize;
 n1:=0;
 Repeat
  x:=3;
  c:=random(5)+2;
  textcolor(white);
  repeat
   n:=0;
   b:=false;
   writeln('введите слово из ',c,' слогов ');
   textcolor (white);
   readln(a);
   If a<>'' then
    begin
     for i:= 1 to length(a) do
      if a[i] in z then n:=n+1;
     if n=c then
      begin
       textcolor(green);
       n1:=n1+n;
       writeln('правильно! вы набрали ',n1,' балла(ов)');
       b:=true;
      end
     else
      begin
       textcolor(red);
       writeln('неверно!');
       x:=x-1;
       writeln('у вас осталось ',x,' попытки(ок)');
      end;
    end;
  until b or (x=0) or (a='');
  if x=0 then
   begin
    textcolor(green);
    writeln('кол-во попыток = 0! игра закончена ');
    writeln('вы набрали ',n1,' балла(ов) ');
   end;
  write('сыграем еще (д/н)? ');
  readln(yn);
 Until (yn='н') or (yn='Н');
end.
Исправлены ошибки (в т.ч. грамматические: "балл" как оценка, в отличие от танцевального вечера, пишется с двумя "л"). Из наиболее грубых - в первую очередь пробел перед 'а' в перечислении элементов множества: абсолютно недопустимо!
Vladimir_S вне форума   Ответить с цитированием
Старый 04.06.2012, 21:40   #7 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

огромное спасибо)))все отлично работает))
а за грамматические ошибки я извиняюсь,у меня такое бывает)
Андрей Романюк вне форума   Ответить с цитированием
Старый 04.06.2012, 21:58   #8 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

правда еще один вопрос, как работает переменная b?я ее убрал, понял что без нее никак, но почему так, не понимаю)
Андрей Романюк вне форума   Ответить с цитированием
Старый 04.06.2012, 22:30   #9 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Андрей Романюк Посмотреть сообщение
правда еще один вопрос, как работает переменная b?я ее убрал, понял что без нее никак, но почему так, не понимаю)
Да... очень просто. Если играющий набрал слово с правильным числом слогов, то она становится true, а если она стала true, то дальнейшие попытки уже не нужны. Флажок такой.
Vladimir_S вне форума   Ответить с цитированием
Старый 04.06.2012, 22:46   #10 (permalink)
Андрей Романюк
Member
 
Регистрация: 13.05.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Да... очень просто. Если играющий набрал слово с правильным числом слогов, то она становится true, а если она стала true, то дальнейшие попытки уже не нужны. Флажок такой.
окей ,спасибо большое)))) теперь все понятно)
Андрей Романюк вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 07:58.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.