PDA

Просмотр полной версии : Pascal. Массивы



Gerrard
13.03.2011, 17:33
Задание по Free Pascal. Помогите, пожалуйста:
1. дан массив целых чисел а1,…, аn. Определить количество чисел, входящих в массив по одному разу.

Program LP;
Uses CRT;
Const n=15;
Var A:array [1..n] of integer;
K,L,i: integer;
BEGIN
clrscr;
writeln ('ђ Ў®вг ўлЇ®«-Ё«:');
writeln ('И?в㤥-в ЈагЇЇл ЏѓИ?¤-13');
writeln ('Њгав Є®ў Ђ«ҐЄбҐ© ‚ «Ґа쥢Ёз');
readln;
clrscr;
randomize;
for i:=1 to n do
A[i]:=random(50)-25;
writeln ('Массив А:');
for i:=1 to n do
write (A[i]:5);
writeln;
K:=0;
for i:=1 to n do
if A[i+1] <> A[i] then K:=K+1;
write ('количество чисел, входящих в массив по одному разу равно ', K);
readkey;
End.

я примерно представляю, что я должен сделать, но не могу понять, как проверить не только один предыдущий элемент, а все предыдущие

и чем Free Pascal вообще отличается от турбо?

feamorx86
26.03.2011, 01:30
Алгоритм тупой, не оптимизированный, решает задачу в лоб)) т.е. то что здают обычно в лабах....
выглядит как то так))

{.................}
Const n=15;
Var A:array [1..n] of integer;
i,j: integer;
now:integer;
count:integer;
duplicate:boolean;

begin

{..................}
count:=0;
for i:=1 to n do
begin
now:=A[i] ; {берём очередное число}
duplicate=false; {пердположим повторений нет}
for j:=1 to n do {просматриваем весь массив}
begin {исключая now, (A[i])}
if i<>j then {иначе точно повторение)) }
if now==A[j] then {если найден повтор}
begin
duplicate=true; {говорим что он найден}
break; {завершаем внутренний цикл}
end;
end
if (not duplicate) count=count+1;
end
writeln('Unique ',count,' elements');
end.


и чем Free Pascal вообще отличается от турбо?
Free Pascal - это OpenSource, gnu..... а borland Turbo pascal - это не gnu и точно не OpenSource, это раз, два - Free Pascal есть и под *nix и под win32, win64, а турбо в общем под Дос и win 3.1/3.11 )))

Dezire
30.03.2011, 22:55
Надо ли в конце программы до end писать readln, чтобы просто курсор перешел на след. строку и когда повторно выполняешь программу, не сливались строки?

LosT_eg
10.07.2011, 02:22
readln;
end.

значит, что программа будет ждать нажатия клавиши, после завершения оной. Не прописав этого, в том же турбо - она завершится, и для просмотра результата мы жмем на alt + f5.

я некроманищще...