• 27.08.2025, 00:16
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

DustBuster

Full Member

Quellcode Römische Zahlen umwandeln

Dienstag, 21. Juni 2005, 18:58

Ich versuch hier grad ein Programm in C zu schreiben wo ich arabische Zahlen in römische umwandeln kann und umgekehrt. Arab -> Röm hab ich schon zum laufen bekommen, allerdings krieg ich die andere Richtung nicht hin. Hat da eventuell jemand nen Quellcode zur Hand? Ich wäre diesem sehr verbunden.

powerslide

unregistriert

Re: Quellcode Römische Zahlen umwandeln

Dienstag, 21. Juni 2005, 19:33

du musst doch eigentlich nur die zahl vom stdin charbychar einlesen, dann ersetzen und aufsummieren

maniac2k1

God

Re: Quellcode Römische Zahlen umwandeln

Dienstag, 21. Juni 2005, 20:33

Zitat von »powerslide«

du musst doch eigentlich nur die zahl vom stdin charbychar einlesen, dann ersetzen und aufsummieren


du musst aber auch noch die reihenfolge beachten ;)

weil IX ist nicht 11 ;)
[table][tr][td] [/td][td]

Zitat

kaum denkt man, die dummheit hat ihre untere grenze erreicht, kommt schon der nächste zum limbo-contest um die ecke...
Y0Gi [/td][/tr][/table]

DustBuster

Full Member

Re: Quellcode Römische Zahlen umwandeln

Dienstag, 21. Juni 2005, 21:18

Zitat von »-ManiaC-«


du musst aber auch noch die reihenfolge beachten ;)

weil IX ist nicht 11 ;)


Genau das mein ich ja. Man müsste tausende Fälle berücksichtigen. IIII nicht gleich 4, XXXX nicht gleich 40, usw.

Chewy

Moderator

Re: Quellcode Römische Zahlen umwandeln

Dienstag, 21. Juni 2005, 21:27

c&p:

/*
*
*        ROMAN.C  -  Converts integers to Roman numerals
*
*             Written by:  Jim Walsh
*
*             Compiler  :  Microsoft QuickC v2.5
*
*        This Program Is Released To The Public Domain
*
*/

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

int main( int argc, char *argv[] )
{
   int value, dvalue;
   char roman[80];
   roman[0] = '\0';
   if( argc == 2 )
       value = atoi( argv[1] );
   else
   {
       printf( "\nEnter an integer value: " );
       scanf( "%d", &value );
   }
   dvalue = value;
   while( value >= 1000 )
   {
       strcat( roman, "M" );
       value -= 1000;
   }
   if( value >= 900 )
   {
       strcat( roman, "CM" );
       value -= 900;
   }
   while( value >= 500 )
   {
       strcat( roman, "D" );
       value -= 500;
   }
   if( value >= 400 )
   {
       strcat( roman, "CD" );
       value -= 400;
   }
   while( value >= 100 )
   {
       strcat( roman, "C" );
       value -= 100;
   }
   if( value >= 90 )
   {
       strcat( roman, "XC" );
       value -= 90;
   }
   while( value >= 50 )
   {
       strcat( roman, "L" );
       value -= 50;
   }
   if( value >= 40 )
   {
       strcat( roman, "XL" );
       value -= 40;
   }
   while( value >= 10 )
   {
       strcat( roman, "X" );
       value -= 10;
   }
   if( value >= 9 )
   {
       strcat( roman, "IX" );
       value -= 9;
   }
   while( value >= 5 )
   {
       strcat( roman, "V" );
       value -= 5;
   }
   if( value >= 4 )
   {
       strcat( roman, "IV" );
       value -= 4;
   }
   while( value > 0 )
   {
       strcat( roman, "I" );
       value--;
   }
   printf( "\n%d = %s\n", dvalue, roman );
   return(0);
}


q.e.d. ;D *selbertotlach*

edit: nein, ich lache darüber dass ich gerade meinen c-compiler suche um das zu testen ....

ach mist... ich suchs mal andersrum ;)

Chewy

Moderator

Re: Quellcode Römische Zahlen umwandeln

Dienstag, 21. Juni 2005, 21:31

so soll das andersrum aussehen ? ???

// Greg Gibas

// Advanced Programming C++ (Honors)

// Period 6

// November 13, 2000

// This program translates Arabic number

// s into Roman numberals

#include

#include

void main()



{

// Declare variables that will be used

int ones, tens, hundreds, thousands, temp, input, x;

char rOnes[100] = "";

char rTens[100] = "";

char rHundreds[100] = "";

char rThousands[100] = "";

char *rTemp;

// Display a friendly prompt

cout << "\n *****************************\n";

cout << " * A R A B I C - R O M A N *\n";

cout << " *C O N V E R T E R*\n";

cout << " * - - - - - - - - - - - - - *\n";

cout << " * Coded by Greg Gibas *\n";

cout << " *****************************\n";

cout << "\n\n Type in any Arabic number (upto 4 digits), and this program ";

cout << "\n will convert it into a Roman Numeral. When you want to exit,\n";

cout << " type in the number \"0\" by itself. \n\n";

for(;;)



{

cout << " >> ";

cin >> input;

// if the user entered the number 0, end the loop

if(input==0) break;

cout << "\n\nArabic : " << input;

// Seperate the number into thousands, hundreds, tens, and ones places

thousands = input/1000;

hundreds = (input-(thousands*1000))/100;

tens= (input-(thousands*1000 + hundreds*100))/10;

ones= (input-(thousands*1000 + hundreds*100 + tens*10));

temp = 0;

// Calculate the thousands

while(temp!=thousands)



{

rTemp = "M";

strcat(rThousands, rTemp);

temp++;

}

// Clean Out The Variable

temp = 0;

// Convert the hHundreds place

if(temp!=hundreds)



{

if(hundreds==1) strcpy(rHundreds, "C");

if(hundreds==2) strcpy(rHundreds, "CC");

if(hundreds==3) strcpy(rHundreds, "CCC");

if(hundreds==4) strcpy(rHundreds, "CD");

if(hundreds==5) strcpy(rHundreds, "D");

if(hundreds==6) strcpy(rHundreds, "DC");

if(hundreds==7) strcpy(rHundreds, "DCC");

if(hundreds==8) strcpy(rHundreds, "DCCC");

if(hundreds==9) strcpy(rHundreds, "CM");

}



// Clean Out The Variable

temp = 0;



// Convert the Tens place

if(temp!=tens)



{

if(tens==1) strcpy(rTens, "X");

if(tens==2) strcpy(rTens, "XX");

if(tens==3) strcpy(rTens, "XXX");

if(tens==4) strcpy(rTens, "XL");

if(tens==5) strcpy(rTens, "L");

if(tens==6) strcpy(rTens, "LX");

if(tens==7) strcpy(rTens, "LXX");

if(tens==8) strcpy(rTens, "LXXX");

if(tens==9) strcpy(rTens, "XC");

}



// Clean Out The Variable

temp = 0;



// Convert the Ones place

if(temp!=ones)



{

if(ones==1) strcpy(rOnes, "I");

if(ones==2) strcpy(rOnes, "II");

if(ones==3) strcpy(rOnes, "III");

if(ones==4) strcpy(rOnes, "IV");

if(ones==5) strcpy(rOnes, "V");

if(ones==6) strcpy(rOnes, "VI");

if(ones==7) strcpy(rOnes, "VII");

if(ones==8) strcpy(rOnes, "VIII");

if(ones==9) strcpy(rOnes, "IX");

}



// Display the answer in Roman Numerals

cout << "\nRoman : " << rThousands << rHundreds << rTens << rOnes;

cout << "\n\n";

// Clean out these variables to prepare for the next number

strcpy(rOnes, "");

strcpy(rTens, "");

strcpy(rHundreds, "");

strcpy(rThousands, "");

}



// Give an exit message then wait for a

// key to exit

cout << "\n\nGoodbye!\n";

return;

}

Clark

God

Re: Quellcode Römische Zahlen umwandeln

Mittwoch, 22. Juni 2005, 13:04

Das macht genau das gleiche @chewy ;)

Aber wo ist das Problem das zu schreiben?

Es gibt nur ein paar Ausnahmen und die sind ja festgelegt...
c++: The power, elegance and simplicity of a hand grenade.