|
#1
|
|||
|
|||
Проблема с кодом
Только начал изучать Delphi
Возникла проблема с кодом(( Помогите пожалуйста. Условие задачи: Дан целочисленный массив размера N. Удалить из массива все элементы, встречающиеся более двух раз, и вывести размер полученного массива и его содержимого. Вот мой код Код:
procedure TForm1.Button1Click(Sender: TObject); var a:array[1..99] of integer; i,j,m,n,z,k,p,l:integer; begin p:=0; N:=strtoint(Edit1.Text); for i:=1 to n do begin a[i]:=random(100)-50; k:=0; for j:=1 to n do begin if a[i]=a[j] then k:=k+1; if i=j then k:=k-1; if k=2 then begin for z:=1 to n do begin a[i]:=a[n]; n:=n-1; end; end; end; label1.caption:=label1.caption+IntToStr(a[i])+' '; end; for i:=1 to n do begin p:=p+1; end; Edit2.text:=inttostr(p); end; |
#2
|
||||
|
||||
В чем проблема?
Сделаю несколько предположений: 1) Массив еще не заполнен, а уже начинается поиск. Как следствие - на выходе бред. 2) В конце последнего цикла всегда будет p=n. Зачем тогда этот цикл? jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
Т.е нужно сделать отдельным цикл присваивания элементам массива рандомного числа?
А лишь потом искать элементы подходящие под условие задачи? И почему p=n? Я просто самоучка) |
#4
|
||||
|
||||
1) Разумеется отдельным. Сначала массив надо заполнить, а потом с ним работать.
2) Почему P=N - проанализируй. Код:
p:=0; ... for i:=1 to n do begin p:=p+1; end; Следовательно, цикл бесполезен. jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
Sersgant (07.06.2012)
|