Ошибка, рядовой !
Капитан

Модератор: Модераторы
Ошибка, рядовой !


nikolay61 писал(а): как написать прогарму ДО задачи

rudie писал(а):Помогите пожалуйста составить программу, чтобы числа выводились в виде такой таблицы, если не трудно с объяснениями что к чему:
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
var
  i, j: integer;
begin
  for i := 0 to 4 do begin
    for j := i downto 0 do write(j, ' ');
    writeln;
  end;
end.

vada писал(а):Капитан

uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;
BEGIN
writeln('x,y');
read(x,y);
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s); end;
'-': begin r:=x-y; writeln(r); end;
'*': begin d:=x*y; writeln(d); end;
'/': begin h:=x/y; writeln(h:2:3); end;
else writeln('Помилка');
end;
readln;
readln;
END.uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;
BEGIN
writeln('x,y');
readLN(x,y); // Лучше с LN - более наглядно
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s);//end;
'-': begin r:=x-y; writeln(r); //end;
'*': begin d:=x*y; writeln(d); //end;
'/': begin h:=x/y; writeln(h:2:3); //end;
else writeln('Помилка');
end; // на весь case надо только один end
readln;
// readln; - зачем второй readln в конце?
END.
var
  x, y: real;
  z: char;
begin
  write('Введите через пробелы два числа и знак операции: '); readln(x, y, z);
  case z of
    '+': writeln(x+y);
    '-': writeln(x-y);
    '*': writeln(x*y);
    '/': writeln(x/y);
    else writeln('Ошибочная операция.');
  end;
  readln;
end.
те "end"-ы не от "case"-а, а от составных операторов "begin end" в каждом из вариантов.PapaNT писал(а):на весь case надо только один end

Vadim писал(а):Никак! "прогарму" пишут только ПОСЛЕ задачи...

bormant писал(а):те "end"-ы не от "case"-а, а от составных операторов "begin end" в каждом из вариантов.
... в операторе if ... then ... else. Вот только не вижу тут я этого оператора... А вы?v-t-l писал(а):перед else ";" не ставится.

PapaNT писал(а):PapaNT
PapaNT писал(а):на весь case надо только один end
PapaNT писал(а):
- Код: Выделить всё
uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;
BEGIN
writeln('x,y');
readLN(x,y); // Лучше с LN - более наглядно
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s);//end;
'-': begin r:=x-y; writeln(r); //end;
'*': begin d:=x*y; writeln(d); //end;
'/': begin h:=x/y; writeln(h:2:3); //end;
else writeln('Помилка');
end; // на весь case надо только один end
readln;
// readln; - зачем второй readln в конце?
END.
А ведь работает и так. Почему первый раз не заработало не пойму. Может что-то с FPC. Я переустановил, попробовал и заработал и в этой версии сборки.
program OPERACII;
uses crt;
var x,y:integer;
s,d,r:longint;
h:real;
z:char;
i:byte;
label koka;
BEGIN
clrscr;
koka:
writeln('Введите х и у'); readln(x,y);
writeln('введите символ (-,+,*,/)'); readln(z);
case z of
'+': begin s:=x+y; writeln(s); end;
'-': begin r:=x-y; writeln(r); end;
'*': begin d:=x*y ;writeln(d); end;
'/': begin h:=x/y; writeln(h:3:3); end;
else writeln('Не тот знак ввели');
end;
writeln('Если дальше продолжить, жми 1, в противном случає - любую цифру'); readln(i);
if i=1 then GOTO koka else writeln('К О Н Е Ц');
readln;
END.
nikolay61 писал(а):КОД: ВЫДЕЛИТЬ ВСЁ
uses crt;
var x,y:integer;
s,r,d:longint;
h:real;
z:char;
BEGIN
writeln('x,y');
readLN(x,y); // Лучше с LN - более наглядно
writeln('z');
read(z);
case z of
'+': begin s:=x+y; writeln(s);//end;
'-': begin r:=x-y; writeln(r); //end;
'*': begin d:=x*y; writeln(d); //end;
'/': begin h:=x/y; writeln(h:2:3); //end;
else writeln('Помилка');
end; // на весь case надо только один end
readln;
// readln; - зачем второй readln в конце?
END.
  s:=0; k:=0;
  { считаем сумму и количество чётных чисел среди c1, c2, c3 }
  if c1 mod 2=0 then begin s:=s+c1; k:=k+1; end;
  if c2 mod 2=0 then begin s:=s+c2; k:=k+1; end;
  if c3 mod 2=0 then begin s:=s+c3; k:=k+1; end;
  if k=0 then
    writeln('Среди введённых чисел нет чётных.')
  else
    writeln('Сумма=', s, ', Количество=', k, ', Среднее=', s/k:4:4);
var
  c: array [0..2] of integer;
  i, s, k: integer;
begin
  repeat
    write('Введите три числа (через пробел): '); 
    readln(c[0], c[1], c[2]);
    s := 0; k := 0;
    for i := 0 to 2 do
      if c[i] mod 2 = 0 then begin
        s := s + c[i]; k := k + 1;
      end;
      if k = 0 then
        writeln('Среди введённых чисел нет чётных.')
      else
        writeln('Для чётных: Сумма=', s, ', Количество=', k, ', Среднее=', s/k:4:4);
    write('Введите 1 для продолжения или 0 для завершения: ');
    readln(i);
  until i = 0;
  writeln('Завершено, нажмите Enter.');
  readln;
end.


Вернуться в Обучение Free Pascal
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1