quello sotto è un tema d'esame dell'università Bicocca di milano...esami di informatica per economia ecommercio......
non riesco a capire come faccia a funzionare...perchè N-1?perchèN-2 e perchè i--?RisP[i] = (rip + AP[i] + BP[i]) % 4;
rip = (rip + AP[i] + BP[i]) / 4;}
perchè di questo....
sotto vi ho scritto il testo con la soluzione del proff...io non riesco a capire come funzioni.....quale procedimento attui...
mi potete dare maggiori delucidazioni?
Siano date le definizioni seguenti:
#define N 20
int A[N], B[N], Ris[N+1];
Le componenti degli array A, B e Ris possono contenere solo i 4 valori interi 0, 1, 2 e 3. Interpretiamo una sequenza di N cifre in {0,1,2,3} come un numero intero positivo rappresentato in base 4; ad esempio, se A contiene 00000 00000 00013 22100
esso rappresenta il numero 1*46 + 3*45 + 2*44 + 2*43 + 1*42.
Scrivere il codice C (PASCAL) di una funzione che prende in ingresso due parametri di tipo array di interi di N elementi AP e BP, interpretati come numeri interi in base 4 (come testé spiegato), riempie un parametro RisP di tipo array di N+1 int con il risultato della somma in base 4 dei due array.
Si assuma che i tre vettori AP, BP e RisP siano stati riempiti al di fuori di tale funzione, e che RisP contenga inizialmente tutte componenti nulle.
#include <stdio.h>
#define N 20
void moltiplica(int AP[N], int BP[N], int RisP[N])
{ int i, rip;
rip=(AP[N-1] +BP[N-1])/4;
RisP[N-1] = (AP[N-1] +BP[N-1])%4;
for(i=N-2;i>=0;i--)
{ RisP[i] = (rip + AP[i] + BP[i]) % 4;
rip = (rip + AP[i] + BP[i]) / 4;}
}
int main(void) //NON RICHIESTO DAL TESTO
{ int a[N]={1,0,0,3,2,0,1},
b[N]={1,0,2,3,2,2,1}, r[N], i;
moltiplica(a,b,r);
for(i=0;i<N;i++)
printf("%d",r[i]);
printf("\n");
return 0;}