Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    38

    [c] neofita chiede un semplice aiuto

    Ciao a tutti

    Sto studiano C e sono alle prime armi.

    Ho così scritto per allenarmi questo semlice programmino

    #include <stdio.h>

    main()
    {
    int annasc, etat;
    printf("inscerisci il tuo anno di nascita e premi invio \n");
    scanf("%d", &annasc);
    etat = 2003 - annasc;
    etat > 40 ? printf("hai superato gli anta, avendo %d anni \n", etat) : ("Hai ancora parecchi anni di vita davanti a te, avendo solo %d anni /n", etat);




    }

    Come potete vedere qualcosa non va.

    + Precisamente io volevo che a seconda dell' eta di una persona venisse visualizzato un messaggio differente.

    Come posso fare visto che così non va?

    Help Ciao
    fatti non foste a viver come bruti, ma per seguire virtute e canoscenza

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    4
    codice:
    #include <stdlib.h>
    #include <stdio.h>
    
    void main() 
    { 
      int annasc, etat; 
      printf("Inscerisci il tuo anno di nascita e premi invio: "); 
      scanf("%d", &annasc); 
    
      etat = 2003 - annasc; 
      printf( (etat > 40 ? "Hai superato gli anta, avendo %d anni...\n" : "Hai ancora parecchi anni di vita davanti a te, avendo solo %d anni...\n"), etat); 
    
      system ("PAUSE");
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2003
    Messaggi
    38
    Grazie mille
    fatti non foste a viver come bruti, ma per seguire virtute e canoscenza

  4. #4
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Cosi' non va perche' la struttura

    condizione ? istruzione_1 : istruzione_2

    non puo' essere usata per chiamare funzioni differenti.

    Puoi scrivere pero'

    if (etat > 40)
    printf ("hai superato gli anta, avendo %d anni\n", etat);
    else
    printf ("Hai ancora parecchi anni di vita davanti a te, avendo solo %d anni", etat);

    oppure

    codice:
    printf ("%s, avendo %d anni\n", 
            (etat > 40) ? 
            "hai superato gli anta" : 
            "Hai ancora parecchi anni di vita davanti a te",    
            etat);
    Ho disposto il secondo snippet di codice su piu' righe solo per renderlo piu' leggibile.
    Io preferisco il secondo metodo, personalmente: lo vedo piu' elegante e compatto, eliminando la ridondanza.
    ChReAn
    -------------------

    Slackware 9.1 powered

  5. #5

    C una domandina...

    Ciao

    ankio sono alle primissime armi con C,
    mi ha molto sorpreso l'esistenza della struttura

    condizione ? istruzione_1 : istruzione 2

    è molto interessante invece dei noiosi case e if...
    ho provato ankio a fare un programmino con l'età e poi di seguito uno
    che in base al sesso dell'utente genera una frase...
    xò succede ke quando lo facico girare, la prima parte funzia bene, ma
    poi mi fa girare automaticamente la seconda parte scrivendomi automaticamente la seconda istruzione !!! neanke si degna dello scanf!!! e mi era successo anke con un altro programmino simile ke avevo fatto..io vengo dal pascal, e qui non so bene come comportarmi..ho visto ke non è questione di parentesi o punteggiatura...

    cmq ecco il mio programmino:

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

    int main ()
    {
    int annasc,etat;
    char sex;
    printf("Inscerisci il tuo anno di nascita e premi invio: ");
    scanf("%d", &annasc);
    etat=2003-annasc;
    printf ("%s, avendo %d anni\n",(etat > 40) ? "Divertiti ke il tempo passa" :
    "Hai ancora parecchi anni di vita davanti a te",etat);

    system("PAUSE");

    printf ("sei maschio o femmina?\n");
    printf ("Premi M se sei un Maschione e premi F sei sei una Figona\n");
    scanf("%c",&sex);
    printf ("%s, avendo premuto %c\n", (sex=='m') ? "dai ce n'e' per tutti" : "partorirai con dolore", sex);

    system ("PAUSE");

    return 0;
    }



    perchè succede così ? e poi mi potete spiegare x favore un po' meglio questa procedurina...quali sono i limiti...se voglio fare + di 2 condizioni qual'è la sintassi? perché prima della condizione avete messo %s invece ke %d? s sta per stringa? grazie tante

  6. #6
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    In pratica quando leggi un carattere con il primo scanf, resta nel buffer di lettura anche il return, che viene passato al secondo scanf.

    Si dovrebbe rendere il tutto un po' piu' intelligente, ti consiglio di cercare degli esempi di scanf sul web (lo farei io ma non ho tempo adesso).
    ChReAn
    -------------------

    Slackware 9.1 powered

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.