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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2011, 15:55   #1
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
По умолчанию ошибка в одномерном массиве Delphi

Доброго времени суток!
Помогите с ошибкой.
программа запускается но при клике нахождение номера минимального элемента выдает ошибку

Project 1.exe raised exception class EConvertError with message "is not a valid integer value". Process stoped. Use Step or run to Continue.

вот этой части кода я так понимаю

Код:
procedure TForm1.Button4Click(Sender: TObject);
var
  min: integer; // номер минимального элемента массива
  i: integer; // номер элемента, сравниваемого с минимальным
begin
  mas[i] := StrToInt(StringGrid1.Cells[i-0,1]);
  // поиск минимального элемента
  min:=1; // пусть первый элемент минимальный
  for i :=2 to N do
    if mas[i] < mas[N] then
      min:= i;
  // вывод результата
  Edit1.text:='Минимальный элемент массива:'
    + IntToStr(mas[min]) +'Номер элемента:'+ IntToStr(min);
end;

end.
и вот исходник приложил.
Вложения
Тип файла: rar 1.rar (196.6 Кб, 7 просмотров)
Op1nG.Spark вне форума Ответить с цитированием
Старый 05.12.2011, 16:08   #2
Rik_Igle
Пользователь
 
Регистрация: 03.12.2011
Сообщений: 10
По умолчанию

Код:
var
  min: integer; // номер минимального элемента массива
  i: integer; // номер элемента, сравниваемого с минимальным
begin
  mas[i] := StrToInt(StringGrid1.Cells[i-0,1]);
  // поиск минимального элемента
  min:=1; // пусть первый элемент минимальный
Как оно вообще создает массив?

И у тебя неправильное условие в строчке:
Код:
if mas[i] < mas[N] then
Rik_Igle вне форума Ответить с цитированием
Старый 06.12.2011, 07:45   #3
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
По умолчанию

Цитата:
Сообщение от Rik_Igle Посмотреть сообщение
Код:
var
  min: integer; // номер минимального элемента массива
  i: integer; // номер элемента, сравниваемого с минимальным
begin
  mas[i] := StrToInt(StringGrid1.Cells[i-0,1]);
  // поиск минимального элемента
  min:=1; // пусть первый элемент минимальный
Как оно вообще создает массив?

И у тебя неправильное условие в строчке:
Код:
if mas[i] < mas[N] then



массив создается другим кодом это лишь часть программы которая не работает....
а какое условие поставить?
Op1nG.Spark вне форума Ответить с цитированием
Старый 06.12.2011, 08:07   #4
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Вопрос - в гриде есть пустые ячейки? Можете выложить скрин заполнения грида при котором вылазит эта ошибка?

P.S. скорее всего в этом и проблема, используйте StrToIntDef, чтобы не возникало таких ошибок, т.е. вместо
Код:
mas[i] := StrToInt(StringGrid1.Cells[i-0,1]);
использовать
Код:
mas[i] := StrToIntDef(StringGrid1.Cells[i,1],0);
P.P.S. Еще Вы забыли использовать цикл для заполнения массива, изначально i=0, а в самом начале Вы заполняете массив одним значением:
Код:
begin
  mas[i] := StrToInt(StringGrid1.Cells[i-0,1]); //mas[0]:=StrToInt(StringGrid1.Cells[0,1])
надо:

Код:
for i:=1 to N do
  mas[i] := StrToInt(StringGrid1.Cells[i,1]);
благодарность - сюда (не забываем писать от кого)

Последний раз редактировалось Zer0; 06.12.2011 в 08:11.
Zer0 вне форума Ответить с цитированием
Старый 06.12.2011, 17:07   #5
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
По умолчанию

работает после изминения но элемент не самый меньшии выдает.

Последний раз редактировалось Op1nG.Spark; 06.12.2011 в 17:16.
Op1nG.Spark вне форума Ответить с цитированием
Старый 06.12.2011, 17:56   #6
Op1nG.Spark
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 28
По умолчанию

ваще шляпа получилась в индексах запутался я .после твоих изминении он начал работать но не совсем правильно .он пишет номер элемента 18 например минимальный элемент и какой это элемент.а номер 19 это и элемент иногда лишь правильно выдает чаще ошибочно(не самый минимальный)

если не сложно посмотри исходник.
там в исходнике нет вывода для суммы но это не суть(просто дописать Edit).главное вот с индексами разобраться бы мне...ваааще запутался(((((((
и элемент не минимальный находит
Op1nG.Spark вне форума Ответить с цитированием
Старый 07.12.2011, 14:41   #7
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

Вы бы скинули тот код, который у Вас сейчас получился, чтобы видеть, может Вы где-то что-то не так поняли или добавили лишнего
И в очередной раз попрошу часть кода, где объявляется массив
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в одномерном массиве проверить наличие хотя бы одного отрицательного четного числа. (Delphi) kvm-08 Помощь студентам 2 20.06.2011 08:29
пв одномерном массиве... Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 4 13.05.2011 19:53
Группа в одномерном массиве BaronVik Помощь студентам 5 21.10.2010 05:58
Произведение отрицательных элементов в одномерном массиве - в чём ошибка? Жека:) Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 06.04.2009 16:10
Поиск в одномерном массиве Joxter Помощь студентам 6 13.12.2008 14:19