Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Двумерный массив boolean.  (Прочитано 3182 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Двумерный массив boolean.
« : 30 Сентября 2009, 10:01:02 »
Делал олимпиадную задачу на паскале, использовал free pascal. Там есть массив 3000*3000 of boolean. В free pascal'e все пучком. Тестировал на borland pascale, он говорит что структура слишком большая :( Берет только ~ 200*200. Не факт что при проверке у них будет free pascal? а отправлять надо исходники. Как пожарно решить проблему? Сдавать сегодня. Можно еще на дельфине отправить. Пожалуйста помогите.

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #1 : 30 Сентября 2009, 10:16:05 »
В паскале я не силен, но на С/C++/C#/Java я бы упаковал булы в байты (сделал бы фантик) и даже не переписывал программу, которая уже есть.

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #2 : 30 Сентября 2009, 11:01:12 »
Вся проблема в том что у меня выбор из pascal/delphi. Кто на дельфине программировал -  может там можно подлиннее объявить?

Пользователь решил продолжить мысль 30 Сентября 2009, 11:48:02:
Фууу. Прокатило на дельфи под форточку :) А можно как-нибудь его и для виновского компилятора под паскаль запустить?
« Последнее редактирование: 30 Сентября 2009, 13:50:13 от Atilla »

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5750
  • Все по палатам!
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #3 : 30 Сентября 2009, 14:12:43 »
Может использовать динамический массив?
Извините, я все еще учусь

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #4 : 30 Сентября 2009, 15:46:58 »
Я просто не знаю что это... Хорошую ссылку не дадите?

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5750
  • Все по палатам!
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #5 : 30 Сентября 2009, 18:59:55 »
Извините, я все еще учусь

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #6 : 30 Сентября 2009, 19:05:44 »
Я просто кроме паскаля почти ни на чем ни программировал. А там массивы надо заранее объявлять, и вроде нет динамических массивов... Если я не прав - исправьте.

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5750
  • Все по палатам!
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #7 : 30 Сентября 2009, 19:09:14 »
кроме паскаля почти ни на чем ни программировал
И на Паскале не программировал! Это же азы. В букварь! >:(
Извините, я все еще учусь

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #8 : 30 Сентября 2009, 19:22:03 »
*Уже изучаю букварь*

Есть только один вопрос.

{$R-}
Type
  MyType=Word;
  MyArray=Array[1..1] of MyType;
  MyArrayPtr=^MyArray;
Var
  DynamicArray: MyArrayPtr;
  Count,
  I,Size: Word;
Begin
  Write('Число элементов массива: ');
  ReadLn(Count);

  Size:=Count*SizeOf(MyType);
  GetMem(DynamicArray,Size);
  For I:=1 to Count do DynamicArray^:=I;
  For I:=1 to Count do Write(DynamicArray^:4);

  FreeMem(DynamicArray,Size)
End.

Что хранится в переменной size, или точнее что выдает SizeOf(MyType). И что именно делает GetMem(DynamicArray,Size)? Только бить не сильно :)

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5750
  • Все по палатам!
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #9 : 30 Сентября 2009, 19:43:59 »
Это пример из DOSа, как я понимаю.
SizeOf(MyType) выдает размер типа MyType в байтах - так как здесь Word, то = 2.
GetMem(DynamicArray,Size) - резервирует в памяти область размером Size и присваивает ее адрес переменной DynamicArray. (для DOSa не более 64кбайт)
(А вообще-то, лучше почитать книжку - их в продаже по Паскалю хватает)
Извините, я все еще учусь

Оффлайн Sova777

  • Участник
  • *
  • Сообщений: 208
    • Просмотр профиля
    • Несколько слов о NetBeans C/C++ Pack'е
Re: Двумерный массив boolean.
« Ответ #10 : 30 Сентября 2009, 21:06:30 »
Такое было в DOS'е в начале-середине 90-x (http://en.wikipedia.org/wiki/Far_pointer). Неужели сейчас такое бывает? Ну разве при программировании на PalmOS.
Пользователь OpenSolaris 2008.11, Ubuntu 8.10, Windows XP. Mac OS X не нравится, стараюсь не использовать.

Оффлайн Protopopulus

  • Старожил
  • *
  • Сообщений: 1695
  • А чего вы так смотрите?..
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #11 : 30 Сентября 2009, 21:20:19 »
http://forum.sources.ru/index.php?showtopic=51192 - 15 секунд гугления. >:(
Если ты владеешь знаниями, то и знания владеют тобой. (с) Protopopulus

Оффлайн kss

  • Любитель
  • *
  • Сообщений: 88
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #12 : 30 Сентября 2009, 21:28:50 »
Делал олимпиадную задачу на паскале, использовал free pascal. Там есть массив 3000*3000 of boolean. В free pascal'e все пучком. Тестировал на borland pascale, он говорит что структура слишком большая :( Берет только ~ 200*200.

Borland Pascal под реальный режим DOS'а был, там память адресуется в пределах сегмента в 64 кб (но самих сегментов много). Соответственно, никакая структура не может быть размером больше сегмента. Так что тебе бы не помогли бы и динамические массивы. Зато можно работать с массивом указателей на одномерный массив boolean, то есть:
type
     TArrayOfBoolean = array[1..3000] of boolean;
     PArrayOfBoolean = TArrayOfBoolean;

var
    A: array[1..3000] of PArrayOfBoolean;

Соответственно, обращение к элементу такого массива будет производиться следующим образом: A[i]^[j] := True;

Оффлайн Atilla

  • Автор темы
  • Участник
  • *
  • Сообщений: 196
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #13 : 01 Октября 2009, 09:39:16 »
Мне прям страшно стало. Так мало знаю. Кто может подсказать очень хорошую книгу по олимпиадному программированию?

Оффлайн SergeyIT

  • Зануда.
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 5750
  • Все по палатам!
    • Просмотр профиля
Re: Двумерный массив boolean.
« Ответ #14 : 01 Октября 2009, 12:47:07 »
по олимпиадному программированию?
Для олимпиадого программирования, как я понимаю, язык не важен - важны алгоритмы.
А если изучать Паскаль, то
1. ищите книгу с описанием  Object Pascal.
2. можете сюда зайти http://www.delphikingdom.ru/ или на другие сайты по Паскалю
Извините, я все еще учусь

 

Страница сгенерирована за 0.019 секунд. Запросов: 21.