PDA

View Full Version : Piccolo programma col C


cancer1984
07-10-2010, 14:53
salve a tutti, mi sono iscritto da poco su questo forum, ho bisogno di un piccolo aiutino.
Ho fatto questo piccolo programma col C

#include <stdio.h>
int main()
{int int_array[100];
int i;
for (i=0; i<100; i++)
{
printf ("%d", int_array[i]);
}
}

Ma quando vado a compilare mi escono un casino di numeri.
Dove è sbagliato il codice.
Aspetto risposta
Grazie

banryu79
07-10-2010, 15:08
L'errore è dato dal fatto che nel codice viene dichiarato un array di interi ma le celle di quell'array non vengono inizializzate con dei dati e così quando il puntatore alla cella i-esima viene deferenziato per estrarne il valore ciò che viene letto dalla memoria è, in gergo, "spazzatura".

Per essere più chiari con questo:

int int_array[100];

hai solo dichiarato (e riservato spazio in memoria per) un array di cento int, ma non hai inizializzato il valore di nessuno di quei cento interi.
Dovresti quindi (ad esempio) eseguire un ulteriore ciclo per inizializzare i cento interi prima del ciclo che li legge per stamparli sullo standard output.

cancer1984
07-10-2010, 18:05
Scusami, ma allora come devo completare il codice??
aspetto risposta
Grazie mille

Enriko81
07-10-2010, 18:17
#include <stdio.h>
int main()
{
int int_array[100]=0;
int i;
for (i=0; i<100; i++)
{
printf (" %d ", int_array[i]=i);
}
}

cancer1984
07-10-2010, 18:38
Non funziona mi da un errore...
Aiuto
Grazie

tuccio`
07-10-2010, 18:47
mica ho capito che devi fare, inizializzare l'array con tutti zero?


int int_array[100] = { 0 };

banryu79
08-10-2010, 09:19
Scusami, ma allora come devo completare il codice??
aspetto risposta
Grazie mille
L'errore te l'ho segnalato.
Se sei stato capace di produrre da solo il codice che hai postato nel tuo primo messaggio allora dovresti poter essere in grado di scrivere un ciclo che inizializza un array.
Se così non fosse ti consiglio di appoggiarti a un buon manuale e colmare la lacuna perchè significherebbe che ti mancano delle conoscenze di base indispensabili.
Ciao!

superpuccio
08-10-2010, 14:03
Puoi chiarirci quale fosse il tuo obiettivo? Perchè il codice che hai scritto non è sbagliato in se, solo che gli manca qualcosa...te hai creato questo array di 100 posizioni e non ci hai messo dentro nulla...cosa ti aspettavi che stampasse il ciclo for? I numeri che vedi e che sembrano non avere senso sono, come qualcuno ti ha già detto, semplicemente quello che c'è in memoria in quel momento nelle celle dell'array (che, ti ricordo ancora una volta, non è stato inizializzato).

EDIT: ovviamente te hai scritto

printf("%d", int_array[i]);

questo vuol dire che i numeri te li stampa tutti in sequenza...in questo modo: 135-4567-1869695873 dove il trattino sta per il "meno".

se vuoi vederli uno sotto l'altro (in modo da capire meglio quello che stiamo dicendo) fai così

printf("%d\n", int_array[i]);

zanardi84
08-10-2010, 20:19
salve a tutti, mi sono iscritto da poco su questo forum, ho bisogno di un piccolo aiutino.
Ho fatto questo piccolo programma col C

#include <stdio.h>
int main()
{int int_array[100];
int i;
for (i=0; i<100; i++)
{
printf ("%d", int_array[i]);
}
}

Ma quando vado a compilare mi escono un casino di numeri.
Dove è sbagliato il codice.
Aspetto risposta
Grazie

Cosa vuoi far fare al tuo programma?
Fammi intuire, vuoi stampare l'indice del vettore?

#include <stdio.h>
int main()
{
int int_array[100]=0;
int i;
for (i=0; i<100; i++)
{
printf (" %d ", int_array[i]=i);
}
}

Non puoi inizializzare così il vettore, ma devi usare un ciclo for che scorrendo tutto l'indice scrive 0 in ogni cella del vettore ;)

Così:

for (i=0; i<100; i++)
{
int_array[i]=0;
cout << int_array[i];
}

L'istruzione cout (c++) o printf (c) è facoltativa, ma in questo caso permette di vedere cosa fa effettivamente il ciclo che ho scritto!

tuccio`
08-10-2010, 20:25
Non puoi inizializzare così il vettore, ma devi usare un ciclo for che scorrendo tutto l'indice scrive 0 in ogni cella del vettore ;)be', no non devi, puoi fare come ho già detto:

mica ho capito che devi fare, inizializzare l'array con tutti zero?


int int_array[100] = { 0 };

zanardi84
08-10-2010, 20:52
be', no non devi, puoi fare come ho già detto:

Sottintendevo che l'inizializzazione "diretta" come per una semplice variablie comportasse un messaggio di errore dal compilatore.

Non sapevo del metodo che avevi postato.
In pratica elimina un ciclo for.