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

    [C] difficolta con programma conversione numeri

    Ciao a tutti, sto creando un programma per convertire numeri romani, il problema è che non funziona come dovrebbe, io inizialmente avevo pensato di di vedere le decine dei numeri esempio prendiamo il 50, io nel ciclo if dichiaro che 50 = L (per le decine) e per le unita invece sotraggo ad 'a' 50 cosi mi rimane solo piu un numero da decifrare.
    questo numero (a) lo passo a switch che controlla a cosa corisponde l'unita.

    il problema è che mi da degli avvertimenti l'editor, io chiedo alla persona che vuole convertire il numero un numero con variabile char perche con int non posso convertirla in char, ammeno che non faccio un casting, però se faccio cosi, senza chiedere prima un int e poi convertirlo in char, non posso farlo eseguire correttamente il programma?

    ve lo faccio vedere:

    codice:
    #include <stdio.h>
    
    int main (int argc, const char * argv[]) {
    
    	
    	char a;
    	char b;
    	
    	printf("Che numero vorresti convertire in numero romano\? \n");
    	scanf("%c", &a);
    	
    if (a >= 10 && a<= 19) {
    	b = 'XX';
    	a -= 10;
    }
    else if (a >= 20 && a<= 29) {
    	b = 'XX';
    	a -= 20;
    }
    else if (a >= 30 && a<= 39) {
    	b = 'XXX';
    	a -= 30;
    }
    else if (a >= 40 && a <= 49) {
    	b = 'XL';
    	a -= 40;
    }
    else if (a >= 50 && a <= 59) {
    	b = 'L';
    	a -= 50;
    }
    else if (a >= 60 && a <= 69) {
    	b = 'LX';
    	a -= 60;
    }
    
    else if (a >= 70 && a <= 79) {
    	b = 'LXX';
    	a -= 70;
    }
    else if (a >= 80 && a <=  89) {
    	b = 'LXXX';
    	a -= 80;
    }
    else if (a >= 90 && a <=   99) {
    	b = 'XC';
    	a -= 90;
    }
    else if (a == 100) {
    	b = 'C';
    	a -= 100;
    }
    else{
    	printf("Hai inserito un numero minore di 1 e superiore di 100!");
    }
    	
    	
    	
    	switch (a) {
    		case 0:
    			a =' ';
    			break;
    			
    		case 1:
    			a = 'I';
    				break;
    		case 2:
    			a = 'II';
    			break;
    		case 3:
    			a = 'III';
    			break;
    		case 4:
    			a = 'IV';
    			break;
    		case 5:
    			a = 'V';
    			break;
    		case 6:
    			a = 'VI';
    			break;
    
    		case 7:
    			a = 'VII';
    			break;
    		case 8:
    			a = 'VIII';
    			break;
    		case 9:
    			a = 'IX';
    			break;
    	}
    
    	
    	printf("Il numero è: %c%c", b, a);
    	
    	
    	
        return 0;
    }
    Spero di essere stato chiaro, perche ho spiegato abbastanza bene anche se un po in modo confuso... =D

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2010
    Messaggi
    466

    Re: [C] difficolta con programma conversione numeri

    Originariamente inviato da gennahouse
    il problema è che mi da degli avvertimenti l'editor
    I warning che ti da sono generati da sintassi come queste
    codice:
    char b;
    ...
    b = 'XX'
    ripetute in tutto il programma.
    Nel caso di b, la variabile può assumere un valore uguale a 'X' ma solo un array char (in questo caso di 2 elementi) può valere = "XX" e racchiuso da doppi apici, a significare che è una stringa di caratteri.
    Seconda cosa, non puoi trattare un char direttamente come fosse un int, rivedi le condizioni degfli if..

    PS: se non sbaglio qualche settimana fà è stato trattato lo stesso argomento in un altro thread, ossia un programma per convertire i numeri romani..

  3. #3
    Ciao, grazie della risposta, ci sono riuscito a farlo come lo voleva l'esercizio, avevo sbagliato a leggere, non chiedeva di chiedere un numero e di tradurlo, ma chiedeva di stampare i numeri da 1 a 100 in numeri romani...

    Il discorso è che ho dovuto usare le array, e nel esercizio invece non ci sono... perche il capitolo delle array è tra 2 capitoli... Bho spero solo di non aver problemi...

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.