Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Pascal (Паскаль)

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 119, средняя оценка - 4.77
Oman
4 / 4 / 0
Регистрация: 07.11.2010
Сообщений: 29
#1

Error 39: Ordinal expression expected - Pascal

07.11.2010, 18:41. Просмотров 15946. Ответов 12
Метки нет (Все метки)

______________________________________________________
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
Program lr3var21;
Var x,y:real;
Begin
Writeln('vvedite argument');
Readln(x);
Case x of 1..9999: y:=sqrt(x);
                      0: y:=sqrt(x);
           -9999..-1: begin x:=-x;
                                  y:=sqrt(x);
                          end;
Writeln(y);
Readln;
End.
_________________________________________________________

Что не так??
Пишет:
Нужно выражение перечисляемого типа (Error 39: Ordinal expression expected.)

Что это значит?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2010, 18:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Error 39: Ordinal expression expected (Pascal):

Ошибка Ordinal expression expected - Pascal
Найдите ошибку, данная функция расположена в модуле function perevod(Row:string):string; // перевод строчных букв в заглавные var...

Error 85: '';'' expected. - Pascal
интересует вот этот кусочек ...... read(b); if b=32 then a:=1; a:=1 else a:=0; a:=0; ..... при компиляции перед else ставит...

программа не запускается выдает Error 36 begin expected - Pascal
Program V_Prizma; Uses Crt; Read Function Vp(x1,y1,z1,x2,y2,z2,x3,y3,z3:Integer):Integer; Begin Write ...

Error "(" expected - Pascal
При компилировании выдает "(" expected после 2й DT, хотя вроде всё норм. uses crt; function ST(x1,y1,x2,y2,x3,y3:real):real; ...

syntax error ":" expected but "(" found - Pascal
Составить новый вектор из неуникальных элементов исходного вектора. где 1 там и выдается ошибка var a,b: array of integer; ...

Оператор Case. Error: Ordinal expression expected - Lazarus
Столкнулась с проблемой, суть которой не пойму. Почему одна и та же процедура, одного и того же проекта в одном случае проходит компилятор,...

12
SuPeR XaKer
2841 / 1970 / 377
Регистрация: 23.09.2010
Сообщений: 4,877
07.11.2010, 18:44 #2
Не знаю что ты пытаешься сделать но вот:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program lr3var21;
Var y:real;
x:integer;
Begin
Writeln('vvedite argument');
Readln(x);
Case x of
1..9999: y:=sqrt(x);
0: y:=sqrt(x);
-9999..-1:
begin
x:=-x;
y:=sqrt(x);
end;
end;
Writeln(y);
Readln;
End.
0
Oman
4 / 4 / 0
Регистрация: 07.11.2010
Сообщений: 29
08.11.2010, 02:23  [ТС] #3
Цитата Сообщение от SuPeR XaKer Посмотреть сообщение
Не знаю что ты пытаешься сделать но вот:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program lr3var21;
Var y:real;
x:integer;
Begin
Writeln('vvedite argument');
Readln(x);
Case x of
1..9999: y:=sqrt(x);
0: y:=sqrt(x);
-9999..-1:
begin
x:=-x;
y:=sqrt(x);
end;
end;
Writeln(y);
Readln;
End.
Как же может быть ошибка в фразе, наскоко я знаю там можно писать что угодно =\
Курсор то мигает перед of
Не знаю что ты пытаешься сделать...
Напишите программу, которая выводит сообщение о том, какое значение у квадратного корня в зависимости от значения аргумента (при отрицательном значении аргумента результат – комплексное число, если аргумент равен 0 (или 1), то результат также 0 (или 1), при положительном значении – результат положительный). В начале программы необходимо вывести список с вариантами значений аргумента с соответствующими номерами (аргумент меньше, больше или равен 0). Если введено число, не соответствующее номеру из списка, выведите сообщение об ошибке (используйте ветвь else).
0
Roof
154 / 154 / 10
Регистрация: 03.11.2010
Сообщений: 393
08.11.2010, 04:30 #4
2 Oman:
1) погляди внимательно. x - может быть только целочисленного, если ты его используешь как case x of. И в примере, который дал SuPeR XaKer:
Pascal
1
2
3
...
x:integer;
...
2) после всего блока case - всегда ставится end; - у тебя end; только один, который завершает предыдущий begin, но не case.
1
Mad_Dog
Фрилансер
448 / 429 / 27
Регистрация: 01.06.2010
Сообщений: 1,315
08.11.2010, 10:15 #5
А не проще ли вот все это

Pascal
1
2
3
4
5
6
7
8
9
Case x of
1..9999: y:=sqrt(x);
0: y:=sqrt(x);
-9999..-1:
begin
x:=-x;
y:=sqrt(x);
end;
end;
написать так
Pascal
1
y:=sqrt(abs(x));
0
Ignhotep
6 / 6 / 1
Регистрация: 01.04.2010
Сообщений: 86
08.11.2010, 12:44 #6
Первая строка с названием программы кагбе намекает на то, что это лабораторка, скорее всего на использование case of, исходя из текста задачи.
0
Blizzart
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 18
30.12.2010, 20:19 #7
У меня такая же ошибка, только с integer не прокатывает.
В общем нужно определить, в зависимости от введенного знака, какое действие выполнять:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Program lab6_2;
var s,x,y:integer; selektor,z:string;
begin
WriteLn('Введите первое число');
ReadLn (x);
WriteLn('Введите второе число');
ReadLn (y);
WriteLn(x,'?',y);
WriteLn('Введите один из знаков *,+,-');
ReadLn (z);
case selektor of
z:=*: s:=x*y;
z:=+: s:=x+y;
z:=-: s:=x-y;
    else WriteLn('Ошибка. Повторите еще раз.');
end;
WriteLn (s);
readln;
end.
добавил кавычки к знакам- не помогло
0
SuPeR XaKer
2841 / 1970 / 377
Регистрация: 23.09.2010
Сообщений: 4,877
30.12.2010, 20:43 #8
Pascal
1
2
3
4
5
6
case selektor of
'*': s:=x*y;
'+': s:=x+y;
'-': s:=x-y;
    else WriteLn('ГЋГёГЁГЎГЄГ*. Ïîâòîðèòå ГҐГ№ГҐ Г°Г*Г§.');
end;
Pascal
1
selector:char;
Может стоит книжку открыть?
WriteLn('Введите один из знаков *,+,-');
ReadLn (z);
на
Pascal
1
2
WriteLn('Введите один из знаков *,+,-');
ReadLn (selector);
1
Blizzart
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 18
30.12.2010, 21:21 #9
Спасибо, что мне помогаете. Если говорить про книжку, то я читаю о php и js, а паскаль - это просто надо сделать и больше не возвращаться )) хотя 4 года назад я тоже так думал, а вот вернулся
0
isq123
Сообщений: n/a
23.11.2011, 22:11 #10
у меня такая же ошибка
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
var s:string;i,a,b:integer;
begin
writeln('Введите формулу');
readln(s);
for i:=1 to length(s) do
 if not(s[i] in ['0'..'9','a'..'z','A'..'Z','/','*','+','-','(',')'])
  then begin writeln('error');readln;halt;end
 else
  if s[i]='(' then a:=a+1
   else
    if s[i]=')' then b:=b+1;
 if a<>b then begin writeln('error');readln;halt;end
  else
for i:=1 to length(s) do
if s[i] in ['+)','-)','*)','/)','(/','(*','(+','(-','-+']  
then begin writeln('error');
else writeln('Формула правильная',s)
end.
Задание: вводится формула нужно проверить её на правильность(количиство скобок правильность символов и т.п)
ошибку выбивает тут
Pascal
1
['+)',
на запятой
log(n)
107 / 107 / 32
Регистрация: 13.10.2011
Сообщений: 227
23.11.2011, 22:39 #11
Цитата Сообщение от isq123 Посмотреть сообщение
у меня такая же ошибка
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses crt;
var s:string;i,a,b:integer;
begin
writeln('Введите формулу');
readln(s);
for i:=1 to length(s) do
 if not(s[i] in ['0'..'9','a'..'z','A'..'Z','/','*','+','-','(',')'])
  then begin writeln('error');readln;halt;end
 else
  if s[i]='(' then a:=a+1
   else
    if s[i]=')' then b:=b+1;
 if a<>b then begin writeln('error');readln;halt;end
  else
for i:=1 to length(s) do
if s[i] in ['+)','-)','*)','/)','(/','(*','(+','(-','-+']  
then begin writeln('error');
else writeln('Формула правильная',s)
end.
Задание: вводится формула нужно проверить её на правильность(количиство скобок правильность символов и т.п)
ошибку выбивает тут
Pascal
1
['+)',
на запятой
Запустил в Pascal ABC .Net , исправил , работает.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var s:string;i,a,b:integer;
begin
writeln('Введите формулу');
readln(s);
for i:=1 to length(s) do
 if not(s[i] in ['0'..'9','a'..'z','A'..'Z','/','*','+','-','(',')'])
  then begin writeln('error');readln;halt;end
 else
  if s[i]='(' then a:=a+1
   else
    if s[i]=')' then b:=b+1;
 if a<>b then begin writeln('error');readln;halt;end
  else
for i:=1 to length(s) do
if s[i] in ['+)','-)','*)','/)','(/','(*','(+','(-','-+']  
then begin writeln('error'); end
  else writeln('Формула правильная ',s) 
end.
1
isq123
Сообщений: n/a
23.11.2011, 23:00 #12
Цитата Сообщение от log(n) Посмотреть сообщение
Запустил в Pascal ABC .Net , исправил , работает.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var s:string;i,a,b:integer;
begin
writeln('Введите формулу');
readln(s);
for i:=1 to length(s) do
 if not(s[i] in ['0'..'9','a'..'z','A'..'Z','/','*','+','-','(',')'])
  then begin writeln('error');readln;halt;end
 else
  if s[i]='(' then a:=a+1
   else
    if s[i]=')' then b:=b+1;
 if a<>b then begin writeln('error');readln;halt;end
  else
for i:=1 to length(s) do
if s[i] in ['+)','-)','*)','/)','(/','(*','(+','(-','-+']  
then begin writeln('error'); end
  else writeln('Формула правильная ',s) 
end.
запускаю в своем тп7 не работает никак

Добавлено через 11 минут
Скачал Pascal ABC 3.0 всеравно не работает
log(n)
107 / 107 / 32
Регистрация: 13.10.2011
Сообщений: 227
23.11.2011, 23:05 #13
Цитата Сообщение от isq123 Посмотреть сообщение
запускаю в своем тп7 не работает никак

Добавлено через 11 минут
Скачал Pascal ABC 3.0 всеравно не работает
в тп7 и не будет работать ведь в качестве значений нетипизированных констант можно использовать только числа и строки. А паскаль нужен "Pascal ABC .Net" 1.7 отсюда : http://pascalabc.net/downloads/P_ABCNETSetup17.exe
0
23.11.2011, 23:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2011, 23:05
Привет! Вот еще темы с ответами:

Ordinal expression expected - Turbo Pascal
Main.pas(7,5) Error: Ordinal expression expected Program zadacha340; var x,s,n:real; begin read(N); s:=0; for x:=1 to N do ...

ordinal expression expected - Free Pascal
Нужно вычислить сколько высокосных лет было в ХХ ст, если значения высокосного года делиться на 4, не делиться на 100, и делиться на 400. ...

Ошибка: Ordinal expression expected - Lazarus
Здравствуйте , прошу помощи , в в моей программе имеется строчка сс:integer; ///... cc:=ord(UTF8copy(word2,i-1,1))+1; и при...

Error: Ordinal expression - Free Pascal
procedure pr1(var mas:PTable; ns1,ns2:integer); var y,u:integer; c:TMas; begin for y:=1 to ns1 do ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru