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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 16:26   #11
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
она говорит, что не указаны максимальные размеры массива
Ну так и правильно говорит! кто вам сказал, что 1000 элементов это предел?
В паскале для задания максимального значения есть специальные переменные которые хранят в себе эти самые значения! И как сказал Utkin правильнее будет использовать MaxInt!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 23.06.2011, 16:29   #12
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

да,но если я пишу MaxInt,то в он компилирует,я нажимаю ран,а там он ничего мне не выдаёт и выйти из программы нажав на энтер я не могу,только если закрыть программу на крестик....
Novenkaja вне форума Ответить с цитированием
Старый 23.06.2011, 16:45   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

у Вас
Цитата:
Код:
write((T[h,z]/1000):15:3);
а правильно
Код:
write((T[z, h]/1000):15:3);
разницы никакой не видите?!

Теперь по поводу второго пункта...

Скажите честно. Вы изучаете TURBO PASCAL ?!!!
И Ваша учительница думает, что Вы под TurboPascal пишете код?!

Дело в том, что FreePascal генерит не DOS, а WINDOWS код. и поэтому памяти ему доступно ОЧЕНЬ много.

Объясните учительнице, что
при const Max = 50000;
все алгоритмы сортировки (и все варианты) выполняются примерно 30 секунд,

при const Max = 100000; - уже около 2-х минут.

посчитайте (даже если время будет расти пропорционально размеру массива),
сколько потребуется времени для сортировки массива размером
const Max = 70000000;
Это в 700 раз больше, чем тот, что выполнялся чуть более 2-х минут..
а 70000000 - это ЕЩЁ НЕ МАКСИМАЛЬНО ВОЗМОЖНЫЙ РАЗМЕР!!!!!

И попытайтесь как-то помягче донести эту мысль до Вашего преподавателя...



p.s. кстати, для создания обратноупорядоченного массива не надо сортировать всемя способами. Достаточно отсортировать ОДНИМ (любым) и переписать результат в два других. т.е. процедуры Change2 и Insert2 не нужны..
вот так примерно
Код:
begin
  Randomize;
  WriteLn('Zapolnenie matric sluchainymi chislami...');
  for h := 1 to Max do {otvet na 3-ij punkt,ot for  to end}
  begin
    t[1, 1] := Random(1000);
    a[h] := t[1, 1];
    b[h] := t[1, 1];
    c[h] := t[1, 1];
  end;


  WriteLn('Sortirovka sluchainoi matricy... ');
  t[1, 1] := GetTickCount; {GetTickCount-otve4ajet za milesekundi,perevod potom v sekundi}
  Select(a, max);
  t[1, 1] := GetTickCount - t[1, 1]; {otvet na 5-ij punkt,i vse posledujuwie GetTickCount}

  t[2, 1] := GetTickCount;
  Change(b, max);
  t[2, 1] := GetTickCount - t[2, 1];

  t[3, 1] := GetTickCount;
  Insert(c, max);
  t[3, 1] := GetTickCount - t[3, 1];

  WriteLn('Sortirovka otsortirovannoi matricy... ');
  t[1, 2] := GetTickCount;
  Select(a, max);
  t[1, 2] := GetTickCount - t[1, 2];

  t[2, 2] := GetTickCount;
  Change(b, max);
  t[2, 2] := GetTickCount - t[2, 2];

  t[3, 2] := GetTickCount;
  Insert(c, max);
  t[3, 2] := GetTickCount - t[3, 2];


  WriteLn('Podgotovka obratnouporyadochennoi matricy...');
  Select2(a, max);
  for i:=1 to Max do begin
    b[i] := a[i];
    c[i] := a[i];
  end;

  WriteLn('Sortirovka obratnouporyadochennoi matricy...');
  t[1, 3] := GetTickCount;
  Select(a, max);
  t[1, 3] := GetTickCount - t[1, 3];

  t[2, 3] := GetTickCount;
  Change(b, max);
  t[2, 3] := GetTickCount - t[2, 3];
  t[3, 3] := GetTickCount;
  Insert(c, max);
  t[3, 3] := GetTickCount - t[3, 3];

  write('      BbI6op              O6MeH        BCTABKu'); {otvet na 1-ij punkt}
  Writeln;
  for h := 1 to 3 do begin
    for z := 1 to 3 do
      write((T[z, h] / 1000): 15: 3); {otvet na 6-oj punkt}
    Writeln; end;
  readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.06.2011, 17:15   #14
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

как сказать,в универе мы работаем на Турбо,а дома имеем право работать на любом паскале,поэтому дома у меня Фрее.Турбо не поддерживает и вылетал часто,поэтома дома у меня один Паскаль,а в универе оработаю на другом

т.е.надо чтобы было uses crt ,а не uses windows???

спасибо,сейчас попробую
я поняла,что эти 500000 70000,Вы пытаетесь лонести,что максимальный размер огромен и его надо записать как МАксИНТ.Но почему тогда в ране не ховет ничего програмаа выдавать???
Novenkaja вне форума Ответить с цитированием
Старый 23.06.2011, 17:23   #15
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

хорошо,я поменяла всё,ток не понимаю теперь,а какие изменение произошли в ране???
Novenkaja вне форума Ответить с цитированием
Старый 23.06.2011, 18:36   #16
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
Но почему тогда в ране не ховет ничего програмаа выдавать???
Всё давольно логично! Дело в том, что мы действительно можем задать максимальную границу массива равную MaxInt, и это всё компилятор съест и слова не скажет! Но при запуске программы тебе может просто не хватить памяти! И программа зависнет, как в твоём случае! Попробуй поискать в интернете способ задания максимальной границы массива! Есть определённая функция или зарезервированная константа! Но к сожалению я её не помню! Точно знаю что такое описание массива я видел в учебнике Фаронова!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 23.06.2011, 18:42   #17
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

глупый вопрос но он напрашивается сам собой-а у тебя на руках нет этого учебника????


я поискала в нете,написано что максимальный размер,который обчно употребляют 2000,т.е. на 1000 больше,чем у меня...
Novenkaja вне форума Ответить с цитированием
Старый 23.06.2011, 18:52   #18
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:
глупый вопрос но он напрашивается сам собой-а у тебя на руках нет этого учебника????
На данный момент нет!
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Старый 23.06.2011, 19:06   #19
Novenkaja
Форумчанин
 
Регистрация: 29.12.2010
Сообщений: 176
По умолчанию

жаль....

ладно а можешь помочь с другим заданием?
Novenkaja вне форума Ответить с цитированием
Старый 23.06.2011, 19:13   #20
Hacker19_90
Delphi Warrior
Старожил
 
Аватар для Hacker19_90
 
Регистрация: 15.08.2008
Сообщений: 2,502
По умолчанию

Цитата:

ладно а можешь помочь с другим заданием?
Что за задание?
Mess with the best, die like the rest. (с) Hackers
Лабораторные, курсовые на Delphi\Pascal\C++
ya.flex-freelance@yandex.ru Icq - 636-954-303
Hacker19_90 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно доделать программу на паскале(двумерный массив) Venesia Помощь студентам 12 06.12.2010 19:28
Помогите доделать задание. fred9ra Общие вопросы C/C++ 1 11.01.2009 22:16
Помогите доделать задание в паскале! neomaximus Помощь студентам 4 23.06.2008 18:16
Помогите доделать задание в паскале neomaximus Помощь студентам 5 23.06.2008 14:35
Помогите доделать задание в паскале! neomaximus Помощь студентам 1 22.06.2008 09:45