|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Работа с массивами в Delphi
Всем привет! Народ срочно помогите мне с 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. |
#7
|
||||
|
||||
Все исправил сам, всем спасибо!!!
|