Programma in C

di il
3 risposte

Programma in C

Ho iniziato a creare un programma in C ma ho un problema. La traccia è la seguente: dopo aver allocato dinamicamente in un vettore una serie di numeri (condizione di uscita numero<0), stampa a video quanti numeri hai inserito e quali sono questi numeri. Ho provato a farlo ma quando provo a stampare i numeri inseriti mi esce solo l'ultimo e non tutti. Come posso fare? Grazie mille

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
int numero, *numeri=NULL, lunghezza=0;
int conta=0, new_conta=0;




do {
printf ("Inserisci un numero: \n");
scanf ("%d", &numero);
if (numero>=0) {
numeri=(int*)realloc(numeri,++lunghezza*(sizeof(int)));
if (numero<0) {
printf ("Memoria insufficiente per allocare\n");
exit (1);
}
*(numeri+(lunghezza-1))=numero;
}

conta=conta+1;
new_conta=conta-1;

} while (numero>=0 || lunghezza==0);

printf ("\n");
printf ("I numeri inseriti sono %d\n", new_conta);

printf ("I numeri inseriti sono i seguenti\n");

for (i=0; i<new_conta; i++)
printf ("Numero %d: %d\n", i+1, numero);

return 0;
}

3 Risposte

  • Re: Programma in C

    Usa i tag CODE per postare il codice nel forum o non si capisce

    In ogni caso, tu visualizzi il valore della variabile numero in

    printf ("Numero %d: %d\n", i+1, numero);

    e non dell'array allocato. Cosa ti aspetti dunque?
  • Re: Programma in C

    Prova anche a leggere le documentazioni online.

    Ad esempio
    http://www.cplusplus.com/reference/cstdlib/realloc

    Contiene esattamente il tuo esercizio se cambi la condizione while(input!=0) in while(input>=0) ...
  • Re: Programma in C

    Ho risolto, non avevo fatto caso al mio errore. Grazie mille davvero!
Devi accedere o registrarti per scrivere nel forum
3 risposte