Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156

    [C] esercizio array

    Salve ragazzi,
    il programma in questione dovrebbe ricevere in input una serie di dati che rappresentano l'importo e le date di emissione di un certo numero di fatture ( la data è espressa con tre numeri differenti) e dovrebbe restituire in output:
    -La sequenza degli importi nello stesso ordine iniziale.
    -Il totale delle fatture emesse.
    -La sequenza delle date di emissione.
    Dopo aver letto il primo dato si blocca ed esce il classico errore di windows...Ho fatto un programma con la stessa funzione di questo usando un solo array e funziona bene ma questo mi da problemi. Dove ho sbagliato? Vi posto il codice!
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
          int n,i,s,cont,fatture[100],giorno[100],mese[100],anno[100];
          scanf("%d", &n);
          while(n!=-1)
          {
                                  
                      fatture[i]=n;
                      s=s+n;
                      scanf("%d", &n);
                      giorno[i]=n;
                      scanf("%d", &n);
                      mese[i]=n;
                      scanf("%d", &n);
                      anno[i]=n;
                      i=i+1;
                      scanf("%d", &n);
          }                                                                           
          cont=i;
          i=0;
          while(i<=cont)
          {
                        printf("$ %d \n", fatture[i]);
                        i=i+1;
          }
          printf("La somma di tutte le fatture e' %d", s);
          i=0;
          printf("DATE DI EMISSIONE:\n");
          while(n<=cont)
          {
                        printf("%d /", giorno[i]);
                        printf("%d /", mese[i]);
                        printf("%d ", anno[i]);
                        i=i+1;
          }
          system("pause");
          }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Prima del primo while non hai inizializzato il valore della variabile i che pertanto sarà indefinito.
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    L'ho inizializzato..Ora mi da errore quando inserisco il -1

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da slashino
    L'ho inizializzato..Ora mi da errore quando inserisco il -1
    Ovvero?

    Cerca di essere sempre preciso nelle domande ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Allora: legge tutti i valori, poi nel momento in cui inserisco -1 mi restituisce tantissimi valori ( con molti zeri tra l'altro) e successivamente ricompare l'errore precedente...

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462

    Re: [C] esercizio array

    Allora, da modificare nelle varie parti del programma ...

    s=0;

    cont = i-1;

    in tutti e due i while

    while(i<cont)

    (nel secondo c'è addirittura n e non i ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: [C] esercizio array

    Originariamente inviato da oregon
    Allora, da modificare nelle varie parti del programma ...

    s=0;

    cont = i-1;

    in tutti e due i while

    while(i<cont)

    (nel secondo c'è addirittura n e non i ...)
    Aggiungo che il secondo ed il terzo while sarebbero da sostituire con un ciclo for: un ciclo while si usa quando il numero di iterazioni non è noto, il ciclo for quando sai quante volte iterare.

    Funziona lo stesso anche lasciando il while, solo che non sarebbe il costrutto più adatto
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Ho riscritto il programma come segue, ma continua a darmi problemi( come potete vedere dallo screen):
    codice:
    #include<stdio.h>
    #include<stdlib.h>
    main()
    {
          
          int fattura[30],giorno[30],mese[30],anno[30],i,s,n,dim;
          i=0;
          s=0;
          scanf("&d", &n);
          while(n!=-1)
          {
                fattura[i]=n;
                s=s+n;
                scanf("%d", &n);
                giorno[i]=n;
                scanf("%d", &n);
                mese[i]=n;
                scanf("%d", &n);
                anno[i]=n;
                i=i+1;
          }
          dim=i-1;
          i=0;
          printf("L'elenco dei valori e'\n");
          for(i=0;i<=dim;i++)
          {
                             printf("%d\n", fattura[i]);
          }
          printf("La somma dei valori e' %d\n", s);
          i=0;
          printf("L'elenco delle date e'\n");
          for(i=0;i<=dim;i++)
          {
                             printf("%d/", giorno[i]);
                             printf("%d/n", mese[i]);
                             printf("%d\n", anno[i]);
          }
    system("pause");
    }


    Uploaded with ImageShack.us

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Hai modificato le while con le for ma hai scritto

    i<=dim

    mentre ti avevo detto che deve essere

    i<dim

    ... fai attenzione.

    E poi, se inizializzi i

    i=0

    nella for, allora non serve la

    i=0;

    prima. Ripassa queste nozioni elementari del linguaggio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    156
    Scusa, se dim=i-1 vuol dire che dim rappresenta l'effettivo numero di elementi significativi presenti nell'array. Quando li vado a stampare con il ciclo for, dovendo stampare anche l'ultimo elemento significativo, non devo utilizzare <= anzichè <?

    Per l'altro punto: quindi posso evitare di inizializzare di nuovo i a 0 poichè la inizializzo già nel ciclo for?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.