Römische Zahlen --> Dezimalzahlen



  • suche nen algorythmus um römische Zahlen in Dezimalzahlen umzuwandeln

    hab bei der boardsuche nur algorythmen für C++ gefunden, die werfen aber nen haufen fehler in meinem compiler auf.

    danke schomla
    wNg ICE



  • google hilft dir da auch ganz gut...



  • ne, google hilfd da auch nicht gut

    weil ich google schon damit gequält hab 🙄



  • Diesen Java-Code mal in C++-Form zu bringen sollte nicht so schwer sein, war die 3. Seite bei Google 😋

    private static int roman2decimal (String src) {
      int i, result, digits[];
    
      digits = new int[src.length()];
    
      for (i=0; i<digits.length; i++) {
        switch (src.charAt(i)) {
        case 'I': digits[i] = 1; break;
        case 'V': digits[i] = 5; break;
        case 'X': digits[i] = 10; break;
        case 'L': digits[i] = 50; break;
        case 'C': digits[i] = 100; break;
        case 'D': digits[i] = 500; break;
        case 'M': digits[i] = 1000; break;
        }
      }
    
      result = 0;
      for (i=0; i<digits.length-1; i++) {
        if(digits[i]<digits[i+1]) {
          result-=digits[i];
        } else {
          result+=digits[i];
        }
      }
      result += digits[i];
    
      return result;
    }
    

    MfG SideWinder



  • hab das mal irgendwann gemacht, und zwar so:

    typedef struct hilf{
    	int z;
    	char a,b;
    }HILF;
    
    void main()
    {
    	int zahl=0,i,stelle=0;
    	char erg[20];
    	bool weiter=true;
    	HILF h[]=	{
    					{1,'i',0},
    					{4,'i','v'},{5,'v',0},
    					{9,'i','x'},{10,'x',0},
    					{40,'x','l'},{49,'i','l'},{50,'l',0},
    					{90,'x','c'},{99,'i','c'},{100,'c',0},
    					{400,'c','d'},{490,'x','d'},{499,'i','d'},{500,'d',0},
    					{900,'c','m'},{990,'x','m'},{999,'i','m'},{1000,'m',0}
    				};
    
    	if (scanf("%i",&zahl))
    	{
    		while (zahl>0)
    		{
    			for(i=18;i>=0 && weiter;i--)
    				if(h[i].z<=zahl)
    				{
    					erg[stelle++]=h[i].a;
    					if (h[i].b)
    						erg[stelle++]=h[i].b;
    					zahl-=h[i].z;
    					weiter=false; 
    				}
    			weiter=true;
    		}
    
    		erg[stelle]=0;
    		printf("Ergebnis: %s\n",erg);
    		system("cls");
    	}
    }
    

Anmelden zum Antworten