czwartek, 17 lutego 2011

Tłumaczenie z char na ASCII

Czyli jak z 2 linijek kodu, zrobiłem ich ponad setkę...

Dzisiaj pisząc pewien program w C++ musiałem przetłumaczyć wyrazy na kod ASCII. Ok - pomyślałem. Wpisałem sobie "ASCII" w Google klikam w Wikipedię, patrzę - jest tabela z kodami. Wszystko pięknie. Tłumaczę sobie przykładowy wyraz, trochę mi zajęło znalezienie odpowiednich liczb odpowiadających za daną liczbę. Tym razem, pomyślałem - Co będzie kiedy program wymaga przetłumaczenia wyrazu wprowadzonego przez użytkownika? Trzeba coś zrobić by program sam to tłumaczył.

Zabrałem się do roboty. Sprawa jest jasna: wkładam wyraz podany przez użytkownika do tablicy, następnie każdy kolejny element (literę) tej tablicy porównuje za pomocą switcha do kolejnych liter i w drugiej tabeli zapisuje odpowiednie kody ASCII.
Całość wygląda tak:
(program tłumaczy tylko duże litery)

#include

int main()
{
    cout << "Co przetlumaczyc?\n";
    char co[20];
    int ascii[20];
    cin >> co;
    int indeks =0;
    while (co[indeks] != NULL)
    {
          switch (co[indeks])
          {
                 case 'A' :
                 ascii[indeks] = 65;
                 break;
                 
                 case 'B' :
                 ascii[indeks] = 66;
                 break;
                 
                 case 'C' :
                 ascii[indeks] = 67;
                 break;
                 
                 case 'D' :
                 ascii[indeks] = 68;
                 break;
                 
                 case 'E' :
                 ascii[indeks] = 69;
                 break;
                 
                 case 'F' :
                 ascii[indeks] = 70;
                 break;
                 
                 case 'G' :
                 ascii[indeks] = 71;
                 break;
                 
                 case 'H' :
                 ascii[indeks] = 72;
                 break;
                 
                 case 'I' :
                 ascii[indeks] = 73;
                 break;
                 
                 case 'J' :
                 ascii[indeks] = 74;
                 break;
                 
                 case 'K' :
                 ascii[indeks] = 75;
                 break;
                 
                 case 'L' :
                 ascii[indeks] = 76;
                 break;
                 
                 case 'M' :
                 ascii[indeks] = 77;
                 break;
                 
                 case 'N' :
                 ascii[indeks] = 78;
                 break;
                 
                 case 'O' :
                 ascii[indeks] = 79;
                 break;
                 
                 case 'P' :
                 ascii[indeks] = 80;
                 break;
                 
                 case 'R' :
                 ascii[indeks] = 82;
                 break;
                 
                 case 'S' :
                 ascii[indeks] = 83;
                 break;
                 
                 case 'T' :
                 ascii[indeks] = 84;
                 break;
                 
                 case 'U' :
                 ascii[indeks] = 85;
                 break;
                 
                 case 'V' :
                 ascii[indeks] = 86;
                 break;
                 
                 case 'W' :
                 ascii[indeks] = 87;
                 break;
                 
                 case 'X' :
                 ascii[indeks] = 88;
                 break;
                 
                 case 'Y' :
                 ascii[indeks] = 89;
                 break;
                 
                 case 'Z' :
                 ascii[indeks] = 90;
                 break;
                                 
          }
          indeks = indeks+1;
}
    system("PAUSE");
    return EXIT_SUCCESS;
}
        


Ponad setka linii... na marne. Czemu? Ponieważ wystarczyło wpisać cout << int co[indeks] i już bym miał kod ASCII dla odpowiedniej litery. Trudno, przynajmniej się czegoś nauczyłem i wiem, że lepiej najpierw zapytać Google co ma do powiedzenia w danej kwestii

3 komentarze:

  1. Mogłeś wykonać rzutowanie z char na int.

    OdpowiedzUsuń
  2. Wiem, na końcu notki jest napisane, że na to wpadłem :D

    OdpowiedzUsuń
  3. Jak to zrobić mam takie zadanie na infie ascii 01100000100100000011000000010111010000110110101101010111000100010

    OdpowiedzUsuń