Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    sapete dirmi dov'è l'errore, perchè non lo compila

    codice:
    /*
      Name: Calcolo dei giorni tra due date
      Copyright: 
      Author: 
      Date: 21/10/12 10:29
      Description: questo programma è in grado di calcolare quanti giorni intercorrono tra le due date
    */
    #include<stdio.h>
    #include<stdlib.h>
    //variabili di input
    int giorno1, giorno2, mese1, mese2, anno1, anno2;
    
    //variabili di outut
    int numero;
    
    //variabili di programma
    int numero1;
    int numero2;
    int anniInteri;
    int anniBisestili;
    //variabili di input
    int giorno, mese, anno;
    //variabili di input/output
    int CalcoloBisestile;
    
    //variabili di output
    int numero;
    
    
    
    //calcolo se l'anno è bisestile
    int bisestile(int anno);
    int
    bisestile(int anno)
    {
    //calcolo anno bisestile
    CalcoloBisestile = ((anno %4 ==0) && (anno %100 !=0) || (anno %400 ==0));
    
    //restituisco il risultato
    return(CalcoloBisestile);
    }
    //calcolo il numero dei giorni trascorsi
     int CalcoloNumero (int mese);
     int 
    CalcoloNumero(int mese)
      {   
    
    switch(mese)
    {
    case 1:
         numero = giorno;
         break;
    case 2:
         numero = giorno + 31;
         break;
    case 3:
         numero = giorno + 28 + 31 + bisestile(anno);
         break;
    case 4:
         numero = giorno + 28 + 31*2 + bisestile(anno);
         break;
    case 5:
         numero = giorno + 28 + 30 + 31*2 + bisestile(anno);
         break;
    case 6:
         numero = giorno + 28 + 30 + 31*3 + bisestile(anno);
         break;
    case 7:
         numero = giorno + 28 + 30*2 + 31*3 + bisestile(anno);
         break; 
    case 8:
         numero = giorno + 28 + 30*2 + 31*4 + bisestile(anno);
         break;
    case 9:
         numero = giorno + 28 + 30*2 + 31*5 + bisestile(anno);
         break; 
    case 10:
         numero = giorno + 28 + 30*3 + 31*5 + bisestile(anno);
         break;
    case 11:
         numero = giorno + 28 + 30*3 + 31*6 + bisestile(anno);
         break;
    case 12:
         numero = giorno + 28 + 30*4 + 31*6 + bisestile(anno);
         break;
    //restituisco il risultato
    return (numero);
    }
    }
    int giorniTrascorsiI (int giorno, int mese, int anno);
    int 
    giorniTrascorsiI (int giorno, int mese, int anno)
     {
     int giorniTrascorsiI;
     //input
         
    //calcolo il risultato
    numero = CalcoloNumero(mese);
    //mostro il risultato
    
    retutn(numero);
    }     
        
    
    
    
    
    //calcola anni bisestili
    
    int CalcolaNumero1 (int giorno1, int mese1, int anno1);
    int 
    CalcolaNumero1 (int giorno1, int mese1, int anno1)
    {
    numero1 = 366 - numero + bisestile(anno1);
    
    return(numero1);
    }
    
    int CalcolaNumero2(int giorno2,int mese2,int anno2);
    int 
    CalcolaNumero2(int giorno2,int mese2,int anno2)
    {
    
    
    switch(mese)
    {
    case 1:
         numero2 = giorno;
         break;
    case 2:
         numero2 = giorno + 31;
         break;
    case 3:
         numero2 = giorno + 28 + 31 + bisestile(anno);
         break;
    case 4:
         numero2 = giorno + 28 + 31*2 + bisestile(anno);
         break;
    case 5:
         numero2 = giorno + 28 + 30 + 31*2 + bisestile(anno);
         break;
    case 6:
         numero2 = giorno + 28 + 30 + 31*3 + bisestile(anno);
         break;
    case 7:
         numero2 = giorno + 28 + 30*2 + 31*3 + bisestile(anno);
         break; 
    case 8:
         numero2 = giorno + 28 + 30*2 + 31*4 + bisestile(anno);
         break;
    case 9:
         numero2 = giorno + 28 + 30*2 + 31*5 + bisestile(anno);
         break; 
    case 10:
         numero2 = giorno + 28 + 30*3 + 31*5 + bisestile(anno);
         break;
    case 11:
         numero2 = giorno + 28 + 30*3 + 31*6 + bisestile(anno);
         break;
    case 12:
         numero2 = giorno + 28 + 30*4 + 31*6 + bisestile(anno);
         break;
    //restituisco il risultato
    return (numero);
    }
    }
    int giorniTrascorsiII (int giorno, int mese, int anno);
    int 
    giorniTrascorsiII (int giorno, int mese, int anno)
     {
     int giorniTrascorsiII;
     //input
         
    //calcolo il risultato
    numero2 = CalcoloNumero(mese);
    //mostro il risultato
    
    retutn(numero2);
    }     
    int CalcoloanniBisestili(int anno);
    int 
    CalcoloanniBisestili(int anno)
    {
    for (int i=anno1; i<=anno2; i++)
    { 
           (((i % 4) == 0 && (i % 100) != 0) || (i % 400) == 0)  
             
                anniBisestili = anniBisestili + 1; 
            }
    }
    int CalcolaAnniInteri(int anno1,int anno2);
    int 
    CalcolaAnniInteri(int anno1,int anno2)
    {
    
    
    anniInteri = anniBisestili + 365 * (anno2 - anno1 -1);
    
    return(anniInteri);
    }
    int
    main ()
    
    {
     printf("  Inserisci giorno 1 --->");
     scanf("%d", &giorno1);
     printf("  Inserisci mese 1   --->"); 
     scanf("%d", &mese1);
     printf("  Inserisci anno 1   --->");
     scanf("%d", &anno1);
     
     printf("\n\n\n  Inserisci giorno 2 --->");
     scanf("%d", &giorno2);
     printf("  Inserisci mese 2  --->"); 
     scanf("%d", &mese2);
     printf("  Inserisci anno 2   --->");
     scanf("%d", &anno2);
        
     
    //calcolo numero     
    numero = numero1 + numero2 + anniInteri;
    
    //mostro risultato
    printf("il risultato e' --->%d", numero);
    //mostra il risultato
    system("PAUSE");  
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Prima di tutto devi includere il codice tra tag CODE (e leggere il regolamento del forum) altrimenti non si capisce molto.

    In secondo luogo, perché non ci dici quali errori hai in compilazione invece di chiederli a noi?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    io ho appena iniziato a studiare il C quindi non usare termini incomprenibili.
    gli errori sono questi:
    C:\Users\user\Desktop\def3.0.c In function `CalcoloanniBisestili':
    187 C:\Users\user\Desktop\def3.0.c 'for' loop initial declaration used outside C99 mode
    191 C:\Users\user\Desktop\def3.0.c syntax error before "anniBisestili"
    è al for che mi da errore

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da keCCo93
    io ho appena iniziato a studiare il C quindi non usare termini incomprenibili.
    Mi dispiace ma i termini che devono essere usati non posso non usarli. In ogni caso, tu chiedi ciò che non comprendi.

    Per i tag CODE chiedi al moderatore del forum in modo che corregga il tuo primo thread.

    In function `CalcoloanniBisestili':
    In quella funzione hai scritto

    (((i % 4) == 0 && (i % 100) != 0) || (i % 400) == 0)

    Cosa vuol dire? Hai dimenticato qualcosa?
    Inoltre quella funzione non restituisce nessun valore eppure dovrebbe restituire un int.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    quella funzione dovrebbe restituire il valore dell'anniBisestili, ma non restituisce niente anche se ci metto " anniBisestili = (((i % 4) == 0 && (i % 100) != 0) || (i % 400) == 0)"



    a dire la verità l'esercizio mi dice di utilizzare questo calcolo, ma io proprio non ho capito cosa fare anche xkè così non me lo compila, così ho provato con l'altro

    for (i = (anno1 +1); i <= (annno2 -1); ++i)
    {
    anniBisestili = anniBisestili + bisestile(I);
    return(anniBisestili);
    }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quello è il calcolo per determinare se un anno è bisestile.

    Il fatto è che non si capisce l'organizzazione del tuo programma.

    Hai anche una funzione

    bisestile(int anno)

    che fa quel calcolo.

    Nella CalcoloanniBisestili(int anno) accetti un parametro int anno ... ma a cosa ti serve?

    Forse stai facendo un po' di confusione

    La funzione bisestile(int anno) ti serve a sapere se l'anno passato come argomento è bisestile. L'altra funzione dovrebbe calcolare quanti anni bisestili ci sono tra anno1 e anno2 e quindi dovrebbe essere

    int CalcoloanniBisestili(int a1, int a2)

    e al suo interno dovresti chiamare la funzione

    bisestile

    per ogni anno compresto tra a1 e a2 (quindi all'interno della for)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7

    Moderazione

    Originariamente inviato da oregon
    Prima di tutto devi includere il codice tra tag CODE (e leggere il regolamento del forum) altrimenti non si capisce molto.
    Questo, e inoltre:
    - nel titolo va inserito il linguaggio di riferimento della domanda come "tag";
    - il titolo deve essere significativo - sai quante domande abbiamo su codice che genericamente non compila?

    In ogni caso, ho sistemato sia i tag [CODE] ... [/CODE] che il titolo; dai un'occhiata al regolamento e in futuro imposta correttamente le discussioni fin da subito.

    Amaro C++, il gusto pieno dell'undefined behavior.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.