Zamienianie cyfr na litery

0

Witam mam do napisania następujący program:

Zadanie 2
Napisać program, który wczytuje dowolną całkowitą liczbę (naprzykład 458753) i przekształca tą liczbę na kod z wybranych liter(naprzykład ZKLFKP). Kod użytkownik może podawać dowolny.

Niestety program nie chce porównywać w "if"/"else if" liczb.
Od razu mówię że jestem słaby z c++.

 
#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
    char tab[100];
    int i=0;
    int n;
    cout << "podaj liczbe calkowita" << endl;
    cin >> tab;
//    cout << tab[i] << endl;

    while (100>i)
    {
          if (tab[i]==1)
          {
                  cout << "q";
                  i=i+1;   
          }
          if (tab[i]==1)
          {
                  cout << "q";
                  i=i+1;   
          }
          else if (tab[i]==2)
          {
                  cout << "w";
                  i=i+1;   
          }
          else if (tab[i]==3)
          {
                  cout << "e";
                  i=i+1;   
          }
          else if (tab[i]==4)
          {
                  cout << "r";
                  i=i+1;   
          }
          else if (tab[i]==5)
          {
                  cout << "t";
                  i=i+1;   
          }
          else if (tab[i]==6)
          {
                  cout << "y";
                  i=i+1;   
          }
          else if (tab[i]==7)
          {
                  cout << "u";
                  i=i+1;   
          }
          else if (tab[i]==8)
          {
                  cout << "i";
                  i=i+1;   
          }
          else if (tab[i]==9)
          {
                  cout << "o";
                  i=i+1;   
          }
          else if (tab[i]==0)
          {
                  cout << "p";
                  i=i+1;   
          }
          else;
          {
                  i=i+100;
                  cout << endl << "end" << endl;
          }             
    }
    system("PAUSE");
    return EXIT_SUCCESS;
}
1
  1. Jeśli wczytujesz to do charów to nie masz tam 1 a '1', to raz
  2. Nie prościej było ci zrobić tablicę która reprezentuje kod? Bo widzisz programowanie polega na myśleniu a nie na klepaniu takich potworków jak to co napisałeś powyżej...
#include <iostream>
using namespace std;

int main()
{
    char decode[] = {'a','b','c','d','e','f','g','h','i','j'};
    string input;
    cin>>input;
    for(unsigned int i=0; i<input.length(); i++)
    {
        cout<<decode[input[i]-'0'];
    }
    return 0;
}
0

No było by łatwiej tylko ja mam wiedzieć jak i czemu to działa. A w twoim programie nie mam zielonego pojęcia o co chodzi. Więc wolał bym doprowadzić do użyteczności mój program

0

Poza tym, jak wpiszesz 1 to wyświetli Ci się q dwa razy

@up, nie jest lepiej doprowadzić do użyteczności twojego programu, bo jest zły. Program shaloma działa bardzo prosto.
std::string to obiekt który zawiera ciąg znaków zakończony '\0' na końcu, natomiast decode to tablica charów, tzn, że decode[0] == 'a', decode[1] == 'b', decode[2] =='c', itd..
więc jeżeli do naszego ciągu wprowadzimy napis "1352351", to znowu input[0] == '1', a to w znakach ASCII to chyba 52, natomiast znak '0' to 51 więc jak od 52 odejmiemy 51 otrzymujemy wynik 1 który wprowadzamy do decode[inpit[i] - '0' /czyli 1/] i wypisujemy, daje nam to literę 'b'

0

@termi bardzo mi przykro ale żeby pisać programy trzeba się najpierw trochę nauczyć, inaczej się nie da. Czego nie rozumiesz w moim programie?

  1. Użyłem tablicy, ale w swoim kodzie też masz tablicę, więc założyłem ze umiesz korzystać z tablic
  2. Użyłem pętli for, ale jeśli jej nie umiesz to możesz zmienić na while jak bardzo chcesz
  3. Użyłem std::string, ale jeśli go nie znasz to mozesz zrobić takie char[100] jak miałeś u siebie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1