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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2012, 14:14   #1
Erlotaza
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 37
По умолчанию Совсем легкий вопрос по массиву Delphi

Почему я не могу ввести нецелое число, например, 4,5 ???
ВОТ КОД ЗАДАЧИ (нужно определить суммарный объем перевозок грузов за день.) :::
program Project2;

{$APPTYPE CONSOLE}
type
KAMAZ=array[1..5] of real;
var
i:integer; S:real; V:KAMAZ;

begin
{ TODO -oUser -cConsole Main : Insert code here }
S:=0;
for i:=1 to 5 do
begin
Writeln('vvedite obiem perevozok ',i,'-go kamaza');
readln(v[i]);
S:=S+v[i];
end;
writeln(' S=',S:5:1); readln;
end.

И кстати, я не понимаю, что нужно вводить в скобках массива [1..5] что будет 5 в данном случае, это диапазон чего?
Вот, например, при смене счетчика с 5 на 10 программа будет просить ввести объемы перевозок для 10 грузовиков, это понятно. А вот диапазон массива...Что он определяет?
Благодарствую.
Erlotaza вне форума Ответить с цитированием
Старый 09.03.2012, 14:23   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Почему я не могу ввести нецелое число, например, 4,5 ???
Возможно, проблема в том, что ваш компьютер в качестве десятичного разделителя использует не запятую, а точку. Попробуйте вводить не 4,5, а 4.5

Цитата:
И кстати, я не понимаю, что нужно вводить в скобках массива [1..5] что будет 5 в данном случае, это диапазон чего?
То, что записывается в скобках, это диапазон индексов элементов массива (в вашем случае индексы изменяются от 1 до 5).
Вадим Мошев вне форума Ответить с цитированием
Старый 09.03.2012, 15:42   #3
Erlotaza
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 37
По умолчанию

"Возможно, проблема в том, что ваш компьютер в качестве десятичного разделителя использует не запятую, а точку. Попробуйте вводить не 4,5, а 4.5" - Да так оно и есть Спасибо!

НО:
"То, что записывается в скобках, это диапазон индексов элементов массива (в вашем случае индексы изменяются от 1 до 5)."
Это как? В скобках постоянно указывать такой же диапазон как потом в цикле?
Вот я слегка поменял программу (нужно вналчале самому ввести количество грузовиков) и независимо от того сколько я ввиду ДИАПАЗОН В МАССИВЕ [1..5] я так и оставлял и программа всё равно работает. Так что же он паказывает? (я так и не понял=(( )

program Project2;

{$APPTYPE CONSOLE}
type
KAMAZ=array[1..5] of real;
var
i,n:integer; S:real; V:KAMAZ;

begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln('vvedite kolichestvo gruzovikov');
readln(n);
S:=0;
for i:=1 to n do
begin
Writeln('vvedite obiem perevozok ',i,'-go kamaza');
readln(v[i]);
S:=S+v[i];
end;
writeln(' S=',S:5:1); readln;
end.
Erlotaza вне форума Ответить с цитированием
Старый 09.03.2012, 15:54   #4
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

если диапазон масива [1..5] меньше чем ваше n... то при попытке ввода элемента 5 + 1 вам должно выдасть ошибку... для подобных случаев используют динамические масивы... но на начальной стадии обучения чаще всего попросту ставят изначально большую размерность... при попытке ввода 6 элемента ошибка будет ввиду того, что не выделена память под элементы...
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 09.03.2012, 16:01   #5
Базиля
Участник клуба
 
Аватар для Базиля
 
Регистрация: 03.12.2009
Сообщений: 1,013
По умолчанию

VIK_aka_TOR
Речь идет (как я понял) о делфи. Тут разрабочтки решили учесть и если происходит выход за границы диапазона массива, то соответсвующей ошибки показано не будет. А элемент попросту запишется в соответствующую ячейку, таким образом диапазон увеличится, а отсюда следует что выделяется большая память под массив. (такая же система и в С,С++).
А вот например в паскале такое уже не пройдет.

Последний раз редактировалось Базиля; 09.03.2012 в 16:07.
Базиля вне форума Ответить с цитированием
Старый 09.03.2012, 16:06   #6
Erlotaza
Пользователь
 
Регистрация: 13.02.2012
Сообщений: 37
По умолчанию Ответ

Оооо.. Спасибо!
Понял.
Erlotaza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Легкий вопрос о idHTTP и XML kettanaito Работа с сетью в Delphi 3 01.12.2011 01:42
Легкий вопрос pinkiller Общие вопросы C/C++ 3 03.11.2011 13:23
Вопрос в php мониторенге легкий. makar3000 PHP 3 05.03.2011 22:35
Ответе бысто на легкий вопрос... t13sto Паскаль, Turbo Pascal, PascalABC.NET 2 28.05.2008 21:39
очень легкий вопрос ♠STO♠ Общие вопросы Delphi 5 15.07.2007 00:14