Advertisement
lewapkon

X2X.cpp

Mar 16th, 2015
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. /*
  2.  * Autorzy: Cala grupa 2.
  3.  * Data: 11.03.2015
  4.  * Problem: Napisac program zamieniajacy liczbe zapisana w jednym systemie
  5.  liczbowym na inny system liczbowy.
  6.  *     Dane: Ciagi znakow reprezentujace liczbe wejsciowa, system liczbowy liczby
  7.  wejsciowej, oczekiwany system liczbowy.
  8.  *     Wyniki: Ciag znakow reprezentujacy liczbe wejsciowa zapisana w systemie
  9.  podanym przez uzytkownika.
  10.  * Plik: X2X.cpp
  11.  **/
  12.  
  13. #include <iostream>
  14. using namespace std;
  15.  
  16. const int N = 255;
  17.  
  18. unsigned short C2V(char c)// funkcja zwraca wartosc znaku reprezentujฯ€cego cyfre
  19. {
  20.     int x; //x-wartosc znaku reprezentujacego cyfre
  21.     if(c>='0' && c<='9') x=c-'0';
  22.     if(c>='A' && c<='Z') x=c-'A'+10;
  23.     if(c>='a' && c<='z') x=c-'a'+10;
  24.     return x;
  25. }
  26.  
  27. // funkcja zamienia liczbe z systemu p na dziesietny
  28. int X2D (char b1[], int p) // p- podstawa systemu, b1 - tablica wartosci znakow
  29. { int wartosc; // wartosc - wartosc wyniku,
  30.     int n = strlen(b1); // n-dlugosc tablicy
  31.     wartosc = 0;
  32.     for ( int i = n; i > 1; i--)
  33.         wartosc = (wartosc + C2V(b1[n-i]))*p;
  34.     wartosc = wartosc + C2V(b1[n-1]);
  35.     return wartosc;
  36. }
  37.  
  38. char V2C(unsigned short v) //funkcja grupy III
  39. {
  40.     char c;
  41.     if (v>9) c='A'+v -10;
  42.     else c ='0'+ v;
  43.     return c;
  44. }
  45.  
  46. void D2X(char x[], int d, int p)
  47. {
  48.     int i=0;
  49.     int j=d;
  50.     while(j!=0)
  51.     {
  52.         x[i]=V2C(j%p);
  53.         j=j/p;
  54.         i++;
  55.     }
  56.     reverse(x, x+i);
  57. }
  58.  
  59. void X2X(char x[], char b1[], unsigned short p1, unsigned short p2) {
  60.     int d = X2D(b1, p1);
  61.     D2X(x, d, p2);
  62. }
  63.  
  64. int main() {
  65.     char tabWejsc[N], tabWyjsc[N];
  66.     unsigned short systemWejsciowy, systemWyjsciowy;
  67.    
  68.     cout << "Ten program dokonuje konwersji liczb pomiedzy wybranymi systemami pozycyjnymi." << endl;
  69.     cout << "Podaj liczbe do konwersji: ";
  70.     cin >> tabWejsc;
  71.    
  72.     cout << "Podaj system liczbowy, w ktorym zapisana jest ta liczba: ";
  73.     cin >> systemWejsciowy;
  74.    
  75.     cout << "Podaj system liczbowy, w ktorym chcesz aby ta liczba zostala zapisana: ";
  76.     cin >> systemWyjsciowy;
  77.    
  78.     X2X(tabWyjsc, tabWejsc, systemWejsciowy, systemWyjsciowy);
  79.     cout << "Szukana przez Ciebie liczba to: " << string(tabWyjsc);
  80.    
  81.     cout << endl << endl;
  82.     system("pause");
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement