Programma puntatori C
ciao ragazzi stavo provando a fare qualche programmino con i puntatori e me ne è venuto in mente uno semplice dati due vettori di lunghezza 3 con i valori già dati volevo calcolare il prodotto di ogni numero del primo con ogni numero del secondo e poi sommarli...ci ho provato ma non ci sono riuscito ora vi posto il testo mi dite dove ho sbagliato? grazie
# include
# include
int main()
{
int a[3]={2,4,6};
int b[3]={1,3,5};
int k[6];
int*aptr=a;
int*bptr=b;
int*kptr=k;
int i;
int j;
int temp;
int y;
int sum;
for(y=0;y<6;y++){
for(i=0;i<3;i++){
for(j=0;j<3;j++){
temp=(*aptr**bptr);
bptr++;
}
aptr++;
bptr=b;
}
k[y]=temp;
}
sum=0;
for(y=0;y<6;y++){
sum+=*kptr;
kptr++;
}
printf("la somma e':%d\n",sum);
system("PAUSE");
return 0;
}
PS forse c'è qualche variabile in più o cose simili però non è un porblema...credo eheh
# include
# include
int main()
{
int a[3]={2,4,6};
int b[3]={1,3,5};
int k[6];
int*aptr=a;
int*bptr=b;
int*kptr=k;
int i;
int j;
int temp;
int y;
int sum;
for(y=0;y<6;y++){
for(i=0;i<3;i++){
for(j=0;j<3;j++){
temp=(*aptr**bptr);
bptr++;
}
aptr++;
bptr=b;
}
k[y]=temp;
}
sum=0;
for(y=0;y<6;y++){
sum+=*kptr;
kptr++;
}
printf("la somma e':%d\n",sum);
system("PAUSE");
return 0;
}
PS forse c'è qualche variabile in più o cose simili però non è un porblema...credo eheh
Risposte
Ciao,
consiglio mette il codice tra tag [code] è un po' difficile seguirlo se no.
Te usi i puntatori massicciamente, questo penso sia lo scopo dell'esercizio.
Ma non capisco, non ti compila, non esegue, ti da errore...
copia qua l'output così vediamo
Vedo già alcuni errori e cose inutili
consiglio mette il codice tra tag [code] è un po' difficile seguirlo se no.
Te usi i puntatori massicciamente, questo penso sia lo scopo dell'esercizio.
Ma non capisco, non ti compila, non esegue, ti da errore...
copia qua l'output così vediamo
Vedo già alcuni errori e cose inutili

si diciamo che ho impostato l'esercizio in modo tale da utilizzare i puntatori...lo compila lo esegue ma da un risultato sbagliato infatti mi da che la somma è :1196431138
ecco la tag:
ecco la tag:
# include <stdio.h> # include <stdlib.h> int main() { int a[3]={2,4,6}; int b[3]={1,3,5}; int k[6]; int*aptr=a; int*bptr=b; int*kptr=k; int i; int j; int temp; int y; int sum; for(y=0;y<6;y++){ for(i=0;i<3;i++){ for(j=0;j<3;j++){ temp=(*aptr**bptr); bptr++; } aptr++; bptr=b; } k[y]=temp; } sum=0; for(y=0;y<2;y++){ sum+=*kptr; kptr++; } printf("la somma e':%d\n",sum); system("PAUSE"); return 0; }
Mamma mia che arrocchettolio 
Prova a rispondere alle seguenti domande:
- temp contiene il prodotto dell'elemento di A con l'elemento di B; esso viene calcolato nove volte e salvato alla fine, è questo quel che ti serve?
- il vettore k è dimensionato a 6 elementi, perché? E perché fai un ciclo su di esso, all'interno del quale ci sono due cicli su A e B?
- sicuro che alla fine ci vada un ciclo da 0 a 2 escluso? Sicuro che questo ciclo serva a qualcosa, non potresti calcolare tutto prima?

Prova a rispondere alle seguenti domande:
- temp contiene il prodotto dell'elemento di A con l'elemento di B; esso viene calcolato nove volte e salvato alla fine, è questo quel che ti serve?
- il vettore k è dimensionato a 6 elementi, perché? E perché fai un ciclo su di esso, all'interno del quale ci sono due cicli su A e B?
- sicuro che alla fine ci vada un ciclo da 0 a 2 escluso? Sicuro che questo ciclo serva a qualcosa, non potresti calcolare tutto prima?
ok
a parte l'inutilità di parecchie cose, l'assegnazione di un array ad un secondo puntatore, troppi indici, ecc...
il fulcro dell'errore sta nella variabile "temp". Ad ogni iterazione del ciclo for perdi il suo valore. E al ciclo esterno assegni solo il valore dell'ultima moltiplicazione.
L'array "k" è inutile, risolvi tutto con le varibili "temp" e "sum" messe nel posto corretto.
Consiglio: elimina il ciclo for più esterno, e l'ultimo ciclo for su "kptr". E ricordati di salvare il vaore temp.
Il resto è corretto, cerca di eliminare qualche variabile inutile. E non usare "system(PAUSE)" non capisco come mai tutti la usino, ma per me è inutile per un programma scritto bene.
A te risolvere
@Rggb: azz scusa abbiamo scritto simultaneamente
a parte l'inutilità di parecchie cose, l'assegnazione di un array ad un secondo puntatore, troppi indici, ecc...
il fulcro dell'errore sta nella variabile "temp". Ad ogni iterazione del ciclo for perdi il suo valore. E al ciclo esterno assegni solo il valore dell'ultima moltiplicazione.
L'array "k" è inutile, risolvi tutto con le varibili "temp" e "sum" messe nel posto corretto.
Consiglio: elimina il ciclo for più esterno, e l'ultimo ciclo for su "kptr". E ricordati di salvare il vaore temp.
Il resto è corretto, cerca di eliminare qualche variabile inutile. E non usare "system(PAUSE)" non capisco come mai tutti la usino, ma per me è inutile per un programma scritto bene.
A te risolvere

@Rggb: azz scusa abbiamo scritto simultaneamente

/OT
Nice overlap
TO/
Nice overlap

TO/