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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2011, 22:32   #1
dubailand
Пользователь
 
Регистрация: 16.01.2011
Сообщений: 65
По умолчанию Что исправить в коде?

Добрый вечер! Сегодня поставили задачу переписать прогу на делфи с паскаль. В данной задаче на паскаль были использованы массив, процедуру. Проблема заключается в переписывании процедуры.

Код:
var
x,y,z,b,c,q,e,g,r,v:integer;

procedure data(a,P:integer);
const
m:array [1..13] of integer = (0,31,59,90,120,151,181,212,243,273,304,334,365);
var
i,k,v,d,v1,v2:integer;
begin
     v:=0;
     if (P mod 4=0) and ((P mod 100<>0) or (P mod 400=0)) then v:=1;
     for i:=1 to 12 do
     begin
          if i=1 then begin v1:=0; v2:=0; end;
          if i=2 then begin v1:=0; v2:=v; end;
          if i>2 then begin v1:=v; v2:=v; end;
          if (a>m[i]+v1) and (a<=m[i+1]+v2) then k:=i;
     end;
     if k<=2 then v2:=0;
     if k>2 then  v2:=v;
     d:=a-m[k]-v2;
     write(d,'.',k,'.',p);
end;

begin
     write('Vvedite god ');
     read(y);
     if (y mod 4 = 0) and ((y mod 100 <> 0) or (y mod 400 = 0)) then v:=1
                                                                else v:=0;
     q:=(19+15) mod 30;
     g:=(24+6) mod 7;
     e:=94+q+g+v;
     data(e-56,y);writeln;
end.
Тоесть процедура преобразовывает числа, а вторая часть обращается к ней с числом для преобразования. Попытался преобразовать в делфи и натворил
Код:
procedure Pasha;
var
x,y,z,b,c,q,e,g,r,v:integer;
procedure data(a,P:integer);
const
m:array [1..13] of integer = (0,31,59,90,120,151,181,212,243,273,304,334,365);
var
i,k,v,d,v1,v2:integer;
begin
     v:=0;
     if (P mod 4=0) and ((P mod 100<>0) or (P mod 400=0)) then v:=1;
     for i:=1 to 12 do
     begin
          if i=1 then begin v1:=0; v2:=0; end;
          if i=2 then begin v1:=0; v2:=v; end;
          if i>2 then begin v1:=v; v2:=v; end;
          if (a>m[i]+v1) and (a<=m[i+1]+v2) then k:=i;
     end;
     if k<=2 then v2:=0;
     if k>2 then  v2:=v;
     d:=a-m[k]-v2;
     write(d,'.',k,'.',p);
end;

begin
     write('Vvedite god ');
     read(y);
     if (y mod 4 = 0) and ((y mod 100 <> 0) or (y mod 400 = 0)) then v:=1
                                                                else v:=0;
     z:=y mod 4;
     b:=y mod 7;
     c:=y mod 19;
     q:=(19*c+15) mod 30;
     g:=(2*z+4*b+6*q+6) mod 7;
     e:=94+q+g+v;
     Forml.Label40.Caption=data(e,y);
end.
И получил ошибку
Код HTML:
[Pascal Error] Unit2.pas(1): Unable to invoke Code Parameters due to errors in source code
Что мне сдесь исправить? Заранее благодарю!
dubailand вне форума Ответить с цитированием
Старый 11.03.2011, 23:25   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1)
Цитата:
Код:
write('Vvedite god ');
     read(y);
допустимы только в консольном приложении.
У Вас же, судя по Forml.Label40.Caption - обычное виндовое с формами.

2) присвоение как в Pascal, так и в Delphi производится через :=
Цитата:
Код:
Forml.Label40.Caption=data(e,y);
3) Как можно присвоить ПРОЦЕДУРУ?!
Вы в коде на Паскаль видите, чтобы data(e-56,y) чему-нибудь присваивалось?!


Скажите честно, программу на Pascal не Вы писали?!..
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно кое-что исправить в коде Fonochka Помощь студентам 7 27.12.2010 20:20
Исправить ошибку в коде на С !!!!! Dgarul Помощь студентам 0 31.05.2010 22:36
Помоготе исправить ошибку в коде Operator-cn Общие вопросы C/C++ 4 22.10.2009 23:40
Что исправить в коде? lider24816 Помощь студентам 6 26.05.2009 19:31
Подскажите что исправить в коде Grisha248 Помощь студентам 5 25.05.2009 03:00