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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2012, 15:19   #1
barathrum
Новичок
Джуниор
 
Регистрация: 30.11.2012
Сообщений: 1
Печаль Турбо паскаль некорректно компилирует программу

Программа правильно компилируется через PascalABC.NET (результат выполнения программы ), но через турбо паскаль v.5, она выдает что попало, пример:
.
из-за чего такое может происходить?

исходный код:
Код:
program spiral;
uses crt;
var a:array[1..20,1..20]of integer;
    n,x,y,k,z,u:integer;
    f:real;
begin
clrscr;
write('n='); 
readln(n); 
f:=sqrt(n);
if frac(f)=0 then u:=trunc(f) else u:=trunc(f)+1; {находим размер массива}
if odd(u) then {для нечетного размера массива}
  begin
    x:=u div 2+1;y:=u div 2+1;
    k:=0;
    for z:=1 to u*u do {заполняем массив}
      begin
       a[x,y]:=z;
       case k mod 4 of {k (а точнее остаток от деления k на 4) указывает направление заполнение массива: вправо,вниз и т.д.}
       0:begin
         inc(y);
         if y=u-x+2 then inc(k);
         end;
       1:begin
         inc(x);
         if y=x then inc(k);
         end;
       2:begin
         dec(y);
         if y=(u-x+1) then inc(k);
         end;
       3:begin
         dec(x);
         if y=(x) then inc(k);
         end;
       end;
     end;
   end
else   {для четного}
   begin
     x:=u div 2;y:=u div 2;
     for z:=1 to u*U do
       begin
        a[x,y]:=z;
        case k mod 4 of
        0:begin
          inc(y);
          if y=(u-x+1) then inc(k);
          end;
        1:begin
          inc(x);
          if x=y then inc(k);
          end;
        2:begin
          dec(y);
          if y=(u-x) then inc (k);
          end;
        3:begin
          dec(x);
          if x=y then inc(k);
          end;
        end;
      end;
   end;
for x:=1 to u do
  begin
    for y:=1 to u do
    if a[x,y]>n then write(' ':4) else write(a[x,y]:4);      {вывод матрицы, заполнение пустых ячеек на экране}
    writeln;
  end;
readln
end.
barathrum вне форума Ответить с цитированием
Старый 30.11.2012, 18:40   #2
grandmixer
Пользователь
 
Аватар для grandmixer
 
Регистрация: 30.10.2012
Сообщений: 31
По умолчанию

хз, у меня твой код все норм в турбо паскале 7 работает
grandmixer вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составить на языке Турбо Паскаль программу обработки строк и двумерного массива. Wenia Паскаль, Turbo Pascal, PascalABC.NET 11 30.11.2012 09:47
Составить на языке Турбо Паскаль программу обработки одномерного массива (управление через меню) Wenia Паскаль, Turbo Pascal, PascalABC.NET 8 16.11.2012 08:47
Надо написать программу в турбо делфи язык паскаль консольное приложение Arkanar Помощь студентам 0 29.02.2012 08:20
не компилирует программу allx777 Паскаль, Turbo Pascal, PascalABC.NET 7 10.05.2011 18:20
Пожалуйста,помогите составить программу задачи на языке Турбо Паскаль-задача на функцию Jan Помощь студентам 1 07.01.2009 19:39