Ожидался порядковый тип паскаль ошибка что значит

Ошибка: ожидался порядковый тип Pascal Решение и ответ на вопрос 1722674

damka_00

0 / 0 / 0

Регистрация: 29.03.2015

Сообщений: 94

1

Ошибка: ожидался порядковый тип

27.04.2016, 20:22. Показов 42512. Ответов 3

Метки нет (Все метки)


Помогите исправить

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
  program Hw;
const
    m = 3;
 
var
    A: array[1..3] of real;
    B: array[1..3] of real;
    C: array[1..3] of real;
    D: array[1..3] of real;
    S: real;
    W: real;
    O: real;
    R: real;
    summA:real;
    summB:real;
    summC:real;
    summD:real;
    i: real;
    srtA:real;
    srtB:real;
    srtC:real;
    srtD:real;
 
begin
    for i := 1 to m do begin
    S:=random(11);
    W:=random(13);
    while W = S do W:=random(13);
    O:=random(14);
    while O = S or W do O:=random(14);
    R:=random(10);
    while R = S or W or O do R:=random(10);
    
        A[i]:=-10+S;
        write (A[i]:4,'   ');
        B[i]:=-10+W;
        write (B[i]:4,'   ');
        C[i]:=-10+O;
        write (C[i]:4,'   ');
        D[i]:=-10+R;
        writeln (D[i]:4,'   ');
        
      
    end;
    for i := 1 to m do
    summA:=summA+A[i];
    srtA:=summA/4;
    write (' ',summA);
    summB:=summB+B[i];
    srtB:=summB/4;
    write ('     ',summB);
    summC:=summA+C[i];
    srtC:=summC/4;
    write ('     ',summC);
    summD:=summD+D[i];
    srtD:=summD/4;
    write ('     ',summD);
 
end.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Хитрая блондиночка $)

1470 / 985 / 399

Регистрация: 21.12.2015

Сообщений: 3,785

27.04.2016, 20:34

2

Цитата
Сообщение от damka_00
Посмотреть сообщение

for i := 1 to m do begin

В этот цикл нельзя счетчиком передавать вещественное число. Либо делай i целочисленным, либо не используй for.



0



damka_00

0 / 0 / 0

Регистрация: 29.03.2015

Сообщений: 94

27.04.2016, 20:55

 [ТС]

3

Я уже и сам додумался сделать i целочисленным ,но спасибо за ответ.И как закрыть тему?

Добавлено через 13 минут
Другая проблема,он вычисляет неверное среднее значение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
 program Hw;
const
    m = 3;
 
var
    A: array[1..3] of integer;
    B: array[1..3] of integer;
    C: array[1..3] of integer;
    D: array[1..3] of integer;
    S: integer;
    W: integer;
    O: integer;
    R: integer;
    summA:real;
    summB:real;
    summC:real;
    summD:real;
    i: integer;
    srtA:real;
    srtB:real;
    srtC:real;
    srtD:real;
 
begin
    for i := 1 to m do begin
    S:=random(12);
    W:=random(57);
    while W = S do W:=random(57);
    O:=random(14);
    while O = S or W do O:=random(14);
    R:=random(10);
    while R = S or W or O do R:=random(10);
    
        A[i]:=S;
        write (A[i]:4,'   ');
        B[i]:=W;
        write (B[i]:4,'   ');
        C[i]:=O;
        write (C[i]:4,'   ');
        D[i]:=R;
        writeln (D[i]:4,'   ');
        
      
    end;
    for i := 1 to m do
    summA:=summA+A[i];
    srtA:=summA/3;
    write (' ',srtA);
    summB:=summB+B[i];
    srtB:=summB/3;
    write ('     ',srtB);
    summC:=summA+C[i];
    srtC:=summC/3;
    write ('     ',srtC);
    summD:=summD+D[i];
    srtD:=summD/3;
    write ('     ',srtD);
 
end.
 
[size="1"][color="grey"][I]Добавлено через 24 секунды[/I][/color][/size]
Другая проблема,он вычисляет неверное среднее значение  
 
 
 
 program Hw;
const
    m = 3;
 
var
    A: array[1..3] of integer;
    B: array[1..3] of integer;
    C: array[1..3] of integer;
    D: array[1..3] of integer;
    S: integer;
    W: integer;
    O: integer;
    R: integer;
    summA:real;
    summB:real;
    summC:real;
    summD:real;
    i: integer;
    srtA:real;
    srtB:real;
    srtC:real;
    srtD:real;
 
begin
    for i := 1 to m do begin
    S:=random(12);
    W:=random(57);
    while W = S do W:=random(57);
    O:=random(14);
    while O = S or W do O:=random(14);
    R:=random(10);
    while R = S or W or O do R:=random(10);
    
        A[i]:=S;
        write (A[i]:4,'   ');
        B[i]:=W;
        write (B[i]:4,'   ');
        C[i]:=O;
        write (C[i]:4,'   ');
        D[i]:=R;
        writeln (D[i]:4,'   ');
        
      
    end;
    for i := 1 to m do
    summA:=summA+A[i];
    srtA:=summA/3;
    write (' ',srtA);
    summB:=summB+B[i];
    srtB:=summB/3;
    write ('     ',srtB);
    summC:=summA+C[i];
    srtC:=summC/3;
    write ('     ',srtC);
    summD:=summD+D[i];
    srtD:=summD/3;
    write ('     ',srtD);
 
end.



0



capricornus CF

318 / 208 / 162

Регистрация: 08.12.2015

Сообщений: 863

27.04.2016, 22:35

4

Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
program Hw;
 
const
  m = 3;
 
var
  A, B, C, D: array[1..3] of integer;
  S, W, O, R, i: integer;   
  summA, summB, summC, summD, srtA, srtB, srtC, srtD: real;
 
begin
  for i := 1 to m do 
  begin
    S := random(12);
    W := random(57);
    while W = S do W := random(57);
    O := random(14);
    while O = S or W do O := random(14);
    R := random(10);
    while R = S or W or O do R := random(10);
    
    A[i] := S;
    write(A[i]:4, '   ');
    B[i] := W;
    write(B[i]:4, '   ');
    C[i] := O;
    write(C[i]:4, '   ');
    D[i] := R;
    writeln(D[i]:4, '   ');    
  end;
  
  for i := 1 to m do
  begin
    summA := summA + A[i];
    summB := summB + B[i];
    summC := summC + C[i];
    summD := summD + D[i];
  end;
  
  srtA := summA / 3;
  write(' ', srtA);  
  srtB := summB / 3;
  write('     ', srtB);  
  srtC := summC / 3;
  write('     ', srtC);  
  srtD := summD / 3;
  write('     ', srtD);
  
end.



0



Регистрация
29 Авг 2013
Сообщения
89
Репутация

0

Спасибо
0
Монет

0


  • #1

Var k,i,x,n:real;

begin;

for i:=1 to n+1 do

readln(k);

begin

k:=x-n/x-(n-1);

writeln (k)

end;

end.

выдаёт ошибку Program1.pas(4) : Ожидался порядковый тип

Регистрация
28 Июн 2013
Сообщения
52
Репутация

0

Спасибо
0
Монет

0


  • #2

Var k,x:real;
i,n: integer;

Регистрация
28 Авг 2013
Сообщения
80
Репутация

0

Спасибо
0
Монет

0


  • #3

Эта программа не могла работать!
Даже если i и n сделать переменными перечислимого типа, откомпилировать и запустить программу, то всё равно получите ошибку.
У вас будет ошибка деления на 0

Регистрация
28 Дек 2013
Сообщения
60
Репутация

0

Спасибо
0
Монет

0


  • #4

ну там же название программы первым писалось, извините 15 лет прошло. потом подключение модулей, а потом переменные.

Регистрация
21 Окт 2013
Сообщения
71
Репутация

0

Спасибо
0
Монет

0


  • #5

ну так ответ в самой ошибке — строка 4, ожидался порядковый тип.
Эх, паскаль… проверить все точки с запятыми первым делом. Почему нет всяких там юсесов? Где Програм Програм1?
Двадцать лет назад… какой же я старый…

Регистрация
21 Сен 2013
Сообщения
82
Репутация

0

Спасибо
0
Монет

0


  • #6

real — не перечислимый (порядковый) тип. А для переменной цикла нужен перечислимый.

Похожие темы

I need to run a loop for 10 billion times and failing to run it, please help me get this done. I am getting ordinal error.

program kittu;
    var i:qword;
        j:qword;
        k:qword;
begin
    i:= 10000000000;
    k:= 0;
    for j:=1 to i do
        begin
            k:=k+1;
        end;
    writeln(k);
    readln();
end.

MHosafy's user avatar

MHosafy

1763 silver badges12 bronze badges

asked Nov 23, 2017 at 2:31

2

From the FreePascal docs for this error message.

Error: Ordinal expression expected The expression must be of ordinal
type, i.e., maximum a Longint. This happens, for instance, when you
specify a second argument to Inc or Dec that doesn’t evaluate to an
ordinal value.

Your variable K is defined as qword, which is a 64-bit length. LongInt is 32 bit.

answered Nov 23, 2017 at 2:39

Sam M's user avatar

Sam MSam M

4,1184 gold badges25 silver badges41 bronze badges

1

The for statement is platform dependent.

Observation: qword is not supported to be used as a counter variable on 32-bit platform.

But seems no documentary support to tell which set of datatypes are supported to be used as counter variables.

Tried in both 32-bit and 64-bit platforms:

32-bit:
declaration of variable j could be changed to datatype dword to get it successfully compiled.
It is also required to compile with release mode to prevent getting an error due to overflow.

Compiler: Free Pascal IDE for Win32 for i386
Target CPU: i386
Version 1.0.12 2017/02/13
Compiler Version: 3.0.2
Environment: Win10

edit:
Successfully compiled with i386 free pascal with x86_64 cross compiler
on 64-bit Win10 (edit2: in the left hand side’s command line)

[Image]
Guess: the counter in for statement might be optimized with using registers. Under i386 configuration, qword is too large for a 32-bit register.

64-bit:
[Image]

But it seems to work fine in 64-bit platform.

Compiler: Free Pascal Compiler version 3.0.2 [2017/03/18] for x86_64
Environment: Mac OSX 10.11.6

answered Nov 23, 2017 at 12:35

user8415372's user avatar

3

I need to run a loop for 10 billion times and failing to run it, please help me get this done. I am getting ordinal error.

program kittu;
    var i:qword;
        j:qword;
        k:qword;
begin
    i:= 10000000000;
    k:= 0;
    for j:=1 to i do
        begin
            k:=k+1;
        end;
    writeln(k);
    readln();
end.

MHosafy's user avatar

MHosafy

1763 silver badges12 bronze badges

asked Nov 23, 2017 at 2:31

2

From the FreePascal docs for this error message.

Error: Ordinal expression expected The expression must be of ordinal
type, i.e., maximum a Longint. This happens, for instance, when you
specify a second argument to Inc or Dec that doesn’t evaluate to an
ordinal value.

Your variable K is defined as qword, which is a 64-bit length. LongInt is 32 bit.

answered Nov 23, 2017 at 2:39

Sam M's user avatar

Sam MSam M

4,1184 gold badges25 silver badges41 bronze badges

1

The for statement is platform dependent.

Observation: qword is not supported to be used as a counter variable on 32-bit platform.

But seems no documentary support to tell which set of datatypes are supported to be used as counter variables.

Tried in both 32-bit and 64-bit platforms:

32-bit:
declaration of variable j could be changed to datatype dword to get it successfully compiled.
It is also required to compile with release mode to prevent getting an error due to overflow.

Compiler: Free Pascal IDE for Win32 for i386
Target CPU: i386
Version 1.0.12 2017/02/13
Compiler Version: 3.0.2
Environment: Win10

edit:
Successfully compiled with i386 free pascal with x86_64 cross compiler
on 64-bit Win10 (edit2: in the left hand side’s command line)

[Image]
Guess: the counter in for statement might be optimized with using registers. Under i386 configuration, qword is too large for a 32-bit register.

64-bit:
[Image]

But it seems to work fine in 64-bit platform.

Compiler: Free Pascal Compiler version 3.0.2 [2017/03/18] for x86_64
Environment: Mac OSX 10.11.6

answered Nov 23, 2017 at 12:35

user8415372's user avatar

3

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

Читайте также:

  • Окат рукава меньше проймы как исправить
  • Ожидалось описание или begin как исправить
  • Оканчивая школу мне становилось грустно деепричастный оборот ошибка
  • Ожидалось имя типа паскаль ошибка
  • Оканчивая школу мне становилось грустно где ошибка

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии