29/11/09 14:11
xswat69
buonasera ho fatto questo programma che dice di fare l'intersezione tra due vettori e di eliminare (se ci sono) i numeri che si ripetono...non riesco a fare quest'ultimo punto per favore aiutatemi!serve per domani...grazie a chi risponde
esempio 1 vet=1 3 5 3
2 vet=3 4 3 2
vet intersezione =3(solo una volta non due)
type pvet =array [1..10] of integer;
svet=array [1..10] of integer;
cvet=array[1..10] of integer;
var a:pvet;
s:pvet;
l,x:cvet;
r,f,j,i,c:integer;
begin
randomize;
r:=1;
for j:=1 to 10 do
begin
a[j]:=random(20)+1;
write(a[j],' ');
end;
writeln;
for i:=1 to 10 do
begin
s[i]:=random(10)+1;
write(s[i],' ');
end;
writeln;
for i:=1 to 10 do
begin
for j:=1 to 10 do
if a[j]=s[i] then
begin
c:=c+1;
x[i]:=s[i];
end;
end;
writeln;
for i:=1 to c do
write(x[i],' ');
readln
edit by netarrow: sistemato il titolo
Ultima modifica effettuata da netarrow 29/11/09 14:28
aaa
29/11/09 16:32
Anonymous
ah ho interpretato male la domanda...
no il codice di prima non fa l'intersezione...
ma riempie il vettore C con tutti gli elementi di A + quelli di B senza ripetere i doppioni...
cmq per quello che chiedi il gioco dovrebbe essere cosi:
passi in rassegna ogni elemento di A (con un ciclo for) poi lo confronti con ogni elemento di B
se trovi che c'è una corrispondenza, allora lo inserisci in C, ma solo se non è già presente in C
quindi ti serviranno 3 cicli for...
se riesci bene... sennò fammi sapere
aaa
29/11/09 18:13
xswat69
scusa ma non ci riesco se puoi modificare il mio programma:
type pvet =array [1..10] of integer;
svet=array [1..10] of integer;
cvet=array[1..10] of integer;
var a:pvet;
s:pvet;
l,x:cvet;
r,f,j,i,c:integer;
begin
randomize;
r:=1;
for j:=1 to 10 do
begin
a[j]:=random(20)+1;
write(a[j],' ');
end;
writeln;
for i:=1 to 10 do
begin
s[i]:=random(10)+1;
write(s[i],' ');
end;
writeln;
for i:=1 to 10 do
begin
for j:=1 to 10 do
begin
if (a[j]=s[i]) and (x[j]<>a[j]) then
begin
c:=c+1;
x[j]:=a[j];
end;
end;
end;
writeln;
for i:=1 to c do
write(x[i],' ');
readln;
end.
aaa
29/11/09 19:04
Anonymous
conta:=0;
procedure inserisciSeNonPresente(valore:integer);
begin
for i:=0 to conta do
for j:=0 to conta do
if (C[ i ]<>C[ j ]) and (i = conta) and(j = conta) then
begin
C[conta] = valore;
conta:= conta+1;
end;
end;
for i:=0 to [dimensione di A] do
for j:=0 to [dimensione di B] do
begin
if (A[ i ] = B[ j ]) then
inserisciSeNonPresente(A[ i ]);
end;
ecco... inglobalo nel tuo programma e dovrebbe funzionare...
ovviamente devi dichiarare la variabile conta di tipo integer all'inizio del programma
Ultima modifica effettuata da Anonymous 29/11/09 19:06
aaa
29/11/09 19:20
xswat69
scusa non ci sto riuscendo perchè il valore viene scritto più volte per favore puoi modificare il mio programma xkè funzioni al meno capisco meglio
const n=5;
type pvet =array [1..n] of integer;
svet=array [1..n] of integer;
cvet=array[1..n] of integer;
var a:pvet;
s:pvet;
l,x:cvet;
conta,r,f,j,i,c:integer;
begin
randomize;
for j:=1 to n do
begin
a[j]:=random(6)+1;
write(a[j],' ');
end;
writeln;
for i:=1 to n do
begin
s[i]:=random(6)+1;
write(s[i],' ');
end;
writeln;
for i:=1 to n do
begin
for j:=1 to n do
begin
if a[j]=s[i] then
begin
c:=c+1;
x[i]:=s[i];
end;
end;
end;
writeln;
for i:=1 to c do
for j:=1 to c do
if x[i]<>x[j] then
write(x[i],' ');
readln;
aaa
29/11/09 21:08
Anonymous
ecco:
program ciao;
uses crt;
const n=5;
var conta,i,j:integer;
A:array [0..n]of integer;
B:array [0..n]of integer;
C:array [0..n] of integer;
D:array [0..n] of integer;
procedure inizializzaGliArray;
begin
randomize;
//inizializza l'array A e stampa a schermo gli elementi
for i:=0 to n do
begin
A[i]:=random(6)+1;
write(A[i],' ');
end;
//va a capo
writeln;
//inizializza l'array b e stampa a schermo gli elementi
for i:=0 to n do
begin
B[i]:=random(6)+1;
write(B[i],' ');
end;
//va a capo
writeln;
for i:=0 to n do
begin
C[i]:=0;
end;
end;
//questa procedura inserisce nell'array C il valore che gli viene passato dal programma ma prima lo confronta con gli elementi che ha già presente
procedure inserisciSeNonPresente(valore:integer);
var ii,jj,temp:integer;
begin
temp:=conta;
for ii:=0 to temp do
begin
if (C[ ii ]= valore) then
break;
if (ii = temp) then
begin
C[conta] := valore;
conta:=conta+1;
break;
end;
end;
end;
begin
inizializzaGliArray;
for i:=0 to n do
for j:=0 to n do
if (A[ i ] = B[ j ]) then
begin
inserisciSeNonPresente(A[ i ]);
end;
for i:=0 to conta-1 do
write(C[i],' ');
readln;
end.
Ultima modifica effettuata da Anonymous 29/11/09 21:09
aaa
29/11/09 21:31
xswat69
grazie mille ma scusa InserisciSeNonPresente a cosa serve e come funziona?
aaa