Показать сообщение отдельно
Старый 02.06.2013, 19:36   #1
JlyHb92=)
AnyKey`щик
 
Регистрация: 02.06.2013
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Ошибка при программировании на Free pascal

Здравствуйте)
Написал код универсального калькулятора на Free pascal,
но он выдаёт ошибку при компелировании, даже указывает строку в которой ошибка, но я там ошибки не нашёл
Если я не правильно задал вопрос, то извините, первый раз на этом форуме.
Ошибка:
new 1.pas(64,3) Fatal: Syntax error, ";" expected but "ELSE" found
new 1.pas(0) Fatal: Compilation aborted

Помогите исправить код)
program Calkulytor;
Uses crt;
var a,b,d,x1,x2,k1,k2,k3:real; i:integer;
function power(x,y:real):real;
begin
repeat
begin
textbackground(7);
clrscr;
textcolor(1);
gotoxy (21,1);
writeln ('Выберете действие:');
writeln ('1.Сложение.');
writeln ('2.Вычитание.');
writeln ('3.Деление.');
writeln ('4.Умножение.');
writeln ('5.Вычисление кв.корня.');
writeln ('6.Возведение в степень.');
writeln ('7.Решение кв.уравнения.');
writeln ('8.Выход.');
readln (i);
 if (i=1) then
begin
 writeln ('Введите слагаемые:');
 readln (a,b);
 writeln ('Сумма = ',a + b);
 end
 else if (i=2) then
 begin
 writeln ('Введите уменьшаемое и вычитаемой:');
 readln (a,b);
 writeln ('Разность = ',a - b);
 end
 else if (i=3) then
 begin
 writeln ('Введите делимое и делитель:');
 readln (a,b);
 writeln ('Частное = ',a / b);
 end
 else if (i=4) then
 begin
 writeln ('Введите множители:');
 readln (a,b);
 writeln ('Произведение = ',a * b);
 end
 else if (i=5) then
 begin
 writeln ('Введите подкоренное число:');
 readln (a);
 writeln ('Ответ = ',sqrt(a))
 end
 else if (i=6) then
  begin
   if x=0 then Power:=0
   else if x>0 then Power:=exp(ln(x)*y)
   else Power:=-exp(ln(abs(x))*y);
  end;
  begin
   writeln ('Введите основание и показатель степени:');
   readln (x,y);
   writeln ('x^y',Power(x,y):0:3)
  end

  else if (i=7) then // В этой строке ошибка.

  begin
   writeln ('Введите коэффициенты:');
   readln (k1,k2,k3);

   d:= k2 * k2 - 4 * k1 * k3; //Вычисление дискриминанта

  if (d<0) then writeln ('Нет решения.')
  else if (d=0) then
    begin
      x1:= - k2 / (2 * k1);
      writeln ('X = ',x1:8:3);
    end
  else begin
      x1:= (- k2 + sqrt (d)) / (2 * k1);
      x2:= (- k2 - sqrt (d)) / (2 * k1);
      writeln ('X1 = ',x1:8:3,'X2 = ',x2:8:3);
   end;
  end
 else if (i=8) then i:=0
 else i:=0
writeln ('Нажмите "ENTER" для продолжения.');
readln;
end;

until i=0
textcolor(2);
writeln ('До свидания =) Автор Игорь (Лунь)');
writeln ('Версия 1.0');
writeln ('Press ENTER to exit');
readln;
end.
(Offline)
 
Ответить с цитированием