Come da titolo...
...Ho rimediato un programma in java che effettua la conversione di un numero nel suo corrispondente in cifre, come avviene nei programmi per gestire gli assegni in modo automatizzato.
Il programma che devo fare in poche parole deve ricevere in input un numero e trasformarlo in una stringa con il valore in lettere di quella cifra.
Esempio
2005 -> diventa -> duemilacinque
1 -> diventa -> uno
1996 -> diventa -> millenovecentonovantasei
Ora io ho il listato in Java fatto da una persona che lo metteva a disposizione nel suo sito, ora mi dovreste fare un piacere, e cioè convertire questo programma in linguaggio C, visto che io non conosco nè C++ ne java, quindi per me la programmazione ad oggetti è totalmente sconosciuta.
Non chiedo che me lo convertiate tutto ma solo che mi aiutate nelle parti più difficili e complesse.
Listato Java
codice:
/** Author : Flavio Rocchi
* Mail : blueeice(at)inwind(dot)it
* Date : 11.01.2005
* Copyright ® Flavio Rocchi. All rights are reserved.
*/
class translateNumberToLetter
{
public static void main(String args[]) {
if(args.length == 2)
System.out.println(getTranslateNumber(args[0], args[1]));
else
System.out.println("La classe deve essere lanciata con due parametri.\nIl primo rappresenta gli interi, l'altro, i decimali.\n");
}
protected static String getTranslateNumber(String number, String decimal) {
int size = number.length();
String letter = new String("");
int resto = size % 3;
int i = 0, count = 0;
if(resto > 0) {
letter += getDecimals(number.substring(0, resto));
letter += getDefinition(number, size);
}
for(i=resto;i<size;i+=3) {
letter += getHundredValue(number.substring(i, (i+3 > size)?size:i+3), (size - count*3 -resto));
count++;
}
return letter + "/" + decimal + " euro";
}
private static String getSingleNumber(char number) {
switch(number) {
case C1:
return S1;
case C2:
return S2;
case C3:
return S3;
case C4:
return S4;
case C5:
return S5;
case C6:
return S6;
case C7:
return S7;
case C8:
return S8;
case C9:
return S9;
default:
return SD;
}
}
private static String getDecimals(String number) {
String definition = new String("");
String stringvalue = new String("");
int value = new Integer(number).parseInt(number);
boolean flag = false;
if(value > 0 && value < 10){
if(number.length() == 1)
if(number.equals("1")) return SD;
else definition = getSingleNumber(number.charAt(0));
else
definition = getSingleNumber(number.charAt(1));
flag = true;
}
if(value >= 10 && value < 20) {
switch(value) {
case 10:
definition = S10; break;
case 11:
definition = S11; break;
case 12:
definition = S12; break;
case 13:
definition = S13; break;
case 14:
definition = S14; break;
case 15:
definition = S15; break;
case 16:
definition = S16; break;
case 17:
definition = S17; break;
case 18:
definition = S18; break;
case 19:
definition = S19; break;
}
flag = true;
}
if(value >= 20 && value < 30)
definition = S20;
if(value >= 30 && value < 40)
definition = S30;
if(value >= 40 && value < 50)
definition = S40;
if(value >= 50 && value < 60)
definition = S50;
if(value >= 60 && value < 70)
definition = S60;
if(value >= 70 && value < 80)
definition = S70;
if(value >= 80 && value < 90)
definition = S80;
if(value >= 90 && value < 100)
definition = S90;
if(flag) return definition;
stringvalue = number.substring(1);
if(stringvalue.equals("1"))
definition = definition.substring(0, (definition.length()-1));
definition += getSingleNumber(number.charAt(1));
return definition;
}
private static String getDefinition(int size) {
String definition = new String("");
if(size >= 4 && size < 7) definition = SMILA;
if(size >=7 && size < 8) definition = SMILIONI;
return definition;
}
private static String getDefinition(String number, int size) {
String definition = new String("");
if(number.substring(0, 1).equals("1") && size == 1)
return S1;
if(number.substring(0, 1).equals("1") && size == 4)
return SMILLE;
if(size >= 4 && size < 7)
definition = SMILA;
if(size >=7 && size < 8)
definition = (number.substring(0, 1).equals("1"))?SMILIONE:SMILIONI;
return definition;
}
private static String getHundredValue(String number, int size) {
String definition = new String("");
if(!number.substring(0,1).equals("1"))
definition = getSingleNumber(number.charAt(0));
if(!number.substring(0,1).equals("0"))
definition += SCENTO;
definition += getDecimals(number.substring(1));
definition += getDefinition(size);
return definition;
}
/**
* Dichiarazioni delle variabili utilizzate all'interno del programma.
*/
private static final char C1 = '1';
private static final char C2 = '2';
private static final char C3 = '3';
private static final char C4 = '4';
private static final char C5 = '5';
private static final char C6 = '6';
private static final char C7 = '7';
private static final char C8 = '8';
private static final char C9 = '9';
private static final String S1 = "uno";
private static final String S2 = "due";
private static final String S3 = "tre";
private static final String S4 = "quattro";
private static final String S5 = "cinque";
private static final String S6 = "sei";
private static final String S7 = "sette";
private static final String S8 = "otto";
private static final String S9 = "nove";
private static final String S10 = "dieci";
private static final String S11 = "undici";
private static final String S12 = "dodici";
private static final String S13 = "tredici";
private static final String S14 = "quattordici";
private static final String S15 = "quindici";
private static final String S16 = "sedici";
private static final String S17 = "diciasette";
private static final String S18 = "diciotto";
private static final String S19 = "diciannove";
private static final String S20 = "venti";
private static final String S30 = "trenta";
private static final String S40 = "quaranta";
private static final String S50 = "cinquanta";
private static final String S60 = "sessanta";
private static final String S70 = "settanta";
private static final String S80 = "ottanta";
private static final String S90 = "novanta";
private static final String SD = "";
private static final String SCENTO = "cento";
private static final String SMILA = "mila";
private static final String SMILLE = "mille";
private static final String SMILIONE = "unmilione";
private static final String SMILIONI = "milioni";
}
Regà grazie mille in anticipo!!!