Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19

    [C] Numeri romani

    Vorrei capire perché il programma non mi converte i numeri decimali in romani.
    Sicuramente c'è qualche errore, ma non sono riuscita ad individuarlo.
    Qualcuno può aiutarmi?


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

    int main()
    {
    int numero, decina, unita;

    printf("Inserire un numero da 1 a 99:\n");
    scanf("%d", &numero);

    if (numero <= 0)
    printf("Numero impossibile da scrivere in numeri romani\n");

    else
    {
    printf("\n%d = ", numero);
    decina = numero / 10;
    unita = numero % 10;

    if (numero >= 0)
    {
    switch (decina)
    {
    case '1': printf("X");
    break;

    case '2': printf("XX");
    break;

    case '3': printf("XXX");
    break;

    case '4': printf("XL");
    break;

    case '5': printf("L");
    break;

    case '6': printf("LX");
    break;

    case '7': printf("LXX");
    break;

    case '8': printf("LXXX");
    break;

    case '9': printf("LC");
    }
    }
    switch (unita)
    {
    case '1': printf("I");
    break;

    case '2': printf("II");
    break;

    case '3': printf("III");
    break;

    case '4': printf("IV");
    break;

    case '5': printf("V");
    break;

    case '6': printf("VI");
    break;

    case '7': printf("VII");
    break;

    case '8': printf("VIII");
    break;

    case '9': printf("IX");
    }
    printf("\n\n");
    }
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    E' l'algoritmo che non va. In questo modo il 49 ti esce XLIX e invece è IL.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19
    49 dovrebbe essere giusto. Si scrive XLIX.


    Però, nel momento in cui faccio partire il programma,
    mi stampa ad esempio

    "49 = "

    Cioè, il ciclo switch è come se non ci fosse..non ci entra nemmeno.

  4. #4
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    L'ALGORITMO VA
    nello switch fai il confronto con caratteri

    switch(numero)
    {
    case '1':
    break;

    case '2':
    break;



    }


    deve essere un confronto tra numeri "senza virgolette"
    switch(numero)
    {
    case 1:
    break;

    case 2:
    break;



    }


    controlla che tutte le parentesi graffe sono chiuse e aperte correttamente

    e sostituisci

    decine=numero/10;
    con
    if(numero>=10)
    decine=(int)numero/10;
    Tecnologia

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Devi usare i tag CODE per il codice ... dovresti già saperlo ...

    Lo switch non è un ciclo ...

    Se decina è un numero devi scrivere

    case 1:

    e non

    case '1':
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da escocat
    E' l'algoritmo che non va. In questo modo il 49 ti esce XLIX e invece è IL.
    No, XLIX è giusto
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308
    L'ho sempre pensato che il C non è il mio linguaggio

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19

    Re: ciao

    Originariamente inviato da torn24
    L'ALGORITMO VA
    nello switch fai il confronto con caratteri

    switch(numero)
    {
    case '1':
    break;

    case '2':
    break;



    }


    deve essere un confronto tra numeri "senza virgolette"
    switch(numero)
    {
    case 1:
    break;

    case 2:
    break;



    }


    controlla che tutte le parentesi graffe sono chiuse e aperte correttamente

    e sostituisci

    decine=numero/10;
    con
    if(numero>=10)
    decine=(int)numero/10;

    Grazie mille, davvero. Adesso il programma funziona perfettamente! Mi è bastato togliere le virgolette..lo terrò a mente per le prossime volte!

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

    Re: Re: ciao

    Originariamente inviato da Sos_Code
    Mi è bastato togliere le virgolette..
    Ma dovresti anche spiegarti cosa significa mettere o non mettere le virgolette ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    19
    Se per te non è un disturbo, potresti spiegarmelo tu..

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.