Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C] Anno bisestile

  1. #1

    uhm anno bisestile

    Uhm scusate sono nuovo..faccio Ingegneria Fisica e il c mi serve x l'esame di informatica e sono ancora allep rime armi..
    se qlk anima pia avesse la pazienza di rispondermi ogni tanto a qlk dubbietto stupido non sarebbe male. uhuh :P
    la mia domanda di oggi è una cazzata ma nn capisco ....
    programmino x sgamare gli anni bisestili:
    #include <math.h>
    #include <stdlib.h>
    #include <stdio.h>

    int main()
    {
    int x;
    while(x>0) {
    printf("Inserisci un numero intero positivo: ");
    scanf("%d",&x);
    if(((x % 4 == 0) && (x % 100!=0)) ||(x % 400 == 0))
    printf("Questo numero corrisponde a un anno bisestile mannaggiona!");
    else printf("L'anno non e' bisestile");

    }
    system("PAUSE");
    return 0;

    }
    ora..xche' se metto 0 mi entra lostesso nel ciclo em idice che è bisestile porca miseria?
    che diff c'è tra il while e il do while?
    grazie in anticipo.tao

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Guarda che il controllo della variabile x viene fatto quando esegue la while e non quando esegue la scanf.

    La while viene prima della scanf e in quel momento il valore della x non e' determinato (e questo e' gia' un errore) sebbene essa possa essere diversa da zero ...

    Le correzioni che devi apportare dipendono dal "flusso" che tu desideri che il programma abbia ... ma se ho capito potresti scrivere

    codice:
      int x;
    
      while(1) 
      {
        printf("Inserisci un numero intero positivo: ");
    		
        scanf("%d", &x);
        if(x==0) break;
    
        if(((x % 4 == 0) && (x % 100!=0)) ||(x % 400 == 0))
          printf("Questo numero corrisponde a un anno bisestile mannaggiona!");
        else 
          printf("L'anno non e' bisestile");
    
        printf("\n\n");
      }
    
      system("PAUSE");
    
      return 0;

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,288

    Moderazione

    Il linguaggio anche nel titolo, come da Regolamento.

    Correggo io il titolo di questa discussione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    scusami ma che roba è while(1)???
    o insomma potrest essere + chiaro?scusa...ma nn ho capito del tutto

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

    while(1)

    si indica che il ciclo deve essere ripetuto per sempre, dato che il valore di controllo e' costantemente vero.

    Dal ciclo si esce con

    if(x==0) break;

    Ma queste sono le *basi* del C, che ti conviene ripassare per poter superare un qualsiasi esame di informatica basato sul linguaggio C ...

  6. #6
    Avrei bisogno di qlk anima pia che mi spieghi la differenza tra i cicli while e do while con opportuni esempi che ne dimostino la diversita'....e che mi dica in genwerale quando devo usareu no e quando l'altro..
    grazie in anticipo ...
    ciao

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

    Per quanto riguarda il costrutto while, esso specifica soltanto la condizione di iterazione, lasciando le due altre operazioni al codice. Esiste una variante, la do... while. Esaminiamone la sintassi:

    while (condizione) {
    [istruzioni]
    }

    while (condizione) istruzione;

    do {
    [istruzioni]
    } while (condizione);

    do [istruzione] while (condizione);

    La differenza tra i costrutti è tanto semplice quanto sostanziale:

    While verifica la condizione: se è vera esegue il ciclo finché la condizione non diventerà falsa

    Do... While esegue la prima iterazione, e poi si comporta come il precedente
    P.S. Pero' questo non c'entra con l'Anno bisestile ... dovevi aprire un altro thread ...

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da oregon
    Con

    while(1)

    si indica che il ciclo deve essere ripetuto per sempre, dato che il valore di controllo e' costantemente vero.

    Dal ciclo si esce con

    if(x==0) break;
    questa cosa sarebbe meglio evitarla... per uscire dal ciclo si dovrebbe usare la condizione del while!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Da un punto di vista strettamente "formale" sì, ma non per altro ...

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.