PDA

View Full Version : [C] Esercizio Array


ste1982
04-06-2008, 22:35
Ciao ragazzi,
dovrei svolgere un esercizio in cui viene chiesto di stampare il contenuto di ogni singolo elemento di un array (di 10 elementi), in ogni elemento verrà memorizzato il valore immesso da tastiera..
Per capire meglio vi posto la mia soluzione...

#include <stdio.h>
#include <stdlib.h>
#define N 10
void main ()

{
int C[N];
int i,p;



for (i=0;i<=N;i++)
{
printf("\nInserisci l'elemento %d del vettore C----->",i);
scanf("%d",&C[i]);

for (p=i;p<=i;p++)
{
printf("L'elemento %d del vettore C contiene %d\n",i,C[p]);
}
}

fflush (stdin);
getchar();

}


Quando compilo e lancio, il print giustamente viene visualizzato subito dopo che viene immesso il valore...
Invece io vorrei che venisse memorizzato prima ogni singolo valore e poi che venisse eseguito il printf stampando tutti i valori tipo elenco... Ho provato a farlo in diversi modi, ma non riesco a trovare la via giusta...
Spero di essere stato chiaro!

Ciao e grazie ;)

Albi89
04-06-2008, 22:57
[...]

Non sono sicuro di aver capito cosa vuoi fare... in ogni caso, penso che quello che vuoi fare può essere risolto semplicemente spostando il secondo ciclo for fuori dal ciclo più in alto (così tu hai due cicli for innestati).
Ovviamente le condizioni del secondo ciclo andrebbero riscritte, e dovrebbe stampare da i = 0 a N.

khelidan1980
04-06-2008, 23:03
a parte che il main deve ritornare un int,a parte che puoi scrivere tutto senza
fflush (stdin) e getchar() che non ho capito a che servono,a parte questo devi semplicemente riscrivere i due for non innestati

vizzz
04-06-2008, 23:28
for (i=0;i<N;i++)
altrimenti inserisci 9 elementi

Albi89
04-06-2008, 23:41
a parte che il main deve ritornare un int,a parte che puoi scrivere tutto senza
fflush (stdin) e getchar() che non ho capito a che servono,a parte questo devi semplicemente riscrivere i due for non innestati
Penso servano per tenere la console aperta al termine dell'esecuzione... meglio dell'odioso e immancabile "system("PAUSE");" :ciapet:

altrimenti inserisci 9 elementi
Non ne inserisce 11? :confused:

nongio
05-06-2008, 00:12
Non ne inserisce 11? :confused:

ne inserisci 9 ( N=10 -1 )

non annidare i due for, ne fai uno per inserire i dati da tastiera con la scanf e ne fai poi un'altro per stamparli a video con printf...

e poi per fare più semplice non ti conviene fare solo



for (i=0; i<N; i++)
{
printf ("il contenuto della %d cella è %d\n", i, C[i]);
}



così al valore dell'indice (i) che parte da 0 viene stampato il numero dentro la i-esima cella...

khelidan1980
05-06-2008, 09:06
Penso servano per tenere la console aperta al termine dell'esecuzione... meglio dell'odioso e immancabile "system("PAUSE");" :ciapet:


Ah già non ricordavo di questa feature di win! ;)



Non ne inserisce 11? :confused:

Si 11,come ha scritto lui il for va da 0 a 10,non l'avevo notato

nongio
05-06-2008, 12:05
Ah già non ricordavo di questa feature di win! ;)



Si 11,come ha scritto lui il for va da 0 a 10,non l'avevo notato

neanche io l'avevo notato... chiedo scusa

ste1982
06-06-2008, 10:17
Grazie a tutti ragazzi!!! :)
Ho capito dove sbagliavo!!
Praticamente oltre a separare i cicli, dovevo anche inizializzare p=0 e non ad i come avevo scritto...
Questo e' il codice che ho corretto!!
#include <stdio.h>
#include <stdlib.h>
#define N 10

int main ()

{

int C[N];
int i,p;

for (i=0;i<=N;i++)
{
printf ("immetti un valore per l'elemento del array P---->",i);
scanf ("%d",&C[i]);
}

for (p=0;p<=N;p++)
{
printf ("L'elemento %d dell' array C Contiene %d\n",p,C[p]);
}

}

Ciao a tutti!!!

vizzz
06-06-2008, 10:22
Non ne inserisce 11? :confused:

:D avevo il cervello che ragionava al contrario...


ste1982: occhio che così ne inserisci ancora 11

ste1982
06-06-2008, 13:58
Ah si hai ragione!!! :muro:
Grazie per il suggerimento!!

Ciao!!!