Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 6
1

Выдает ошибку несоответвствия типа при попытке подключить написаный мною модуль

02.12.2012, 01:22. Показов 736. Ответов 11
Метки нет (Все метки)

Прогу запускаю в Pascal School Pack(в нем нет встроенной функции повер лол)
Вот модуль:

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
unit modlab8;
 
interface
type TIndex=1..30;
     TArray=array[TIndex] of real;
     TMatrix=array[TIndex] of TArray;
     TFunc=function(x,y:integer):integer;
var  k,l:TIndex;
     o:integer;
function Power(x,y:TIndex):integer;
procedure Fij(var x,y:TIndex;var p:TMatrix);
procedure OutPut(var x,y:TIndex;var p:TMatrix);
 
 
implementation
function Power;
var S,c,z,p:integer;
begin
     S:=1;
     if y>16 then
     begin
          z:=abs(y);
          p:=x;
          repeat
          c:=z mod 2;
          z:=z div 2;
          if c=1 then
          S:=S*p;
          p:=p*p
          until z<=0;
     end
     else
     begin
          o:=1;
          repeat
          S:=S*x;
          o:=o+1;
          until o=(abs(y)+1);
     end;
Power:=S;
end;
procedure Fij;
begin
     For k:=1 to x do
         For l:=1 to y do
         p[k,l]:=-2*(k/2-3.1)*(l-3.9)+Power(25,k)*l/Power(10,k)-10;
end;
procedure OutPut;
begin
     For k:=1 to x do
         begin
              writeln;
              For l:=1 to y do write(p[k,l]:4:4);
         end;
     writeln;
end;
END.
вот прога:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
program lab8;
uses Crt,modlab8;
type TIndex=1..30;
     TArray=array[TIndex] of real;
     TMatrix=array[TIndex] of TArray;
var  a,b:TMatrix;
     n,m:TIndex;
begin
clrscr;
write('Введите количество строк матрицы А,n=');
read(n);
writeln;
write('Введите количество столбцов матрицы А,m=');
read(m);
writeln;
Fij(n,m,a);
write('Матрица А:');
writeln;
OutPut(n,m,a);
end.
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.12.2012, 01:22
Ответы с готовыми решениями:

Хероку выдаёт ошибку H10 при попытке добавить модуль request
Всем привет, я создаю бота для Вк используя хероку сервер.Но когда я пытаюсь добавить модуль...

При попытке изменения типа раздела гибернации выдает ошибку ввода/вывода
Acronis Disk Director не помогает. В чем проблема?

При попытке компилировать выдает ошибку
Помогите, пожалуйста... Не получается запустить программу на C++ Builder 6.0 При попытке...

Выдает ошибку при попытке переадресации
Вообщем вот: &lt;form method=&quot;post&quot;&gt; &lt;input type=&quot;submit&quot; name=&quot;wwas&quot;&gt; &lt;/form&gt; &lt;? ...

11
32 / 32 / 19
Регистрация: 13.07.2011
Сообщений: 140
02.12.2012, 01:30 2
Во-первых, используйте теги для вставки кода в сообщении, а то сложно читать код
Во-вторых, укажите строку, где появляется ошибка
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 6
02.12.2012, 01:34  [ТС] 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
unit modlab8;
 
 interface
 type TIndex=1..30;
 TArray=array[TIndex] of real;
 TMatrix=array[TIndex] of TArray;
 TFunc=function(x,y:integer):integer;
 var k,l:TIndex;
 o:integer;
 function Power(x,y:TIndex):integer;
 procedure Fij(var x,y:TIndex;var p:TMatrix);
 procedure OutPut(var x,y:TIndex;var p:TMatrix);
 
 
 implementation
 function Power;
 var S,c,z,p:integer;
 begin
 S:=1;
 if y>16 then
 begin
 z:=abs(y);
 p:=x;
 repeat
 c:=z mod 2;
 z:=z div 2;
 if c=1 then
 S:=S*p;
 p:=p*p
 until z<=0;
 end
 else
 begin
 o:=1;
 repeat
 S:=S*x;
 o:=o+1;
 until o=(abs(y)+1);
 end;
 Power:=S;
 end;
 procedure Fij;
 begin
 For k:=1 to x do
 For l:=1 to y do
 p[k,l]:=-2*(k/2-3.1)*(l-3.9)+Power(25,k)*l/Power(10,k)-10;
 end;
 procedure OutPut;
 begin
 For k:=1 to x do
 begin
 writeln;
 For l:=1 to y do write(p[k,l]:4:4);
 end;
 writeln;
 end;
 END.
вот прога:

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 program lab8;
 uses Crt,modlab8;
 type TIndex=1..30;
 TArray=array[TIndex] of real;
 TMatrix=array[TIndex] of TArray;
 var a,b:TMatrix;
 n,m:TIndex;
 begin
 clrscr;
 write('Введите количество строк матрицы А,n=');
 read(n);
 writeln;
 write('Введите количество столбцов матрицы А,m=');
 read(m);
 writeln;
Fij(n,m,a);
 write('Матрица А:');
 writeln;
 OutPut(n,m,a);
 end.
ошибку выдаёт в строке
Pascal
1
Fij(n,m,a);
0
32 / 32 / 19
Регистрация: 13.07.2011
Сообщений: 140
02.12.2012, 01:45 4
Так, а какую ошибку выдает?
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 6
02.12.2012, 01:46  [ТС] 5
Ошибка 26: Несоответствие типа.
0
32 / 32 / 19
Регистрация: 13.07.2011
Сообщений: 140
02.12.2012, 01:50 6
Так, а в модуле, в разделе Implementation почему у процедур параметры не указываете?
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 6
02.12.2012, 01:56  [ТС] 7
Там у процедур вроде не нужно....я по примеру с этого же форума писал....а вот у функции надо поставить.
Сейчас проверю напишу поможет или нет.
Ссылка на пример:Подключаемые модули
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Unit DemoUnit;
 
Interface
 
{прототип процедуры}
Procedure Swap(var a,b:integer);
 
Implementation
 
{реализация процедуры}
Procedure Swap;
Var
  Temp:integer;
Begin
  Temp:=a;
  a:=b;
  b:=Temp;
end;
 
end.
0
32 / 32 / 19
Регистрация: 13.07.2011
Сообщений: 140
02.12.2012, 02:01 8
Попробуйте передавать в процедуру переменную не диапазонного типа, а целочисленную и в модуле указать тоже целый тип, потому что там диапазонный тип в принципе не нужен, я помню в свое время тоже мучился с этими диапазонами
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 6
02.12.2012, 02:06  [ТС] 9
Описание параметров в Implementation для функции или для функции и процедур проблемы не решило

Добавлено через 2 минуты
Цитата Сообщение от RamonN Посмотреть сообщение
Попробуйте передавать в процедуру переменную не диапазонного типа, а целочисленную и в модуле указать тоже целый тип, потому что там диапазонный тип в принципе не нужен, я помню в свое время тоже мучился с этими диапазонами
Вы имете подавать в программе или в модуле?
Если в программе то такая подача является обязательной

Добавлено через 2 минуты
Если всё же поменять Tindex в проге и модуле на integer то ошибка в том месте пропадает и появляется уже на переменной а которая задана через Tindex но убрать типы я не могу так как они обязательны....посоветуйте что-то еще
0
32 / 32 / 19
Регистрация: 13.07.2011
Сообщений: 140
02.12.2012, 02:17 10
Можно условие задачи почитать?
0
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 6
02.12.2012, 02:25  [ТС] 11
Задание номер один вариант 2
0
32 / 32 / 19
Регистрация: 13.07.2011
Сообщений: 140
02.12.2012, 03:02 12
Получилось убрать ошибку несоответствия типов убиранием var в модуле перед переменными в процедуре Fij, но возникает проблема с массивом, с массивом еще не разобрался)
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2012, 03:02

При попытке открытия файла выдаёт ошибку
Здравствуйте. Такая проблема - при попытке открытия файла выдаёт ошибку. using System; using...

Выдает ошибку при попытке регистрации пользователя
Когда пытаюсь зарегистрировать пользователя, выдается ошибка Fatal error: Call to undefined...

При попытке использовать PIL выдает ошибку
ImportError: The _imaging C module is not installed. На самом деле, я не знаю как правильно...

При попытке построить график выдает ошибку
Добрые вечер! Помогите с мапле 7 Выдает вот эту ошибку. Ниже ошибка и задание


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

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

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