Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2010, 21:33   #1
ne4kin
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 16
Сообщение Калькулятор на паскале

Код:
program Mycalculator; {Программа выполняет роль калькулятора}
uses crt;
var chislo1,chislo2,otvet:real; deistvie:char; stop:boolean; n:integer;
 begin
 stop:=false;
writeln('Выберете способ работы с числами: 1-арифметический, 2-аналитический');
if 1 then stop:=true;
 repeat
 clrscr;
 writeln('                     Арифметический способ:');
 writeln;
 writeln;
 read(chislo1); read(deistvie); read(chislo2);
   case deistvie of 
   '+' : otvet:=chislo1+chislo2;
   '-' : otvet:=chislo1-chislo2;
   '*' : otvet:=chislo1*chislo2;
   '/' : otvet:=chislo1/chislo2;
   'w' : if chislo1>chislo2 then writeln(chislo1); else writeln(chislo2); {Проверяет какое число больше и выводит его}
   writeln(otvet);
   end;
 if not stop then
 repeat
 clrscr;
 writeln ('                     Аналитический способ:');
 writeln;
 writeln;
 read(chislo1);
 write('Введите q для корня, w для степени, e для выхода из программы, s для sin, c для cos: '); readln(deistvie);
  case deistvie of 
  'q' : otvet:=sqrt(chislo1);
  'w' : begin
        writeln('Введите степень: ');
        readln(n);
        otvet:=chislo1;
        for i:=1 to no do otvet:=otvet*chislo1;
        END; 
  'e' : BREAK;
  's' : otvet:=sin(chislo1);
  'c' : otvet:=cos(chislo1);
  end;
 writeln(otvet);
end.
В чем ошибка? у меня в интерпретаторе ABSPascal выходит ошибка о том, что ожидался символ ":" .
Никак не могу понять. помогите!!!

Последний раз редактировалось Stilet; 04.12.2010 в 17:56. Причина: Была допущена ошибка при написании
ne4kin вне форума Ответить с цитированием
Старый 04.12.2010, 08:57   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Цитата:
в интерпретаторе ABSPascal
А что, для паскаля уже существуют интерпретаторы? Сколько я помню, паскаль компилируемый язык...
Используйте лучше Borland Pascal 7.0
_-Re@l-_ вне форума Ответить с цитированием
Старый 04.12.2010, 11:27   #3
ne4kin
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 16
По умолчанию

Поправка кода:
Код:
program Mycalculator; {MicroCalc}
uses crt;
var chislo1,chislo2,otvet:real; deistvie:char; stop:boolean; n,i:integer;sx:byte;
 begin
 clrscr;
 stop:=false;
writeln('Bbl6epuTe cnoco6 pa6oTbl: 1-APuFMETu4eski, 2-AHaLuTucheski');
readln(sx);
if sx=1 then stop:=true;
 repeat
 clrscr;
 writeln('                 APufMETu4eski:');
 writeln;
 writeln;
 read(chislo1); read(deistvie); read(chislo2);
   case deistvie of
   '+': otvet:=chislo1+chislo2;
   '-' : otvet:=chislo1-chislo2;
   '*' : otvet:=chislo1*chislo2;
   '/' : otvet:=chislo1/chislo2;
   'w' : if chislo1>chislo2 then writeln(chislo1) else writeln(chislo2); {Проверяет какое число больше и выводит его}
   end;
   writeln(otvet);
 until sx=0;

 if not stop then
 repeat
 clrscr;
 writeln ('                     AHALuTu4eski:');
 writeln;
 writeln;
 read(chislo1);
 write('q-sqrt, w-CTEnEHb, e=exit, s-sin,c-cos: '); readln(deistvie);
  case deistvie of 
  'q' : otvet:=sqrt(chislo1);
  'w' : BEGIN
        writeln('ENTER DEGREE: ');
        readln(n);
        otvet:=chislo1;
        for i:=1 to n do otvet:=otvet*chislo1;
        END; 
  'e' : BREAK;
  's' : otvet:=sin(chislo1);
  'c' : otvet:=cos(chislo1);
  end;
 writeln(otvet);

 until deistvie = 'm';
end.

Сейчас попробовал в borland pascal 7.0
Ошибка: error 10: unexpected end of file и указывает на последнюю строку
че делать(( ?


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось ne4kin; 04.12.2010 в 21:53.
ne4kin вне форума Ответить с цитированием
Старый 04.12.2010, 11:45   #4
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
че делать(( ?
поставить в конце программы
Код:
end.
И на какую строчку указывал компилятор в вашем первом варианте?
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 04.12.2010, 14:46   #5
ne4kin
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 16
По умолчанию

пробывал. тоже самое пишет
ne4kin вне форума Ответить с цитированием
Старый 04.12.2010, 15:19   #6
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
'w' : if chislo1>chislo2 then writeln(chislo1); else writeln(chislo2);
перед else точка с запятой не ставится
Цитата:
'w' : if chislo1>chislo2 then writeln(chislo1); else writeln(chislo2);
writeln(otvet);
end;
поменять местами, в данном случае end относится к case
и ещё у вас два repeat, но один until
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 04.12.2010, 15:22   #7
ne4kin
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 16
По умолчанию

то же самое выходит
ошибка та же
ne4kin вне форума Ответить с цитированием
Старый 04.12.2010, 15:41   #8
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
то же самое выходит
ошибка та же
А вы исправили?
Я всё-таки скопировал, добавил еще одни until с левым условием и компилятор со мной согласен
Цитата:
if sx=1 then stop:=true;
зачем нужна эта строчка? для арифм. способа? но он будет выполняться всегда
Цитата:
until deistvie = 'm';
почему, где видит пользователь m? что бы цикл завершился
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Старый 04.12.2010, 15:45   #9
ne4kin
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 16
По умолчанию

Цитата:
Сообщение от Niro Посмотреть сообщение
А вы исправили?
Я всё-таки скопировал, добавил еще одни until с левым условием и компилятор со мной согласен
где именно вы добавили? у меня ниче не получилось


Цитата:
Сообщение от Niro Посмотреть сообщение
until deistvie = 'm';
Если пользователь введет m то цикл завершается
ne4kin вне форума Ответить с цитированием
Старый 04.12.2010, 16:11   #10
Niro
Форумчанин
 
Аватар для Niro
 
Регистрация: 23.09.2010
Сообщений: 682
По умолчанию

Цитата:
где именно вы добавили?
ну например после
Цитата:
until deistvie = 'm';
Проще всего признать свою ошибку.
Гораздо труднее еЁ осознать и исправить.
Niro вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор на паскале Buratino Помощь студентам 14 10.10.2010 13:18
Калькулятор на паскале, продолжение действия tabber Помощь студентам 1 28.09.2010 18:33
Калькулятор на паскале Nastya55555 Помощь студентам 1 05.05.2010 22:37
Калькулятор на C++ stox11 Помощь студентам 2 09.02.2010 07:31
Калькулятор ViNcHeStEr Помощь студентам 5 23.11.2008 15:39