![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Всем привет! Народ срочно помогите мне с 1 заданием:
Вычислить среднее арифметическое, наименьшее значение среди положительных элементов и произведение отрицательных в массиве D(n). n<=25. Вывести массив, среднее арифметическое, наименьшее значение и произведение. |
|
#2
|
|||
|
|||
|
Цитата:
Ну а сам что? Это же элементарно. Код:
var
I : Integer;
A : Array [1..25] Of Integer;
M, C, S, P : Integer;
begin
// Генерируем массив случайных чисел -50..50
For I := 1 To 25 Do A[i] := Random(101) - 50;
// Инициализируем счетчики
M := A[1];
C := 0;
S := 0;
P := 1;
// Считаем.
For I := 1 To 25 Do
Begin
If A[i] >= 0
Then // положительное
Begin
Inc(C);
S := S + A[i];
If A[i] < M Then M := A[i];
End
Else // отрицательное
P := P * A[i];
End;
// Вывод
WriteLn('Min = ',M);
If C = 0 Then WriteLn('Avg = N/A') Else WriteLn('Avg = ',S/C);
WriteLn('Mul = ',P);
end; |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
klik09 (24.07.2013)
| ||
|
#3
|
||||
|
||||
|
Что то не понял с выводом, можешь сделать проще. Что бы массив выводился в Memo, а среднее арифметическое,произведение и сумма в отдельные Edit'ы?
|
|
#4
|
||||
|
||||
|
Замените строки:
Код:
For I := 1 To 25 Do A[i] := Random(101) - 50;
на
For I := 1 To 25 Do begin A[i] := Random(101) - 50; Memo1.Lines.Add(IntToStr(A[i])); end;
WriteLn('Min = ',M);
на
Edit1.Text := 'Min = ' + IntToStr(M);
If C = 0 Then WriteLn('Avg = N/A') Else WriteLn('Avg = ',S/C);
на
If C = 0 Then Edit2.Text := 'Avg = N/A' Else Edit2.Text := 'Avg = ' + FloatToStr(S/C);
WriteLn('Mul = ',P);
на
Edit3.Text := 'Mul = ' + IntToStr(P) |
| Этот пользователь сказал Спасибо Страдалецъ за это полезное сообщение: | ||
klik09 (24.07.2013)
| ||
|
#5
|
||||
|
||||
|
Что то я проверяю программу, а она мне выдает совсем не то решение=(
Среднее арифметическое не находит, наименьшее значение среди положительных вообще нет, только произведения отрицательных элементов массива правильно выдает. Еще не могу понять что делает функция Inc(C) Последний раз редактировалось klik09, 24.07.2013 в 14:54. |
|
#6
|
||||
|
||||
|
Вообщем разобрался во всем, исправил все, кроме 1. У меня почему то все равно за место наименьшего положительного выдает первый элемент массива.
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
I : Integer;
A : Array [1..10] Of Integer;
M, C, S, P : Integer;
begin
For I := 1 To 10 Do begin
A[i] := Random(56) - 25;
Memo1.Lines.Add(IntToStr(A[i]));
end;
M := A[1];
C := 0;
S := 0;
P := 1;
For I := 1 To 10 Do
Begin
Inc(C);
S := S + A[i];
If A[i] >= 0
Then
begin
If A[i] < M Then M := A[i];
end
Else
P := P * A[i];
End;
Edit1.Text := 'Min = ' + IntToStr(M);
Edit2.Text:='Avg = '+ FloatToStr(S/C);
Edit3.Text := 'Mul = ' + IntToStr(P);
end;
end.Последний раз редактировалось klik09, 24.07.2013 в 15:26. |