Newsgroup: it.comp.lang.c
Titolo: programma e puntatori

ciao a tutti
ho scritto un semplice programmino che inseriti 9 numeri in un vettore eleva
al quadrato quelli pari
#include<stdio.h>
void quadrato (int C[], int dim){
int i;
for (i=0; i<dim; i++){
if ((C[i]%2)==0)
printf("%d\t%d\t\t%d\n",i,C[i],C[i]*C[i]);
 }
}
main (){
int V[9], i;
for (i=0; i<8; i++){
printf("Inserisci un valore: ");
scanf("%d", &V[i]);}
printf("Indice\tValore Prec.\tValore Attuale\n");
quadrato (V, 9);
return 0;
}
tutto viene compilato perfettamente.
Ora mi chiedevo se si potevano usare i puntatori, infatti mi devo esercitare
nel loro uso.
Ne č venuta fuori questa seconda versione che (giustamente) il compilatore
si rifiuta di compilarmi:
#include<stdio.h>
void quadrato (int * c, int dim){
int i;
for (i=0; i<dim; i++){
if ((*c[i]%2)==0)
printf("%d\t%d\t\t%d\n",i,*c[i],((*C[i])*(*C[i])));
 }
}
main (){
int V[9], i;
int * p;
for (i=0; i<8; i++){
printf("Inserisci un valore: ");
scanf("%d", &V[i]);}
printf("Indice\tValore Prec.\tValore Attuale\n");
p=V[0]
quadrato (p, 9);
return 0;
}
Potreste darmi una mano?
Grazie :)

 }
non ho guardato bene tutto, ma con gli accorgimenti che ti ho suggerito 
dovrebbe andare...
ciao
fra

 ha scritto nel messaggio
news:drAGb.6018$VW.2...@news3.tin.it...


dovrebbe andare...
Io ho notato che il loop originale aveva anche i<8 invece di
i<=8 (o i<9); quindi il numero di elementi richiesti in input
non era 9 ma 8.
HTH
Andrea

 >se vuoi usare l'asterisco puoi scriverlo così: (*c+i)


 considerato come "(*c) + i".
gia'! ho fatto un po' di confusione!

 printf("%d\t%d\t\t%d\n",i,(*c+i),((*(c+i))*(*(c+i))));
ma che roba e' questa?
Non mi sembra affatto che tu abbia seguito il suggerimento di Andrea (se non
nella riga sopra solamente).
Il suggerimento di Andrea G. e' ovviamente quello giusto.... Ti consiglio di
studiarti i puntatori, gli array e l'aritmetica dei puntatori.
Tommy

cmq grazie :)
Programmare e' veramente appassionante, ma secondo me
solo se non diventa una questione di formule magiche
che non sono comprese.
Se scrivi codice e non capisci come fa a funzionare
allora non riuscirai sicuramente a capire dov'e' il
problema quando il tuo codice *smettera'* di funzionare...
e comincierai a incolpare tutti (dal sistema operativo,
al compilatore e arrivando addirittura ai colleghi
"che portano sfiga"). Non hai idea di quante volte ho
visto capitare questo...
HTH
Andrea

Andrea Griffini.....
Oppure che ha usato come sequenza 1,2,3,4,5,6,7,8,9 (o
qualunque altra sequenza in cui *c+i == *(c+i) ).
Se un programma funziona e' solo perche' non hai
guardato bene :-)
Andrea

 Andrea
Grazie veramente per tutti i consigli...
Sono ancora alle prime armi e l'argomento puntatori non l'avevo molto
capito, per questo facevo esercizi. Penso ora grazie ai miei errori ed ai
vostri consigli di avere le idee più chiare :) vedrò di esercitarmi ancora
ed evitare di buttare giù codice "alla carlona" e magari soffermarmi un po'
di più su quel che scrivo :)
Cmq sono stato veramente sbadato... mi ero scordato di portare fuori dalle
parentesi un *... e magari potevo fare qualche prova in più... ;)
Il programma *definitivo* è:
#include<stdio.h>
#define DIM 9
void quadrato (int * c, int dim){
int i;
for (i=0; i<dim; i++){
if ((*(c+i)%2)==0)
printf("%d\t%d\t\t%d\n",i,*(c+i),((*(c+i))*(*(c+i))));
 }
}
main (){
int V[DIM], i;
int * p;
for (i=0; i<DIM; i++){
printf("Inserisci un valore: ");
scanf("%d", &V[i]);}
printf("Indice\tValore Prec.\tValore Attuale\n");
p=&V[0];
quadrato (p, DIM);
return 0;
}
e tutto funge anche dopo numerose prove :) ma quel che importa che ho capito
dove ho sbagliato.
Grazie ancora :)