Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Общие вопросы Delphi
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 15.04.2019, 21:46   #1
Ислам99
Новичок
 
Регистрация: 15.04.2019
Сообщений: 1
Репутация: 10
По умолчанию list index out of bounds (0)

Не понимаю где у меня ошибка, по делфи новичок

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
SIZE=5; //Количество элементов массива.
var
i:integer; //Индекс элементов массива.
max:integer; //Текущее значение максимума.
min:integer; //Текущее значение минимума.
k:integer; //Счетчик чисел которые меньше предыдущих.
j:integer; //Счетчик чисел которые больше предыдущих.
Sr_arif:double; //Среднее арифметическое.
n:integer; //количество строк введенных в поле Memo.
a:array[1..SIZE]of integer;//массив.

begin

n:=Memo1.Lines.Count; //подсчет кол-ва строк введенных в поле Memo
//Если количество строк, введенных пользователем меньше 5 то
//выведем на экран сообщение об ошибке и выйдем из процедуры.
if n<SIZE then
begin
ShowMessage('Исходные данные не введены!');
Exit;
//выход из процедуры обработки события
end;
//Если количество введенных строк превышает размер массива то
//выведем сообщение об ошибке. Далее будем обрабатывать только
//первые 5 записей.
if n>SIZE then
begin
ShowMessage('Количество строк превышает размер массива.');
n:=SIZE;//будем вводить только первые SIZE строк
end;

//Перевод масcива строк в массив целых чисел.
for i:=1 to n do
a[i]:=StrToInt(Form1.Memo1.Lines[i-1]);

max:=a[1]; //Присвоим значение большего числа переменной max.
min:=a[1];//Присвоим значение меньшего числа переменной min.
j:=0;//Значение счетчика в ноль.
k:=0;//Значение счетчика в ноль.
Sr_arif:=0;
for i:=1 to SIZE do //Перебираем элементы массива.
begin
if a[i]>max then //Если текущий элемент больше max,
begin
max:=a[i]; //то присвоить его значение max
inc(j); //и увеличить значение счетчика на 1.
end;
if a[i]<min then //Если текущий элемент меньше min,
begin
min:=a[i]; //то присвоить его значение min,
inc(k); //увеличить значение счетчика на 1
Sr_arif:=Sr_arif+a[i]; //и прибавить его к текущему значению суммы.
end;
end;
if k<>0 then Sr_arif:=Sr_arif/k; //Вычисление среднего арифметического.

//Вывод количества чисел которые больше предыдущих.
ListBox1.Items[0]:=IntToStr(j);
//Вывод среднего арифметического чисел которые меньше предыдущих.
ListBox1.Items[1]:=FloatToStr(Sr_arif);//

end;

_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 15.04.2019 в 23:38.
Ислам99 вне форума   Ответить с цитированием
Старый 15.04.2019, 23:44   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,609
Репутация: 5617
По умолчанию

Цитата:
Сообщение от Ислам99 Посмотреть сообщение
Код:
//Вывод количества чисел которые больше предыдущих.
ListBox1.Items[0]:=IntToStr(j);
//Вывод среднего арифметического чисел которые меньше предыдущих.
ListBox1.Items[1]:=FloatToStr(Sr_arif);//
Так нельзя работать с элементами списка.

Почитайте как работать с TListBox. Например, первая ссылка по поиску - ТЫЦ
или на офф.сайте - ТЫЦ

замените эти строчки на такие, например:

Код:
   //Вывод количества чисел которые больше предыдущих.
   ListBox1.Items.Clear;
   ListBox1.Items.Add(IntToStr(j));
   //Вывод среднего арифметического чисел которые меньше предыдущих.
   ListBox1.Items.Add(FloatToStr(Sr_arif));
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 16.04.2019, 04:03   #3
northener
Профессионал
 
Регистрация: 15.07.2013
Сообщений: 1,506
Репутация: 477
По умолчанию

Лично я не понимаю зачем вообще нужно было выводить результаты в TListBox?
northener вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
list index out of bounds Bakdaulet Помощь студентам 9 22.06.2016 12:42
list index out of bounds (9) lord24 БД в Delphi 4 03.11.2015 10:36
List index of bounds(7) priamm Общие вопросы Delphi 7 14.05.2010 15:00
List index out of bounds (91) KoBRaAndrey Общие вопросы Delphi 6 25.12.2009 16:29


14:19.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru