Come faccio quest' esercizio? PASCAL?
dato un vettore di N componenti, con N<=100, e un numero X, costruisci un vettore le cui componenti di indice pari siano uguali a quelle di indice pari del vettore moltiplicate per X e quelle di indice dispari siano uguali a quelle di indice dispari del vettore incrementate di X.
Non ci ho capito una mazza di sta traccia! che devo fare? O.o
Comments
.
.
.
Var
VettoreOrigine: array[1..100] of integer;
VettoreDestinazione: array[1.100] of integer:
n: integer;
X:integer;
Resto:Integer;
.
.
.
begin
n:=0;
Resto:=0;
.
.
.
for n:=1 to 100 do
begin
(*Controllo se n è pari o dispari*)
Resto = n mod 2;
if Resto = 0 then
(*Moltiplico per X il valore di origine nei casi di n pari*)
VettoreDestinazione[n]:=VettoreOrigine[n] * X;
else
(*Sommo X al valore di origine nei casi di n dispari*)
VettoreDestinazione[n]:=VettoreOrigine[n] + X;
end;
.
.
.
end;
Vado a memoria, perché sono decenni che non programmo più in pascal, magari c'è qualche errore di sintassi. Ho scritto solo la parte centrale del programma, quella che effettivamente esegue l'algoritmo richiesto.
Ti fornisco una soluzione alternativa anche io andando a memoria e scrivendo solo il cuore del programma:
...
Var
{le variabili già descritte da Ale}
...
pari:boolean;
...
begin
...
pari:=TRUE;
for n:=1 to 100 do
begin
if (pari) VettoreDestinazione[n] := VettoreOrigine[n] * X;
else VettoreDestinazione[n] := VettoreOrigine[n] + X;
pari := not pari;
end;
...
end.