Форум программистов, компьютерный форум CyberForum.ru
CyberForum.ru - форум программистов и сисадминов > >
Восстановить пароль Регистрация
 
Oman
Новичок
4 / 4 / 0
Регистрация: 07.11.2010
Сообщений: 28
07.11.2010, 18:41     Error 39: Ordinal expression expected   #1
______________________________________________________
Код 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.)

Что это значит?
AdAgent
Объявления
07.11.2010, 18:41    Error 39: Ordinal expression expected
SuPeR XaKer
Форумчанин
2826 / 1956 / 13
Регистрация: 23.09.2010
Сообщений: 4,887
07.11.2010, 18:44     Error 39: Ordinal expression expected   #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.
Oman
Новичок
4 / 4 / 0
Регистрация: 07.11.2010
Сообщений: 28
08.11.2010, 02:23  [ТС]     Error 39: Ordinal expression expected   #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).
Roof
Форумчанин
148 / 148 / 4
Регистрация: 03.11.2010
Сообщений: 394
08.11.2010, 04:30     Error 39: Ordinal expression expected   #4
2 Oman:
1) погляди внимательно. x - может быть только целочисленного, если ты его используешь как case x of. И в примере, который дал SuPeR XaKer:
Код Pascal
1
2
3
...
x:integer;
...
2) после всего блока case - всегда ставится end; - у тебя end; только один, который завершает предыдущий begin, но не case.
Mad_Dog
Фрилансер
439 / 420 / 1
Регистрация: 01.06.2010
Сообщений: 1,315
08.11.2010, 10:15     Error 39: Ordinal expression expected   #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));
AdAgent
Объявления
08.11.2010, 10:15    Error 39: Ordinal expression expected
Ignhotep
Форумчанин
6 / 6 / 1
Регистрация: 01.04.2010
Сообщений: 86
08.11.2010, 12:44     Error 39: Ordinal expression expected   #6
Первая строка с названием программы кагбе намекает на то, что это лабораторка, скорее всего на использование case of, исходя из текста задачи.
Blizzart
Новичок
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 18
30.12.2010, 20:19     Error 39: Ordinal expression expected   #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. 
добавил кавычки к знакам- не помогло
SuPeR XaKer
Форумчанин
2826 / 1956 / 13
Регистрация: 23.09.2010
Сообщений: 4,887
30.12.2010, 20:43     Error 39: Ordinal expression expected   #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);
Blizzart
Новичок
0 / 0 / 0
Регистрация: 29.12.2010
Сообщений: 18
30.12.2010, 21:21     Error 39: Ordinal expression expected   #9
Спасибо, что мне помогаете. Если говорить про книжку, то я читаю о php и js, а паскаль - это просто надо сделать и больше не возвращаться )) хотя 4 года назад я тоже так думал, а вот вернулся
isq123
Гость
Сообщений: n/a
23.11.2011, 22:11     Error 39: Ordinal expression expected   #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)
Форумчанин
106 / 106 / 2
Регистрация: 13.10.2011
Сообщений: 228
23.11.2011, 22:39     Error 39: Ordinal expression expected   #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.
isq123
Гость
Сообщений: n/a
23.11.2011, 23:00     Error 39: Ordinal expression expected   #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 всеравно не работает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 23:05    Error 39: Ordinal expression expected

Еще ссылки по теме:

Free Pascal Error: Ordinal expression

Pascal Error "(" expected

Free Pascal ordinal expression expected

Pascal Ошибка Ordinal expression expected

log(n)
Форумчанин
106 / 106 / 2
Регистрация: 13.10.2011
Сообщений: 228
23.11.2011, 23:05     Error 39: Ordinal expression expected   #13
Цитата Сообщение от isq123 Посмотреть сообщение
запускаю в своем тп7 не работает никак

Добавлено через 11 минут
Скачал Pascal ABC 3.0 всеравно не работает
в тп7 и не будет работать ведь в качестве значений нетипизированных констант можно использовать только числа и строки. А паскаль нужен "Pascal ABC .Net" 1.7 отсюда : http://pascalabc.net/downloads/P_ABCNETSetup17.exe
Yandex
Объявления
23.11.2011, 23:05    Error 39: Ordinal expression expected
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать новую тему
Опции темы

Текущее время: 16:13. Часовой пояс GMT +4.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.7 PL3
Copyright ©2000 - 2014, vBulletin Solutions, Inc.