ESERCIZIO ARRAY IN C

di il
15 risposte

ESERCIZIO ARRAY IN C

Salve a tutti. Trovo un errore nel momento in cui entro nel ciclo do-while. In pratica non riesco ad inserire i valori. Qualcuno potrebbe aiutarmi? Vi ringrazio

/*Scrivere un programma che, che acquisisca e stampi gli elementi di un vettore
di interi la sequenza di input termina quando l’utente digita la sentinella 999*/

#include <stdio.h>
#include <stdlib.h>
#define DIM 100

int main() {
    int vet[DIM],i,n;
    
    printf("Quanti elementi vuoi inserire?: ");
    scanf("%d",&n);
    printf("Sono stati allocati %d elementi nel vettore\n",n);
    
    do{
        printf("Inserisci un nuovo valore o il valore 999 per terminare ");
        scanf("%d",&vet[i]);
        i++;  
    }while(i<n && vet[i-1]!=999);
        
    /*stampare il vettore*/
    for(i=0;i<n;i++){
        printf("Valore vet[%d]: %d\n",i,vet[i]);
    }

    return 0;
}

15 Risposte

  • Re: ESERCIZIO ARRAY IN C

    Controlla meglio a me funziona!
  • Re: ESERCIZIO ARRAY IN C

    Non saprei...
  • Re: ESERCIZIO ARRAY IN C

    Prova a mettere un ciclo for dopo aver chiesto di inserire i valori dell'array, che parte da i fino alla dimensione dell'array..
    Io sto lavorando in C++ e alla lettura degli elementi dell'array faccio così
    
    cout << "inserisci gli elementi dell'array"<< endl;
    for (int i=0;i<dim;i++)
    cout << "v[" << i << "]=";
    cin>>v[i];
    
  • Re: ESERCIZIO ARRAY IN C

    Prova fflush(stdout); dopo ogni printf
  • Re: ESERCIZIO ARRAY IN C

    Ringrazio tutti per questi aiuti, peccato che non funziona :/ Sicuramente sarà un problema del compilatore
  • Re: ESERCIZIO ARRAY IN C

    Nessuno si è accorto che la variabile i non è stata opportunamente inizializzata?
  • Re: ESERCIZIO ARRAY IN C

    Int vet[DIM],i=0,n;
    cosi funziona
  • Re: ESERCIZIO ARRAY IN C

    Nippolo ha scritto:


    Nessuno si è accorto che la variabile i non è stata opportunamente inizializzata?
    C'era n che ingannava
  • Re: ESERCIZIO ARRAY IN C

    Comunque si presenta un altro errore... Il do while va all'infinito :/
  • Re: ESERCIZIO ARRAY IN C

    Nel do-while devi mettere solo
    while(vet[i]!=999);
    
  • Re: ESERCIZIO ARRAY IN C

    Si presenta sempre lo stesso errore... do-while all'infinito
  • Re: ESERCIZIO ARRAY IN C

    Posta il codice completo aggiornato.
  • Re: ESERCIZIO ARRAY IN C

    cavamr ha scritto:


    Nel do-while devi mettere solo
    while(vet[i]!=999);
    
    i < n ci deve stare altrimenti va avanti finché non inserisce 999 e rischia di sforare la dimensione del vettore.

    Il programma funziona benissimo solo inizializzando i, soltanto dai un'occhiata a cosa viene stampato se esci dal ciclo con un 999.
  • Re: ESERCIZIO ARRAY IN C

    Nel programma ci sono alcune incongruenze
    Ad esempio scrivi sono stati allocati x elementi nel vettore dove n è il numero immesso dall'utente ma in realtà il tuto vettore è allocato per 100 elementi
    Inoltre chiedi prima quanti se ne vogliono inserire ma questo numero serve a poco visto che poi con 999 puoi inserirne di meno
    Comunque sia a me cosi funziona.
    (Ho dichiarato static il vettore altrimenti quando lo vai a stampare a video, per i valori non immessi, ti appaiono numeri a lotto.
    
    #include <stdio.h>
    #include <stdlib.h>
    #define DIM 100
    
    int main() {
        static int vet[DIM],i=0,n;
        
        printf("Quanti elementi vuoi inserire?: ");
        scanf("%d",&n);
        printf("Sono stati allocati %d elementi nel vettore\n",n); // veramente sono 100    
        do
        {
            printf("Inserisci un nuovo valore o il valore 999 per terminare ");
            scanf("%d",&vet[i]);
            i++;  
        }
        while(i<n && vet[i-1]!=999);
            
        /*stampare il vettore*/
        for(i=0;i<n;i++){
            printf("Valore vet[%d]: %d\n",i,vet[i]);
        }
    
        return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
15 risposte