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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2013, 23:50   #1
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
Восклицание Модули.

Ребята ,помогите найти причину ошибки
help.rar
1. файл VVod.pas - ввод и вывод масива файл под модуль
2-файл stat.pas-расчет формул так же модуль
3-файл Программа-это уже сама программа с вызовов этих модулей .
НО
пишет ошибку в readvek и writevek дальше не проверял.....хотя....
если запустить программу "оригинал" то она работает!!(это основа,я ее взял под изменения для модулей и т.д)
использую Паскаль ABC.NET. модули видит !!
dimka123 вне форума Ответить с цитированием
Старый 06.12.2013, 00:24   #2
Dush
Форумчанин
 
Регистрация: 29.09.2011
Сообщений: 116
По умолчанию

а что за ошибка?
Dush вне форума Ответить с цитированием
Старый 06.12.2013, 00:51   #3
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Dush Посмотреть сообщение
а что за ошибка?
Программа.pas(8) : Неправильный тип параметров подпрограммы
в строках readvec и writevec
Запустите и посмотрите
НО модуль написан без ошибок, т.е. он готов к использованию...проблема уже в проге..но ее не должно быть там(

Последний раз редактировалось dimka123; 06.12.2013 в 00:58.
dimka123 вне форума Ответить с цитированием
Старый 06.12.2013, 15:35   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

для начала уберите из "Программа.pas"
помеченную красным строчку:
Цитата:
Код:
Uses VVod,stat;
type vec = array[1..100]of real;
Var x,y,z:vec;
    mx,my,Sx,Sy,rxy,c:real;
    n:integer;
  begin;{//начало программы }
далее.
в модуле VVod
вы передаёте т.н. "массивы открытого типа"
Цитата:
Код:
Procedure readvec(n:integer;namevec:string; Var x:array of real); 
Procedure writevec(n:integer;namevec:string;Var x:array of real);
НедоПаскаль ABC, похоже, не понимает массивы такого типа!

Последний раз редактировалось Serge_Bliznykov; 06.12.2013 в 15:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.12.2013, 15:46   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

после таких корректировок запустилось:
VVod.pas
Код:
unit VVod;

interface
uses Stat;

procedure readvec(n: integer; namevec: string; var x: vec);
procedure writevec(n: integer; namevec: string; var x: vec);

implementation

procedure readvec(n: integer; namevec: string; var x: vec);
var i: integer;
begin;
  for i := 1 to n do
  begin;
    writeln('namevec', '[', i: 3, ']=');
    readln(x[i]);
  end;
end;

procedure writevec(n: integer; namevec: string; var x: vec);
var i: integer;
begin;
  for i := 1 to n do
    writeln('namevec', '[', i: 3, ']=', x[i]: 10: 5);
end;

end.
stat.pas
Код:
unit stat;
interface
type vec = array[1..100] of real;

function Summa(n: integer; x: vec): real;
function MO(n: integer; x: vec): real;
function KOR(n: word; x, y: vec): real;
function mulvec(n: word; x, y: vec): real;
procedure FZ(n: word; x, y: vec; r, C: real; var Z: vec);

implementation

function Summa(n: integer; x: vec): real;
var i: integer; S: real;
begin;
  S := 0;
  for i := 1 to n do
    S := S + x[i];
  Summa := S;
end; //конец функции Сумма

function MO(n: integer; x: vec): real;
begin
  MO := Summa(n, x) / n;
end; //конец функции мат.ожидания

function SKO(n: integer; var x: vec): real;
var i: integer; m, s: real;
begin;
  m := MO(n, x);
  for i := 1 to n do
    x[i] := sqr(x[i] - m);
  SKO := sqrt(Summa(n, x) / n);
end; //конец функции СКОz

function KOR(n: word; x, y: vec): real;
var mx, my: real; i: integer; Sx, Sy: real;
  xy: vec;
begin;
  mx := MO(n, x);
  my := MO(n, y);
  Sx := SKO(n, x);
  Sy := SKO(n, y);
  for i := 1 to n do
  begin
    xy[i] := (x[i] - mx) * (y[i] - my)
  end;
  KOR := Summa(n, xy) / (Sx * Sy);
end; //конец функции KOR

function mulvec(n: word; x, y: vec): real;
var i: integer; C: real;
begin;
  C := 0;
  for i := 1 to n do
    C := C + (x[i] * y[i]);
  mulvec := C
end; //клнец функции mulvec

procedure FZ(n: word; x, y: vec; r, C: real; var Z: vec);
var i: integer;
begin;
  for i := 1 to n do
    Z[i] := C * (x[i] + y[i]) - r * (x[i] - y[i])
end;

end.

Программа.pas
Код:
uses VVod, stat;
var x, y, z: vec;
  mx, my, Sx, Sy, rxy, c: real;
  n: integer;
begin; //начало программы
  write('n='); readln(n);
  readvec(n, 'X', x);
  readvec(n, 'Y', y);
  mx := MO(n, x);
  my := MO(n, y);
  Sx := SKO(n, x);
  Sy := SKO(n, y);
  rxy := KOR(n, x, y);
  C := mulvec(n, x, y);
  FZ(n, x, y, rxy, C, Z);
  writeln('ывод результатов');
  writevec(n, 'Z', z);
  writeln('MO(x)=', mx: 10: 5);
  writeln('MO(y)=', my: 10: 5);

  writeln('SKO(x)=', Sx: 10: 5);
  writeln('SKO(y)=', Sy: 10: 5);
  writeln('C=', C: 10: 5);
  writeln('r(x.y)=', rxy: 10: 5);
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.12.2013, 18:44   #6
dimka123
Пользователь
 
Регистрация: 25.12.2011
Сообщений: 96
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
после таких корректировок запустилось:
VVod.pas
Код:
unit VVod;

interface
uses Stat;

.
а зачем в модуле VVod использовать еще и модуль stat? если в интерфейсе мы пишем то что будем использовать в данном случае процедуры ввода и вывода
dimka123 вне форума Ответить с цитированием
Старый 07.12.2013, 00:50   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от dimka123 Посмотреть сообщение
а зачем в модуле VVod использовать еще и модуль stat? если в интерфейсе мы пишем то что будем использовать в данном случае процедуры ввода и вывода
чтобы это код
Цитата:
Код:
uses Stat;

procedure readvec(n: integer; namevec: string; var x: vec);
procedure writevec(n: integer; namevec: string; var x: vec);
отработал нормально.
Ведь именно в stat описан ип vec
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
библиотечные модули пользователя,модули CRT и DOS лерка:) Паскаль, Turbo Pascal, PascalABC.NET 0 08.01.2012 14:57
Модули Наташок Паскаль, Turbo Pascal, PascalABC.NET 1 06.10.2010 16:26
Модули phantom4eg Помощь студентам 9 20.04.2009 22:29
Модули. СИ. pif Помощь студентам 3 06.04.2009 01:00