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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2010, 21:58   #1
Estel
 
Регистрация: 28.05.2010
Сообщений: 3
По умолчанию Одномерный массив (Delphi)

Помогите пожалуйста с программой:

Известна температура каждого дня апреля. Определить самую теплую декаду (в апреле 3 декады по 10 дней), указав ее среднюю температуру. Учесть, что таких декад может быть две или три.

Сам пытался написать, но не выходит, подскажите в чем ошибка и способ ее исправления:

procedure TForm1.Button1Click(Sender: TObject);
const n=30;
Var i,imax:integer; max:real;
T:array[1..n] of integer;
S:array[1..3] of real;
begin
Randomize;
With StringGrid1 do begin
Cells[0,0]:='Номер';
Cells[1,0]:='1-ая декада';
Cells[2,0]:='2-ая декада';
Cells[3,0]:='3-ья декада';
For i:=1 to 10 do begin;
Cells[0,i]:=IntToStr(i);
T[1]:=-5+random(28);
Cells[1,i]:=FloatToStr(T[1]);
T[2]:=-5+random(28);
Cells[2,i]:=FloatToStr(T[2]);
T[3]:=-5+random(28);
Cells[3,i]:=FloatToStr(T[3]);
end;
end;
S[1]:=0;
S[2]:=0;
S[3]:=0;
For i:=1 to n do begin
case i of
1..10:S[1]:=S[i]+T[1];
11..20:S[2]:=S[i]+T[2];
21..30:S[3]:=S[i]+T[3];
end;
end;
For i:=1 to 3 do begin
S[i]:=S[i]/10;
end;
For i:=1 to 3 do if S[i]>max then begin
max:=S[i];imax:=i;
end;
Edit1.Text:=IntToStr(imax);
Edit2.Text:=FloatToStr(max);
end;
end.
Estel вне форума Ответить с цитированием
Старый 28.05.2010, 22:08   #2
Vikenty
Заслуженный флудер
Участник клуба
 
Аватар для Vikenty
 
Регистрация: 31.03.2010
Сообщений: 1,473
По умолчанию

какая именно ошибка "вылезает"
могу помочь ICQ: 612979261

Последний раз редактировалось Vikenty; 28.05.2010 в 22:11.
Vikenty вне форума Ответить с цитированием
Старый 28.05.2010, 22:18   #3
Estel
 
Регистрация: 28.05.2010
Сообщений: 3
По умолчанию

Не суммирует, берет только 10-ую строку, находит максимальное число и его среднее (делит на 10).
Estel вне форума Ответить с цитированием
Старый 29.05.2010, 06:21   #4
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

Код:
var
S:array[1..3,1..10] of real;
t:array[1..3] of real;
j,i,imax:integer;
begin
....................
for i:=1 to 3 do
for j:=1 to 10 do
t[i]:=t[i]+s[i,j]/10;
imax:=1;
For i:=2 to 3 do if t[i]>max then begin imax:=i;
end;
...........
Edit1.Text:=IntToStr(imax);
Edit2.Text:=FloatToStr(t[imax]);
...........
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
DoDge_VipeR вне форума Ответить с цитированием
Старый 29.05.2010, 11:55   #5
Estel
 
Регистрация: 28.05.2010
Сообщений: 3
По умолчанию

Переделал, но считает неправильно:

Var S:array[1..3,1..10] of real;
T:array[1..3] of real;
j,i,imax:integer; max:real;
begin
Randomize;
With StringGrid1 do begin
Cells[0,0]:='Номер';
Cells[1,0]:='1-ая декада';
Cells[2,0]:='2-ая декада';
Cells[3,0]:='3-ья декада';
For i:=1 to 10 do begin;
Cells[0,i]:=IntToStr(i);
T[1]:=-5+random(28);
T[2]:=-5+random(28);
T[3]:=-5+random(28);
Cells[1,i]:=FloatToStr(T[1]);
Cells[2,i]:=FloatToStr(T[2]);
Cells[3,i]:=FloatToStr(T[3]);
end;
end;
For i:=1 to 3 do
For j:=1 to 10 do
T[i]:=T[i]+S[i,j]/10;
imax:=1;
For i:=2 to 3 do if T[i]>max then begin imax:=i;
end;
Edit1.Text:=IntToStr(imax);
Edit2.Text:=FloatToStr(T[imax]);
end;
Estel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный массив в delphi d3[Z.oRg] Помощь студентам 7 18.06.2011 15:04
Одномерный массив в Delphi (Задача) Kawun Помощь студентам 10 18.06.2011 14:21
Пожалуйста помогите в Delphi задача на одномерный массив Женя V. Помощь студентам 6 15.05.2009 22:56
Delphi: Одномерный массив Sorinka Помощь студентам 3 28.04.2009 22:19
Программа в Delphi не хочет работать. (Одномерный массив). Kawun Помощь студентам 9 14.11.2008 16:26