Разное - [решено] Программа в Pascal

Аватара пользователя
lxa85

Re: Разное - [решено] Программа в Pascal

Сообщение lxa85 »

У меня ещё один вопрос появился. Поидее последний. У моей программы теперь последующий вопрос должен зависить от предыдущего. Я пробовал так:


читать дальше »




Код:

Код: Выделить всё

Uses Crt;
Var a, b, y, z: Integer;
  begin
   TextBackGround(1); ClrScr;
   a:=0; b:=0; y:=0; z:=0;
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('1');
   Writeln ('2');
   Writeln (''); Readln (y);
  case y of
   1:inc(a, 10);
   2:inc(a, 20);
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
   case y of
    1:inc(b, 1);
    2:inc(b, 2);
   If a=20 Then
   begin
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('1');
   Writeln ('2');
   Writeln (''); Readln (y);
  case y of
   1:inc(b, 1);
   2:inc(b, 2);
   z:=a+b;
   ClrScr;
   Writeln('= ',z);
   Readln;
 end.





Он жалуется на "If a=10 Then". Как это прописать иначе, что-бы всё было нормально?
Аватара пользователя
asus a9rp

Re: Разное - [решено] Программа в Pascal

Сообщение asus a9rp »

asus a9rp, на память не помню, но проверь конструкцию

case of

Операторные скобки какие? end case; помоему нужен. Help тебя спасет.



Код:

Код: Выделить всё

var Item:Integer;
begin
readln(Item);
case Item of 
    1: Writeln('1');
    2: Writeln('2');
    else: witeln('not 1 or 2');
end case;
end.

Т.е. ты должен четко отделить оператор множественного выбора case от оператора условия if


Цитата asus a9rp:



Он жалуется на "If a=10 Then"
Разное - [решено] Программа в Pascal




Как именно жалуется?



По алгоритму, ИМХО сложновато для анализа "на вскидку", одно-буквенные переменные мешают анализу. Отсутствие комментариев тоже не способствует.
Аватара пользователя
lxa85

Re: Разное - [решено] Программа в Pascal

Сообщение lxa85 »

http://www.pascaler.ru/pascal/constructions/uslovie/4/


Блок case должен заканчиваться end;



Код:

Код: Выделить всё

case y of
   1:inc(a, 10);
   2:inc(a, 20); end;
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
Аватара пользователя
Alan85

Re: Разное - [решено] Программа в Pascal

Сообщение Alan85 »

http://www.pascaler.ru/pascal/constructions/uslovie/4/


Блок case должен заканчиваться end;



Код:

Код: Выделить всё

case y of
   1:inc(a, 10);
   2:inc(a, 20); end;
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
Аватара пользователя
asus a9rp

Re: Разное - [решено] Программа в Pascal

Сообщение asus a9rp »

Цитата asus a9rp:



If a=20 Then

begin

ClrScr;

Writeln ('?');

Writeln ('');

Writeln ('1');

Writeln ('2');

Writeln ('');

Readln (y);
Разное - [решено] Программа в Pascal




тут end; в конце забыл
Аватара пользователя
asus a9rp

Re: Разное - [решено] Программа в Pascal

Сообщение asus a9rp »

Спасибо, тепреть всё в порядке.... за исключением одного. В первом вопросе ответ 1, во втором - 1, но в конце (где должно быль 10+1=11) выводится 12. А если ответы 2 и 2, то в конце - 24, а не 22.



П.С. Программа теперь выдлядет так:


читать дальше »




Код:

Код: Выделить всё

Uses Crt;
Var a, b, y, z: Integer;
  begin
   TextBackGround(1); ClrScr;
   a:=0; b:=0; y:=0; z:=0;
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('10');
   Writeln ('20');
   Writeln ('');
   Readln (y);
  case y of
   1:inc(a, 10);
   2:inc(a, 20);
  end;
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
   case y of
    1:inc(b, 1);
    2:inc(b, 2);
    end;
   If a=20 Then
   begin
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('1');
   Writeln ('2');
   Writeln ('');
   Readln (y);
   end;
  case y of
   1:inc(b, 1);
   2:inc(b, 2);
  end;
   z:=a+b;
   ClrScr;
   Writeln('= ',z);
   Readln;
 end.
Аватара пользователя
asus a9rp

Re: Разное - [решено] Программа в Pascal

Сообщение asus a9rp »

Спасибо, тепреть всё в порядке.... за исключением одного. В первом вопросе ответ 1, во втором - 1, но в конце (где должно быль 10+1=11) выводится 12. А если ответы 2 и 2, то в конце - 24, а не 22.



П.С. Программа теперь выдлядет так:


читать дальше »




Код:

Код: Выделить всё

Uses Crt;
Var a, b, y, z: Integer;
  begin
   TextBackGround(1); ClrScr;
   a:=0; b:=0; y:=0; z:=0;
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('10');
   Writeln ('20');
   Writeln ('');
   Readln (y);
  case y of
   1:inc(a, 10);
   2:inc(a, 20);
  end;
   If a=10 Then
    begin
     ClrScr;
     Writeln ('?');
     Writeln ('');
     Writeln ('1');
     Writeln ('2');
     Writeln (''); Readln (y);
    end;
   case y of
    1:inc(b, 1);
    2:inc(b, 2);
    end;
   If a=20 Then
   begin
   ClrScr;
   Writeln ('?');
   Writeln ('');
   Writeln ('1');
   Writeln ('2');
   Writeln ('');
   Readln (y);
   end;
  case y of
   1:inc(b, 1);
   2:inc(b, 2);
  end;
   z:=a+b;
   ClrScr;
   Writeln('= ',z);
   Readln;
 end.
Аватара пользователя
lxa85

Re: Разное - [решено] Программа в Pascal

Сообщение lxa85 »

asus a9rp, расписываю твой код по структурам, убирая лишнее. У тебя просто идет нарушение операторных скобок



Код:

Код: Выделить всё

Uses Crt;
Var a, b, y, z: Integer;
  begin
//инициализация переменных
   a:=0; b:=0; y:=0; z:=0;
   ClrScr;
//ввод  Y
   Readln (y);
  case y of --------начало case
   1:inc(a, 10);
   2:inc(a, 20);
  end; ------------- конец case
-------------------------------------------------------------------------------------------------------  
 If a=10 Then 
    begin -------------------------------------------------
     Writeln (''); Readln (y);
    end; --------------------------------------------------
---------if Кончился здесь! --------
------------не зависимый от if a=10 блок, т.е. тело программы --------------
   case y of
    1:inc(b, 1);
    2:inc(b, 2);
    end;
----------------------------------
-----второй if 
   If a=20 Then    begin
   ClrScr;
   Readln (y);
   end;
-------------------------------
----y от второго if тут не учитывается ---------------
  case y of
   1:inc(b, 1);
   2:inc(b, 2);           
  end;
---------------------------
-------дальше прочие действия---------
   z:=a+b;
   ClrScr;
   Writeln('= ',z);
   Readln;
 end.

выделенные куски повторяются. С тем же успехом их можно было написать вместе. if a = ___ на них не влияет.



p.s. потом добавлю наглядную схему
Аватара пользователя
asus a9rp

Re: Разное - [решено] Программа в Pascal

Сообщение asus a9rp »

Всё равно получилоссь то же. А Вы не могли бы просто взять мою программу и отредактировать без коментариев (что-бы скопировав и вставив он запустилась). И если есть возможность, то проверьте её, поделуйса, что-бы съэкономить время. Буду очень признателен.
Аватара пользователя
lxa85

Re: Разное - [решено] Программа в Pascal

Сообщение lxa85 »

lxa85, Огромнейшее спасибо! Всё работает.


Цитата lxa85:



Cтуденчество, совсем думать обленилось!
Разное - [решено] Программа в Pascal




Извините, но Вы меня просто не правильно поняли. У меня просто ничего не получалось как-бы я не пробовал и не понимал, в чём проблема. Вот и пришлось попросить у Вас. То, что было написано перед Вами давало тот же результат. Оказалось, что у меня было промерно так:



Код:

Код: Выделить всё

If a=10 Then
 begin
 end;
Case y of
end;

А надо было так:



Код:

Код: Выделить всё

If a=10 Then
 begin
Case y of
end;
end;

Теперь я всё понял.

Последний вопрос, но уже не по программе, а по самому Паскалю.

При копитовании из Паскаля в ОСь или наоборот, русские буквы заменяются вопросиками. Возможно ли это изправить?



П.С. Я не студент, а шольник (8-й класс). Изображение
Ответить

Вернуться в «Программирование и базы данных»