Vettori

Messaggioda stellacometa2003 » 11/02/2006, 19:12

E' già un paio di giorni che cerco totalmente invano di risolvere e appagare una mia curiosità su un problema (forse anche banale).

Carico un vettore di 16 elementi, dopo le somme degli elementi del primo vettore presi a 2 a 2 devono dare gli elementi di un secondo vettore..

esempio:
vett1= 1,2,3,4
vett2= 3,7

Come procedo??!!! :(
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1012 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 11/02/2006, 19:36

Prova così: usa un ciclo enumerativo sul primo vettore, con un indice I che vari da 1 a 15, nel quale si sommino 2 componenti consecutive (cioè di indici I e I+1); la somma va assegnata alla componente di indice J di un secondo vettore, avente dimensione 8: dopo ogni assegnazione, ricordati di incrementare J di 1 e I di 2. (naturalmente I e J inizializzati a 1 prima del ciclo).
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 68 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda Nidhogg » 11/02/2006, 20:14

Lo farei più generale. Salvo errori ecco il codice Pascal!

j:=1;

if n mod 2=0 then n:=n/2+1
else n:=n/2;

for i:=1 to n do
begin
v2[i]:=v1[j]+v1[j+1];
j:=i+2;
end;

n è la dimensione logica del vettore.
Con / intendo solo la parte intera della divisione.
"Una delle principali cause della caduta dell'Impero Romano fu che, privi dello zero, non avevano un modo per indicare la corretta terminazione dei loro programmi C." - Robert Firth
Nidhogg
Senior Member
Senior Member
 
Messaggio: 1022 di 1491
Iscritto il: 24/02/2004, 18:29
Località: Baronissi (Salerno) - Italia

Messaggioda lorven » 11/02/2006, 21:07

j:=1;

if n mod 2=0 then n:=n/2+1
else n:=n/2;

for i:=1 to n do
begin
v2[i]:=v1[j]+v1[j+1];
j:=i+2;
end;


Scusa Leonardo, correggo qualche svista:

-n è intero e va usato div invece di /
-non se n è pari, ma se n è dispari, incrementare di 1 n/2 (anche se così l'ultima coppia da sommare non esiste!)
- j:=j+2 al posto di j:=i+2

pertanto:

j:=1;

if n mod 2<>0 then n:=n div 2 +1
else n:=n div 2;

for i:=1 to n do
begin
v2[i]:=v1[j]+v1[j+1];
j:=j+2;
end;

:D
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 69 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda stellacometa2003 » 11/02/2006, 21:22

Mi spiegate perchè controllate se la dimensione sia pari o dispari?
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1013 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 11/02/2006, 21:26

A mio avviso, non serve. Bisognerebbe assicurarsi però di introdurre per n un valore pari. ad esempio così:

repeat
readln(n);
until (n div 2) = 0;

ciao
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 70 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda stellacometa2003 » 11/02/2006, 21:27

E perchè deve essere pari?
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1014 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 11/02/2006, 21:30

Se devi sommare coppie consecutive di elementi del vettore ...[/u]
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 71 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda stellacometa2003 » 11/02/2006, 21:33

If dimensione Mod 2 <> 0 Then
dimensione = dimensione / 2 + 1
Else
dimensione = dimensione / 2
End If
For j = 0 To n
vett2(j) = vettore(i) + vettore(i + 1)
i = i + 2
Next j

Questo è in Vb..mi da errore (sub o function non definita in "vett2") dov'è che sbaglio?
Ultima modifica di stellacometa2003 il 11/02/2006, 21:38, modificato 1 volta in totale.
Avatar utente
stellacometa2003
Senior Member
Senior Member
 
Messaggio: 1015 di 1844
Iscritto il: 03/10/2005, 21:11
Località: Cinisi (PA)

Messaggioda lorven » 11/02/2006, 21:38

Probabilmente c'è un errato dimensionamento del vettore e l'indice assume un valore errato. Posta l'intero programma.
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 72 di 369
Iscritto il: 06/12/2005, 20:55

Prossimo

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite