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

Цитата:
Сообщение от shrek=) Посмотреть сообщение
Мне кажется, что ошибка проста, ведь одна и та же переменная не может принимать несколько значений сразу Думаю and следует заменить на or
И еще, мне кажется, что не стоит так растягивать код условие для проверки ответа и вывода вердикта можно уменьшить и проверьте орфографию
И это лишь одно из замечаний.
Перечислю остальные:
1. Начну с модераторского: пожалуйста, давайте названия темам в соответствии с Правилами форума, п.2.1, чтобы модераторам не приходилось самим за Вас придумывать название темы.
2. Ваша программа построена на повторении 10 одинаковых действий. В таком случае в программировании (на любом ЯП) принято пользоваться подпрограммами.
3. Если Вы хотите стать хорошим программистом, то мой Вам совет: выкиньте из головы переходы по меткам! Забудьте о метках совсем - тем более, что здесь они абсолютно не нужны.
4. Зачем Вы присоединяете модуль GraphABC? Вы же графику не употребляете.
В качестве примера - мое решение:
Код:
uses
 crt;
const
 Q_N:Array[1..10] of String=('Первый','Второй','Третий',
 'Четвертый','Пятый','Шестой','Седьмой','Восьмой','Девятый','Десятый');
var
 b:Word;

Procedure Question(c,d:Word;i:Integer);
 var a:Word;
 begin
  clrscr;
  writeln(Q_N[i]+' вопрос:');
  writeln(c,'*',d,' = ?');
  readln(a);
  clrscr;
  if a = c*d then
   begin
    b:=b+1;
    writeln('Ответ = ',a,' правильно')
   end
  else
   writeln('Ответ = ',a,' неправильно');
  writeln('Нажмите ENTER');
  readln;
 end;

BEGIN
 b:=0;
 Question(4,4, 1);
 Question(3,7, 2);
 Question(9,7, 3);
 Question(8,7, 4);
 Question(3,3, 5);
 Question(6,6, 6);
 Question(5,5, 7);
 Question(4,7, 8);
 Question(8,8, 9);
 Question(9,9,10);

 clrscr;
 if (b=9) or (b=10) then  writeln('Ваша оценка 5') else
 if (b=7) or (b= 8) then  writeln('Ваша оценка 4') else
 if (b=5) or (b= 6) then  writeln('Ваша оценка 3') else
 writeln('Ваша оценка 2');
 readln;
END.
Почувствуйте разницу, для начала - хотя бы в размере кода.
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

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