okasnab
?>

Выдаёт ошибку (встречено 'else', а ожидался оператор) что делать? ? program r ; var a, b, c, x, d, x1, x2: real ; begin readln (a, b, c) ; d: = a*(x*x)+b*x+c ; if d> 0 then x1: = (-b+sqrtd)/(2*a) ; x2: = (-b-sqrtd)/(2*a) ; else ('корней нет') ; if d=0 then x: = (-b+sqrtd)/(2*a) ; writeln ('x1=; x1) ; writeln ('x2=; x2) ; end.

Информатика

Ответы

Anastasiya
1. Исправьте условие

if D>0 then x1:= (-b+sqrtD)/(2*a) ;
x2:= (-b-sqrtD)/(2*a) ;
else ('Корней нет') ;

на
if D>0 then begin
  x1:= (-b+sqrt(D))/(2*a);
  x2:= (-b-sqrt(D))/(2*a);
end
else  writeln ('Корней нет') ;

и здесь:

if D=0 then x:= (-b+sqrtD)/(2*a) ;
writeln ('x1=;x1) ;
writeln ('x2=;x2) ;

на
if D=0 then begin
  x:= (-b+sqrt(D))/(2*a) ;
  writeln('x = ', x);
end;

writeln ('x1=',x1) ;
writeln ('x2=',x2) ;
 
krasnova1977
1) Все правильно, это и будет разность между максимумом и минимумом
program one;
var input,max,min:integer;
    i:integer;
begin
  readln(input);
  max:=input;
  min:=input;
  for i:=2 to 25 do begin
    readln(input);
    if input>max then max:=input;
    if input<min then min:=input;
  end;
  writeln(max-min);
end.

2) Гораздо проще не суммировать в цикле степени половины, а воспользоваться тем, что 1+\frac12+...+\frac1{2^n}=2-\frac1{2^n}.
program two;
var res:real;
    i,n:integer;
begin
  readln(n);
  res:=0.5;
  for i:=2 to n do res*=0.5;
  res:=2-res;
  writeln(res);
end.

3) Здесь существует несколько реализации; в частности, можно было просто считать число как строку и возвратить ее в перевернутом виде (ReverseString(s)), не заботясь о переполнении, однако я решил, что по логике задания нужно делать через числа. Впрочем, для выявления случаев переполнения все равно используется переворот строки
program three;
var a,b:int64; {можно использовать uint64, если в вашей среде Паскаля  этот тип поддерживается, тогда число в строке ниже надо заменить}
begin
  readln(a);
  if ReverseString(IntToStr(a))>'9223372036854775807' then writeln('Слишком много') else begin
    while a>0 do begin
      b:=10*b+a mod 10;
      a:=a div 10;
    end;
    writeln(b);
  end;
end.
Yekaterina
1) Все правильно, это и будет разность между максимумом и минимумом
program one;
var input,max,min:integer;
    i:integer;
begin
  readln(input);
  max:=input;
  min:=input;
  for i:=2 to 25 do begin
    readln(input);
    if input>max then max:=input;
    if input<min then min:=input;
  end;
  writeln(max-min);
end.

2) Гораздо проще не суммировать в цикле степени половины, а воспользоваться тем, что 1+\frac12+...+\frac1{2^n}=2-\frac1{2^n}.
program two;
var res:real;
    i,n:integer;
begin
  readln(n);
  res:=0.5;
  for i:=2 to n do res*=0.5;
  res:=2-res;
  writeln(res);
end.

3) Здесь существует несколько реализации; в частности, можно было просто считать число как строку и возвратить ее в перевернутом виде (ReverseString(s)), не заботясь о переполнении, однако я решил, что по логике задания нужно делать через числа. Впрочем, для выявления случаев переполнения все равно используется переворот строки
program three;
var a,b:int64; {можно использовать uint64, если в вашей среде Паскаля  этот тип поддерживается, тогда число в строке ниже надо заменить}
begin
  readln(a);
  if ReverseString(IntToStr(a))>'9223372036854775807' then writeln('Слишком много') else begin
    while a>0 do begin
      b:=10*b+a mod 10;
      a:=a div 10;
    end;
    writeln(b);
  end;
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Выдаёт ошибку (встречено 'else', а ожидался оператор) что делать? ? program r ; var a, b, c, x, d, x1, x2: real ; begin readln (a, b, c) ; d: = a*(x*x)+b*x+c ; if d> 0 then x1: = (-b+sqrtd)/(2*a) ; x2: = (-b-sqrtd)/(2*a) ; else ('корней нет') ; if d=0 then x: = (-b+sqrtd)/(2*a) ; writeln ('x1=; x1) ; writeln ('x2=; x2) ; end.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

vladburakoff5
Аношкина1696
lika080489
Devaunka40
Yuliya701
buhh20104519
gorbelena1971
gernovoy
modno-trikotazh
alvas12828646
anusha33325
Rufilya-Belov
re-art
mail66
Гарик383