Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странности random 
V
    Опции темы
Hacknslash
Дата 2.3.2009, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Всем привет) Обычная ситуация: учеба-паскаль. Сел тут разбираться, написал следующее:
Код

program test;
uses crt;
type ta=array[1..1] of real;
var controller: char;
    n, counter: integer;
    arr: ^ta;
begin
     clrscr;
     randomize;
     repeat
           writeln('Enter n');
           readln(n);
           GetMem(arr, n * sizeof(real));
           for counter :=1 to n do
           begin
                arr^[counter] := random(100) - 50;
                write(arr^[counter]:2:0,' ');
           end;
           FreeMem(arr, n * sizeof(real));
     writeln('More? y/n');
     readln(controller);
     until controller = 'n';
end.


Тут я создаю динамический массив и хочу заполнить его случайными положительными и отрицательными числами. Проблема с отрицательными: вместо числа допустим (-32) на печать выводится 2^16 - 32;
При замене строчки:
Код

arr^[counter] := random(100) - 50;

на:
Код

arr^[counter] := random(100);
arr^[counter] := arr^[counter] - 50

проблема решается. Поэтому меня интересует почему именно такая фигня происходит) Заранее спасибо  smile 
PM MAIL   Вверх
Metalex
Дата 2.3.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 635
Регистрация: 22.10.2008
Где: Украина-ZPсity

Репутация: нет
Всего: нет



А разве в паскале есть динамические массивы?


--------------------
Don't let the system get you down.
PM WWW ICQ Skype   Вверх
volvo877
Дата 3.3.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Metalex @  2.3.2009,  22:24 Найти цитируемый пост)
А разве в паскале есть динамические массивы? 
А разве нет?

Цитата(Hacknslash @  2.3.2009,  19:36 Найти цитируемый пост)
меня интересует почему именно такая фигня происходит
Потому что надо:
Код
arr^[counter] := integer(random(100)) - 50;
(TypeCast к Integer-у заметил?)
PM MAIL   Вверх
Hacknslash
Дата 3.3.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 2.3.2009

Репутация: нет
Всего: нет



Цитата

(TypeCast к Integer-у заметил?)

Ага, разобрался! Проблема оказалась в том, что random на самом деле возвращает тип word, а не integer)

Цитата

А разве в паскале есть динамические массивы?

Я когда гуглил несколько раз натыкался на комменты на разных форумах, что в паскале их не существует) 

Спасибо, я тут еще появлюсь с глупыми вопросами))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0490 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.