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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 26.10.2008, 13:47   #1
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию Одномерный массив в Delphi (Задача)

Добрый день. Помогите пожалуйста с задачей в Delphi.

Условие задачи:
Разработать программу с единственным циклом для обработки одномерных массивов.
При заданных X1, X2 .... Xn найти отношение A / B, где
A = X1+X2+...+XN и B = X1*X2 .... *XN

Пожалуйста напишите код к этой задачке.
Это первая задачка с массивом которую мне задали, сам пытался написать - не ыходит

PS: Вот то, что пытался сам написать:

Код:
procedure TForm1.Button1Click(Sender: Tobject);
Const NMAX = 6; {Максимальное кол-во элементов массива}
Type TMas: Array [1..NMAX] of Real;
Var
X: TMas; {Исходный массив Х}
N: Integer; {Кол-во элементов массива X}
I: Integer; {Параметр цикла}
S: Real; {Сумма}
R: Real; {Результат}
begin
N:=StrToInt (EditN.TExt);
For I = 1 To N Do
begin
X[I]:=StrToFloat (StringGrid1.Cells [I-1, 0]);
End;
S:=0
For I:=1 To N Do
//Дальше не знаю что и делать :(

Последний раз редактировалось Kawun; 26.10.2008 в 13:59.
Kawun вне форума
Старый 26.10.2008, 14:01   #2
MyQwErTy
Пользователь
 
Аватар для MyQwErTy
 
Регистрация: 16.10.2008
Сообщений: 73
По умолчанию

Цитата:
сам пытался написать - не выходит
напиши текст программы который ты пытался написать
MyQwErTy вне форума
Старый 26.10.2008, 14:06   #3
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Цитата:
Сообщение от MyQwErTy Посмотреть сообщение
напиши текст программы который ты пытался написать
написал, в первое сообщение вставил. Написан не до конца т.к не знаю что делать дельше(
Kawun вне форума
Старый 26.10.2008, 16:15   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну почти всё уже написал! чуть-чуть осталось дописать!
и я рекомендую использовать имена переменных такие же, как задано в условиях задачи. для простоты понимания, так сказать ;-) хотя, это и не обязательно ;-)
Код:
var
  A,B : extended;
begin
...
 A := 0;
 B := 1;
 For I:=1 To N Do
 begin
   A:=A+X[i];
   B:=B*X[i];
 end;
 ShowMessage('Отношение A/B равно '+ FloatToStr(A/B));
Serge_Bliznykov вне форума
Старый 26.10.2008, 16:54   #5
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

2 Serge_Bliznykov
Большое спасибо за помощь!
Получается, что окончательный код программы будет таковым?:
PS: Извиняюсь за свое непонимание, стараюсь все понять, пока что это не очень получается

Код:
procedure TForm1.Button1Click(Sender: Tobject);
Const NMAX = 6; {Максимальное кол-во элементов массива}
Type TMas: Array [1..NMAX] of Real;
Var
X: TMas; {Исходный массив Х}
A,B: extended; {Наши А и В}
N: Integer; {Кол-во элементов массива X}
I: Integer; {Параметр цикла}
S: Real; {Сумма}
R: Real; {Результат}
begin
N:=StrToInt (EditN.Text);
A:= 0;
B:= 1;
For I:=1 To N Do
begin
X[i]:=StrToFloat (StringGrid1.Cells [I-1, 0]);
A:=A+X[i];
B:=B*X[i];
End;
S:=0
For I:=1 To N Do
ShowMessage('Отношение A/B равно '+ FloatToStr(A/B));
end;
end
Kawun вне форума
Старый 26.10.2008, 18:22   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) ну то, что Вы привели здесь - даже не откомпилируется -нет точки с запятой после S:=0

2) второй цикл ПОЛНОСТЬЮ НЕ НУЖЕН!!!
вы же всё в первом цикле уже посчитали!
просто сделайте один ShowMessage (или киньте ещё один Edit и присвойте в Edit2.Text := FloatToStr(A/B) )

да и переменная S у Вас нигде не используется - её можно смело удалить (мы вместо неё использовали переменную A)
Serge_Bliznykov вне форума
Старый 26.10.2008, 18:39   #7
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

так, подправил, но думаю еще придется править (не уверен я в правильности):

Код:
procedure TForm1.Button1Click(Sender: Tobject);
Const NMAX = 6; {Максимальное кол-во элементов массива}
Type TMas: Array [1..NMAX] of Real;
Var
X: TMas; {Исходный массив Х}
A,B: extended; {Наши А и В}
N: Integer; {Кол-во элементов массива X}
I: Integer; {Параметр цикла}
R: Real; {Результат}
begin
N:=StrToInt (EditN.Text);
A:=0;
B:=1;
For I:=1 To N Do
begin
X[i]:=StrToFloat (StringGrid1.Cells [I-1, 0]);
A:=A+X[i];
B:=B*X[i];
end;
EditR.Text := FloatToStr(A/B));
end;
end
Kawun вне форума
Старый 26.10.2008, 19:55   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

на мой взгляд, теперь всё. теперь гуд!! ;-)

единственное, будьте осторожны и бдительны (ну, или добавьте проверки -
1) не проверяется, что в EditN внесено число (и что там целое число)
2) если число в EditN будет больше NMAX - тоже будет ошибка выхода за пределы границ массива.
Serge_Bliznykov вне форума
Старый 26.10.2008, 20:22   #9
Kawun
Пользователь
 
Регистрация: 26.10.2008
Сообщений: 32
По умолчанию

Еще раз спасибо за помощь!
Постараюсь учесть Ваши замечания по поводу проверок. :о)
Kawun вне форума
Старый 20.12.2009, 20:45   #10
knoxville177
Новичок
Джуниор
 
Регистрация: 20.12.2009
Сообщений: 1
По умолчанию Помогите с написанием задач!

1. Подсчитать количество цифр в числе, которое меньше 1 ( Используя Оператор Repeat

2. Дано натуральое число N и массив целых чисел a1,..an Выяснить имеется в массиве a1,..,an хотя бы одно нечетное отрицательное число и поределить его местонахождение в массиве. ( Через одномерный массив)

3. Дана вещественная матрица A (N.M). Составить программу нахождения максимального элемента матрицы и выделения его местоположения. ( Через двухмерный массив )

заранее огромное спасибо!
knoxville177 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
одномерный массив в delphi d3[Z.oRg] Помощь студентам 7 18.06.2011 15:04
одномерный массив ldx Паскаль, Turbo Pascal, PascalABC.NET 4 06.06.2008 17:45
Массив Одномерный flait111 Помощь студентам 3 15.12.2007 14:08
Одномерный массив SkyDreamer Помощь студентам 1 01.12.2007 21:22
Задача на одномерный массив AliVe Помощь студентам 1 19.11.2007 21:35