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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.03.2009, 01:48   #1
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
Восклицание Определить сумму и количество четных элементов массива

Есть задача, определить сумму и колличество четных элементов массива, состоящего из 8 элементов.
вот что написал я
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
p: array[1..8] of integer;
i,s: integer;
begin
for i:=0 to 8  do
p[i]:=strtoint(stringgrid1.cells[i,0]);
If (p[i] mod 2 = 0) then
s:=s+p[i];

Label1.caption:=  'Сумма четных чисел'+inttostr(s)

end;


end.
, проверьте, правильно? программа выдает ошибку...не здоровую
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 05.03.2009, 02:18   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

По порядку:
Код:
p: array[1..8] of integer;
............................
for i:=0 to 8  do
Массив из 8-ми элементов, а в цикле перебираете девять.

Код:
p[i]:=strtoint(stringgrid1.cells[i,0]);
Первое значение i = 0, а элемента с таким индексом нет.

Код:
s:=s+p[i];
s не проинициализировано. Так что в ответе будет бред.

Код:
for i:=0 to 8  do
p[i]:=strtoint(stringgrid1.cells[i,0]);
If (p[i] mod 2 = 0) then
s:=s+p[i];
If вне цикла, поэтому проверит только один раз.

=======================
Исправленный вариант:
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
p: array[1..8] of integer;
i,s: integer;
begin
for i:=1 to 8 do       // добавил для проверки.
 stringgrid1.Cells[i-1,0] := IntToStr(i);

s := 0;

for i:=1 to 8  do
 begin
 p[i]:=strtoint(stringgrid1.cells[i-1,0]);
 If (p[i] mod 2 = 0) then
  s:=s+p[i];
 end;

Label1.caption:=  'Сумма четных чисел '+inttostr(s);

end;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.03.2009, 17:26   #3
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
По умолчанию

Огромное спасибо, вот что значит писать ночью... =)
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 05.03.2009, 17:37   #4
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
По умолчанию

stringgrid1.Cells[i-1,0] := IntToStr(i);
для какой проверки?, тоесть проверяем ячейку массива на наличие числа?
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 05.03.2009, 17:42   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от KREGI
для какой проверки?
Просто заполняю stringgrid числами от 1 до 8.
Чтобы вручную не вводить.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 05.03.2009 в 17:46.
Sazary вне форума Ответить с цитированием
Старый 05.03.2009, 17:48   #6
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
По умолчанию

ну я это отключу, мну нужно именно мои числа...
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 05.03.2009, 17:57   #7
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
По умолчанию

Sazary огромное тебе спасибо =)
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 05.03.2009, 18:10   #8
KREGI
Форумчанин
 
Аватар для KREGI
 
Регистрация: 29.11.2008
Сообщений: 333
По умолчанию

Скажи пожайлуста а почему именно p[i]:=strtoint(stringgrid1.cells[i-1,0]);
интересует то что в [i-1,0]. тоесть почему i-1
Если помог - Весы слева
KREGI вне форума Ответить с цитированием
Старый 05.03.2009, 18:14   #9
TOJluK
Пользователь
 
Аватар для TOJluK
 
Регистрация: 13.08.2008
Сообщений: 14
По умолчанию

Цитата:
Сообщение от KREGI Посмотреть сообщение
Скажи пожайлуста а почему именно p[i]:=strtoint(stringgrid1.cells[i-1,0]);
интересует то что в [i-1,0]. тоесть почему i-1
В StringGrid ячейки от 0 до X, а цикл от 1 до 8.
TOJluK вне форума Ответить с цитированием
Старый 05.03.2009, 18:16   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Нумерация в stringgrid идет с нуля.
Поэтому, т.к. в цикле идет от 1 до 8, нужно отнимать единицу.
С таким же успехом можно было написать
Код:
p: array[0..7] of integer;
и цикл
Код:
for i:=0 to 7  do
Тогда ничего отнимать не нужно.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для массива определить сумму всех элементов, стоящих после максимального HECTOR.A. Паскаль, Turbo Pascal, PascalABC.NET 4 17.06.2009 22:04
Найти сумму, пр-ние и кол-во элементов массива Zid@ne Общие вопросы C/C++ 4 28.01.2009 19:58
Найти сумму квадратов отрицательных элементов массива bbk_serg Помощь студентам 7 21.01.2009 12:33
Подсчитать количество элиментов массива принадлежащих интервалу[-1;2] и определить их сумму Liver Помощь студентам 1 11.12.2008 12:23
Дан массив из N элементов (чисел),определить количество элементов кратных 3. Woha Общие вопросы C/C++ 2 08.12.2008 13:12