Wie kann ich es kürzen?



  • Kann man das kürzer schreiben?

    char IntToChar(int i)
    {
    	if (i == 0)
    	{
    		return '0';
    	}
    	else if (i == 1)
    	{
    		return '1';
    	}
    	else if (i == 2)
    	{
    		return '2';
    	}
    	else if (i == 3)
    	{
    		return '3';
    	}
    	else if (i == 4)
    	{
    		return '4';
    	}
    	else if (i == 5)
    	{
    		return '5';
    	}
    	else if (i == 6)
    	{
    		return '6';
    	}
    	else if (i == 7)
    	{
    		return '7';
    	}
    	else if (i == 8)
    	{
    		return '8';
    	}
    	else if (i == 9)
    	{
    		return '9';
    	}
    	else if (i == 10)
    	{
    		return 'a';
    	}
    	else if (i == 11)
    	{
    		return 'b';
    	}
    	else if (i == 12)
    	{
    		return 'c';
    	}
    	else if (i == 13)
    	{
    		return 'd';
    	}
    	else if (i == 14)
    	{
    		return 'e';
    	}
    	else if (i == 15)
    	{
    		return 'f';
    	}
    	else if (i == 16)
    	{
    		return 'g';
    	}
    	else if (i == 17)
    	{
    		return 'h';
    	}
    	else if (i == 18)
    	{
    		return 'i';
    	}
    	else if (i == 19)
    	{
    		return 'j';
    	}
    	else if (i == 20)
    	{
    		return 'k';
    	}
    	else if (i == 21)
    	{
    		return 'l';
    	}
    	else if (i == 22)
    	{
    		return 'm';
    	}
    	else if (i == 23)
    	{
    		return 'n';
    	}
    	else if (i == 24)
    	{
    		return 'o';
    	}
    	else if (i == 25)
    	{
    		return 'p';
    	}
    	else if (i == 26)
    	{
    		return 'q';
    	}
    	else if (i == 27)
    	{
    		return 'r';
    	}
    	else if (i == 28)
    	{
    		return 's';
    	}
    	else if (i == 29)
    	{
    		return 't';
    	}
    	else if (i == 30)
    	{
    		return 'u';
    	}
    	else if (i == 31)
    	{
    		return 'v';
    	}
    	else if (i == 32)
    	{
    		return 'w';
    	}
    	else if (i == 33)
    	{
    		return 'x';
    	}
    	else if (i == 34)
    	{
    		return 'y';
    	}
    	else if (i == 35)
    	{
    		return 'z';
    	}
    
    	return '?';
    }
    
    int CharToInt(char c)
    {
    	if (c == '0')
    	{
    		return 0;
    	}
    	else if (c == '1')
    	{
    		return 1;
    	}
    	else if (c == '2')
    	{
    		return 2;
    	}
    	else if (c == '3')
    	{
    		return 3;
    	}
    	else if (c == '4')
    	{
    		return 4;
    	}
    	else if (c == '5')
    	{
    		return 5;
    	}
    	else if (c == '6')
    	{
    		return 6;
    	}
    	else if (c == '7')
    	{
    		return 7;
    	}
    	else if (c == '8')
    	{
    		return 8;
    	}
    	else if (c == '9')
    	{
    		return 9;
    	}
    	else if (c == 'a')
    	{
    		return 10;
    	}
    	else if (c == 'b')
    	{
    		return 11;
    	}
    	else if (c == 'c')
    	{
    		return 12;
    	}
    	else if (c == 'd')
    	{
    		return 13;
    	}
    	else if (c == 'e')
    	{
    		return 14;
    	}
    	else if (c == 'f')
    	{
    		return 15;
    	}
    	else if (c == 'g')
    	{
    		return 16;
    	}
    	else if (c == 'h')
    	{
    		return 17;
    	}
    	else if (c == 'i')
    	{
    		return 18;
    	}
    	else if (c == 'j')
    	{
    		return 19;
    	}
    	else if (c == 'k')
    	{
    		return 20;
    	}
    	else if (c == 'l')
    	{
    		return 21;
    	}
    	else if (c == 'm')
    	{
    		return 22;
    	}
    	else if (c == 'n')
    	{
    		return 23;
    	}
    	else if (c == 'o')
    	{
    		return 24;
    	}
    	else if (c == 'p')
    	{
    		return 25;
    	}
    	else if (c == 'q')
    	{
    		return 26;
    	}
    	else if (c == 'r')
    	{
    		return 27;
    	}
    	else if (c == 's')
    	{
    		return 28;
    	}
    	else if (c == 't')
    	{
    		return 29;
    	}
    	else if (c == 'u')
    	{
    		return 30;
    	}
    	else if (c == 'v')
    	{
    		return 31;
    	}
    	else if (c == 'w')
    	{
    		return 32;
    	}
    	else if (c == 'x')
    	{
    		return 33;
    	}
    	else if (c == 'y')
    	{
    		return 34;
    	}
    	else if (c == 'z')
    	{
    		return 35;
    	}
    
    	return -1;
    }
    


  • char IntToChar(int i)
    {
      if(i<0)
        return '?';
      if(i<10)
        return i+'0';
      if(i<=35)
        return 10-i+'a';
      return '?';
    }
    int charToInt(char ch)
    {
      if(ch<'0')
        return -1;
      if(ch<='9')
        return ch-'0';
      if(ch<'a')
        return -1;
      if(ch<='z')
        return ch-'a'+10;
      return -1;
    }
    


  • Deutlich flexibler (und unabhängig vom ASCII) könnte man die Sache angehen, wenn man die Zeichenwerte vorgäbe:

    std::string const CVALUES = "0123456789abcdefghijklmnopqrstuvwxyz";
    
    int chartoint(char character, std::string const& clist)
        {
            for(size_t n = 0; n < clist.length(); n++) {
                if(clist[n] == character) return n;
            }
            return -1;
        }
    

    Groß-/Kleinschreibung könnte man mit einer entsprechenden Konvertierungsfunktion realisieren.

    Grüße...

    Heiko



  • bwbg schrieb:

    Deutlich flexibler (und unabhängig vom ASCII)

    bleib mal ernsthaft.



  • volkard schrieb:

    bwbg schrieb:

    Deutlich flexibler (und unabhängig vom ASCII)

    bleib mal ernsthaft.

    Ok, streiche zitierte Aussage und setze "Anders [...]".

    Ich meinte meine Antwort durchaus ernst. Ich habe mir kurz (auf deine Antwort, Volkard) die Frage gestellt, ob ich in jedem Fall davon ausgehen kann, dass auf '0' die '1' folgt, auf 'a' die 'b' und so weiter. Unter dieser Prämisse wäre mein Lösungsvorschlag suboptimal.

    Grüße...

    Heiko


Anmelden zum Antworten