|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
помогите с массивом
у меня должен быть одномерный массив, выводящее произведение четных элементов массива, но она показывает другие цифры [code][/
спам Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TMyForm = class(TForm) Edit1: TEdit; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var MyForm: TMyForm; implementation {$R *.dfm} procedure TMyForm.Button1Click(Sender: TObject); var a: array [1..5] of integer ; var i, p,n, k:integer; begin for i:=1 to 5 do begin a :=random (11)+1; end; p:=1; k:=5 div 2; for p:=1 to k do n:= p* a[i*2]; if p<>0 then Edit1.Text := FloatToStr(n); end; procedure TMyForm.Button2Click(Sender: TObject); begin self.Close; end; end. Последний раз редактировалось M.A.D.M.A.N., 28.05.2013 в 08:47. |
#2
|
||||
|
||||
Вообще работать не должно
Заполнение массива Код:
for i := 1 to 5 do a[i]:= random (11) + 1; Код:
n:= p* a[i*2]; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#3
|
|||
|
|||
в ответе выходят цифры 17564312 такого плана, а на самом деле же должен быть: 2*4*6*8=3840, вообщем перестановка не помогает
|
#4
|
|||
|
|||
исходник
вот исходник
|
#5
|
|||
|
|||
Не программа, а бред!
1) Не верный синтаксис for i:=1 to 5 do begin a :=random (11)+1; end; нужно: for i:=1 to 5 do begin a[i] :=random (11)+1; end; При таком коде а может принимать как четные значения так и не четные!! Для чего Вы пишите Рандом +1 не ясно. 2) k:=5 div 2; зачем это выражение??? Оно всегда равно 2. Проще тогда написать k:=2. 3) Таким образом цикл выполниться всего два раза для p:=1 и для p:=2 for p:=1 to k do n:= p* a[i*2]; n примет значения: n:=1*(любое число до 11 плюс 1) n:=2*(любое число до 11 плюс 1) Ну например может получится n:=5 b n:=24 4) Вывода на экран вынесен за цикл!! if p<>0 then Edit1.Text := FloatToStr(n); Данные строки, в виду того что вынесены за цикл, выведут всего одно лишь значение n, а именно последнее посчитаное. Для моих примеров n:=24. 5) if p<>0 then Что это вообще за строка?? p всегда больше нуля, значит данное вырожение автоматический всегда ТРУ. Его вообще можно выкинуть. Прежде чем что-то писать необходимо самому разобраться, что должна делать программа. тогда и написание станет простым. |