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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2012, 19:34   #1
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
Лампочка массивы в delphi 7

Всем привет! За себя решать не прошу, прошу только помощи разобраться, т.к. самуому интересно!
Есть задачка:
"Составить программу для вычисления

F = C + A/10+B/(10-C+A)

где A - номер первого нулевого элемента двумерного массива 3*4;
B - сумма элементов массива с нечетными номерами;
C - количество элементов массива, больших D ( ввести D с коонсоли )."

Самый главный пока вопрос, что такое "номер первого нулевого элемента двумерного массива", по искав ничего не нашел, возможно не там искал...

Так вот начал писать то, что по легче, создал массив, заполнил вывел, все нормально, решил подсчитать сумму нечетных элементов не получилсь, что то, не выводит сумму только последнее не четное число или ноль... что не правильно написал?

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  randomize;
  For i:=1 to 3 do
  For j:=1 to 4 do
  begin
  //StringGrid1.Cells[i,j]:=inttostr(random(100));
  mas[i,j]:=random(100); // - заполнил массив случайными числами
  //mas:= [i,j];
  s:= 0; // - переменная в которой будет считаться сумма
  if mas[i,j] mod 2 = 1 // - если элемент массива не делится на 2
    then s:=s+mas[i,j] // - тогда прибавляем его к занчению переменной S
      else ShowMessage('нет'); // - иначе вывожу сообщение, ну это я для себя убедился что он делит
  //Label2.Caption:= IntToStr(s); // для себя, проверяю выводит не четные числа
  StringGrid1.Cells[i,j]:=inttostr(mas[i,j]); // - поочередно заполняю ячейки в таблице
  End;
  Label2.Caption:= IntToStr(s); // по задумке должно вывестись сумма

end;
Naposaram вне форума Ответить с цитированием
Старый 18.02.2012, 19:41   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Начальное значения s в цикле то зачем присваивается? Вынести за пределы цикла перед 1-ым FOR
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.02.2012, 20:59   #3
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Цитата:
Самый главный пока вопрос, что такое "номер первого нулевого элемента двумерного массива", по искав ничего не нашел, возможно не там искал...
Ну, допустим, есть у тебя массив array[1..3,1..3]of integer:
Код:
5  12 17
34  5  9
0  17  0
Первый нулевой элемент: [3,1].
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 18.02.2012, 23:55   #4
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Начальное значения s в цикле то зачем присваивается? Вынести за пределы цикла перед 1-ым FOR
Оооо... точно спс =)

Цитата:
Ну, допустим, есть у тебя массив array[1..3,1..3]of integer:
Код:

5 12 17
34 5 9
0 17 0

Первый нулевой элемент: [3,1].
Угу... понятно, в твоей матрице понятно... а если такого типа будет:

0 58 12
0 26 1
0 17 0

Ну всякое же в жизни бывает =D, в этой матрце первый нулевой [1,1]?

1 58 0
0 5 68
11 0 7

А здесь [3,4]?

Последний раз редактировалось Naposaram; 19.02.2012 в 00:02.
Naposaram вне форума Ответить с цитированием
Старый 19.02.2012, 00:53   #5
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,377
По умолчанию

К вопросу о
Цитата:
Самый главный пока вопрос, что такое "номер первого нулевого элемента двумерного массива"
а) Двухмерный массив в памяти - одномерный: строка1, строка2 и т.д.
б) Принято просматривать матрицу строками (по умолчанию).
в) Вполне возможно, что правило просмотра матрицы следовало бы определить точно, для исключения догадок.
Т.о.
1 58 0
0 5 68
11 0 7

Тут первый нулевой - (1,3)

Как то так, думаю ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 19.02.2012, 11:01   #6
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
К вопросу о

а) Двухмерный массив в памяти - одномерный: строка1, строка2 и т.д.
б) Принято просматривать матрицу строками (по умолчанию).
в) Вполне возможно, что правило просмотра матрицы следовало бы определить точно, для исключения догадок.
Т.о.
1 58 0
0 5 68
11 0 7

Тут первый нулевой - (1,3)

Как то так, думаю ...
Ксати а как номер его определить? =D или он так и будет [i,j]? А если делать перебор со сравнение массива, то он же будет смотреть по столбцам, значит на до из массива вытаскивить строки, тут уже для меня сложновато =(
дуамю должно выглядить так:
Код:
For i:=1 to 3 do
 if i = 0 the howMessage(IntToStr(i));

Последний раз редактировалось Naposaram; 19.02.2012 в 11:24.
Naposaram вне форума Ответить с цитированием
Старый 19.02.2012, 12:35   #7
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,377
По умолчанию

Номер элемента - это произведение номера строки на длину строки плюс номер элемента в строке:
D=i*n+j.

Следующая часть вопроса не понята


Где то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 19.02.2012, 13:39   #8
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Номер элемента - это произведение номера строки на длину строки плюс номер элемента в строке:
D=i*n+j.

Следующая часть вопроса не понята


Где то так ...
Ух ты а я и незнал что по формуле надо... тогда получается

1 58 0
0 5 68
11 0 7

D = 1*3+3, номер перврого нулевого элемента = 6...
а если нулевой элемент на второй строке тогда D = 2*4+1?

Вторая часть вопроса: для того что бы найти ноль в массиве надо организовать поиск по строчно т.к. изначально поиск будет проходить по столбцам на сколько я понял?

Последний раз редактировалось Naposaram; 19.02.2012 в 14:16.
Naposaram вне форума Ответить с цитированием
Старый 20.02.2012, 09:26   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
if mas[i,j] mod 2 = 1 // - если элемент массива не делится на 2
в задании говорится про НОМЕР элемента, а не его ЗНАЧЕНИЕ!
Цитата:
B - сумма элементов массива с нечетными номерами;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.02.2012, 17:28   #10
Naposaram
Пользователь
 
Регистрация: 22.11.2008
Сообщений: 52
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
в задании говорится про НОМЕР элемента, а не его ЗНАЧЕНИЕ!
Точно а я и не заметил но от этого легче не стало...

Другой вопрос как идет номерация массива, построчно или по столбцам?
Naposaram вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi. Массивы glack18 Помощь студентам 5 21.04.2011 12:36
Массивы в Delphi Sianessa Помощь студентам 8 20.01.2010 14:25
Delphi - массивы dForm Помощь студентам 2 30.11.2009 17:57
Delphi массивы Misty Помощь студентам 2 25.05.2009 07:51
Массивы Delphi Tesa Помощь студентам 1 06.10.2008 22:33