|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Somma array
Ciao a tutti, ho un nuovo quesito da risolvere....
devo fare la somma incrociata degli elementi contenuti in due array di interi distinti...ma devo usare assssolutamente i puntatori....ma tanto per cambiare c'e qualcosa che non torna.. ![]() Avete idea di cosa possa aver sbagliato? Codice:
#include <stdlib.h> #include <stdio.h> #define DIM 5 int main() {int a[DIM]; int b[DIM]; int c[DIM]; int *p1,*p2,*p3; p3=&c[0]; printf ("Digita i %d numeri del primo array\n",DIM); for (p1=&a[0]; p1<=&a[DIM-1]; p1++) scanf ("%d", p1); printf ("Digita i %d numeri del secondo array\n",DIM); for (p2=&b[0]; p2<=&b[DIM-1]; p2++) scanf ("%d", p2); for (p1=&a[0]; p1<=&a[DIM-1]; p1++,p2++,p3++) {p3=*p1+*p2; printf ("%d ",*p3);} system("PAUSE"); return 0; }
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che strano... Con Dev-C++ non funziona...mentre con VC++ funziona perfettamente... Mah...
PS: manca l'asterisco davanti a p3 quando fai la somma... |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
E invece l'errore c'era...
Devi reinizializzare p1 e p2 all'inizio dei rispettivi vettori... Codice:
#include <stdlib.h> #include <stdio.h> #define DIM 5 int main() {int a[DIM]; int b[DIM]; int c[DIM]; int *p1,*p2,*p3; p3=c; printf ("Digita i %d numeri del primo array\n",DIM); for (p1=a; p1<=&a[DIM-1]; p1++) scanf ("%d", p1); printf ("Digita i %d numeri del secondo array\n",DIM); for (p2=b; p2<=&b[DIM-1]; p2++) scanf ("%d", p2); for (p1=a, p2=b; p1<=&a[DIM-1]; p1++,p2++,p3++) /*gurda qui*/ {*p3=*p1+*p2; printf ("%d ",*p3);} system("PAUSE"); return 0; } |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Che bello
![]() Ti spiego perchè funzionava... Il vettore a veniva allocato dopo di b...quindi &b[5] == &a[0]... Io immettevo gli stessi numeri in entrambi i vettori (1 2 3 4 5)... Finita l'immissione p2 mi puntava a a[0]... Così facevo la somma delle stesse locazioni in memoria ed avendo immesso gli stessi numeri in entrambi i vettori la somma era quella che sarebbe dovuta essere ![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Quote:
Ah! anche a me dava sto problema prima di postare...poi l'ho modificato e cmq l'ho postato sbagliato....un'altra cosa la somma doveva essere incrociata nel senso : c[0]=a[0]+b[DIM-1] c[1]=a[1]+b[DIM-1-1] e così via.....ma ho risolto ...dovrebbe essere ok cosi... Codice:
#include <stdlib.h> #include <stdio.h> #define DIM 5 int main() {int a[DIM]; int b[DIM]; int c[DIM]; int *p1,*p2,*p3; p3=&c[0]; printf ("Digita i %d numeri del primo array\n\n",DIM); for (p1=&a[0]; p1<=&a[DIM-1]; p1++) scanf ("%d", p1); printf ("\nDigita i %d numeri del secondo array\n\n",DIM); for (p2=&b[0]; p2<=&b[DIM-1]; p2++) scanf ("%d", p2); printf ("\nLa somma incrociata dei numeri inseriti corrisponde a:\n\n"); for (p1=a, p2=&b[DIM-1]; p1<=&a[DIM-1]; p1++,p2--,p3++) {*p3=*p1+*p2; printf ("%d ",*p3);} printf ("\n\n"); system("PAUSE"); return 0; }
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jan 2002
Città: VENICE
Messaggi: 1241
|
Quote:
dimmmi se ho capito bene.... allora si riinizializzano entrambi p1=a, p2=&b[DIM-1]; perche nei rispettivi cicli for precedenti p1 era diventato=&a[DIM-1] (condizione di termine del ciclo); e p2 era diventato =&b[DIM-1]; ??? ho capito bene? se cosi allora non mi servirebbe riinizializzare p2 dato che parto dall'ultimo elemento dell'array b...adesso provo.... e invece serve...mi stampa cazz@te se non riinizializzo anche p2...ma perche? in cosa è sbagliato il mio ragionamento? ![]()
__________________
...Fight with your heart, and you're Destined For Glory But fight without soul and you will loose it all... |
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:28.