asmodeus94

konwersjaZ2810Na2810

Oct 24th, 2013
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.11 KB | None | 0 0
  1. /*Napisz program do zamiany liczby w systemie (2,8,10) na system (2,8,10)
  2. Liczby pobierane bฤ™dฤ… z pliku tekstowego (wejscie.txt) i zapisywane do pliku(wyjscie.txt)
  3. Plik wejscie.txt ma mieฤ‡ format:
  4. 2:10:00101010
  5. gdzie:
  6. 2:  - na wejsciu system dwojkowy
  7. 10: - na wyjsciu system dziesietny
  8. 00101010 - liczba do zamiany
  9.  
  10. Zawartosc pliku wejscie.txt
  11. 2:10:10111010
  12. 8:10:35703
  13. 10:2:192832
  14. 10:8:13022
  15. 2:8:1010011
  16. 8:2:645213*/
  17. /*#include <iostream>
  18. #include <fstream>
  19.  
  20. using namespace std;
  21. string nazwaZag="wejscie.txt";
  22. string nazwaWyn="wyjscie.txt";
  23. int main(){
  24.    
  25.     system("pause >> null");
  26.     return 0;
  27. }*/
  28.  
  29. #include<iostream>
  30. #include<cstdio>
  31. #include<ctime>
  32. #include<fstream>
  33. #include<sstream>
  34. #include<string>
  35. #include<cstdlib>
  36.  
  37. using namespace std;
  38. struct podz{
  39.     string pocz;
  40.     string poczUchw;
  41.     char systemP,systemN;
  42. };
  43. podz tab[100];
  44. // zamiana ze string na int i int na string {
  45. int stringNaInt(string &warStr){
  46.     int zwInt;
  47.     istringstream iss(warStr);
  48.     iss >> zwInt;
  49.     return zwInt;
  50. }
  51. string intNaString(int &warInt){
  52.     ostringstream ss;
  53.     ss << warInt;
  54.     string str = ss.str();
  55.     return str;
  56. }
  57. // }
  58. void odczyt(){
  59.     ifstream uchw("wejscie.txt");
  60.     if(uchw.good()){
  61.         int i=0,n;
  62.         string kol;
  63.         while(!uchw.eof()){
  64.             getline(uchw,tab[i].pocz);
  65.             if(tab[i].pocz[0]=='1') tab[i].systemP='d';
  66.             if(tab[i].pocz[0]=='2') tab[i].systemP='b';
  67.             if(tab[i].pocz[0]=='8') tab[i].systemP='o';
  68.            
  69.             if(tab[i].pocz[1]==':'){
  70.                 if(tab[i].pocz[2]=='1') tab[i].systemN='d';
  71.                 if(tab[i].pocz[2]=='2') tab[i].systemN='b';
  72.                 if(tab[i].pocz[2]=='8') tab[i].systemN='o';
  73.             }
  74.             if(tab[i].pocz[2]==':'){
  75.                 if(tab[i].pocz[3]=='1') tab[i].systemN='d';
  76.                 if(tab[i].pocz[3]=='2') tab[i].systemN='b';
  77.                 if(tab[i].pocz[3]=='8') tab[i].systemN='o';
  78.             }
  79.             n=0;kol="";
  80.             for(int j=0;j<tab[i].pocz.length();j++){
  81.                 if(n>1) kol+=tab[i].pocz[j];
  82.                 if(tab[i].pocz[j]==':') n++;
  83.             }
  84.             tab[i].poczUchw=kol;
  85.             cout<<kol<<endl;
  86.             i++;
  87.         }
  88.        
  89.     }
  90.     uchw.close();
  91. }
  92. int dlZapTab(int &rIle){ // zwraca ile tab ma zapisanych wartosci !=""
  93.     for(int i=0;i<100;i++){
  94.         if(tab[i].pocz!="") rIle++;
  95.     }
  96.     return rIle;
  97. }
  98. string przekrec(string &co){
  99.     string gotowe="";
  100.     int y1=co.length();
  101.     for(int y=y1;y>=0;y--){
  102.         gotowe+=co[y];
  103.     }
  104.     return gotowe;
  105. }
  106. string binarnie(int &a){
  107.     string kol="";
  108.     int bierz=a;
  109.     do{
  110.         if(bierz%2==1) kol+='1'; else kol+='0';
  111.         bierz/=2;
  112.     }while(bierz>=1);
  113.     return przekrec(kol);
  114. }
  115. string osemkowo(int &a){
  116.     string kol="";
  117.     int bierz=a,op;
  118.     do{
  119.         op=bierz%8;
  120.         kol+=intNaString(op);
  121.         bierz/=8;
  122.     }while(bierz>=1);
  123.     return przekrec(kol);  
  124. }
  125. int potR(int x,int y){ // potegowanie rekurencyjne
  126.     if (y==0) return 1; else return potR(x,y-1)*x;
  127. }
  128. string naDzies(string &a,char &zCzego){
  129.     int dlEl=a.length(),ktIndex=dlEl-1,sumator=0,nowyInt,ktSys=0;
  130.     string nowyString; 
  131.     if(zCzego=='b') ktSys=2;
  132.     if(zCzego=='o') ktSys=8;
  133.     for(int z=0;z<dlEl;z++){
  134.         nowyString="";
  135.         nowyString+=a[z];
  136.         nowyInt=stringNaInt(nowyString);
  137.         sumator+=potR(ktSys,ktIndex)*nowyInt;
  138.         ktIndex--;
  139.     }          
  140.     nowyString=intNaString(sumator);
  141.     return nowyString;
  142. }
  143. string polszczyzna(char &zNa){
  144.     string ktSysNap="";
  145.     switch(zNa){
  146.         case 'd': ktSysNap="10";
  147.         break;
  148.         case 'b': ktSysNap="2";
  149.         break;
  150.         case 'o': ktSysNap="8";
  151.         break;
  152.     }
  153.     return ktSysNap;
  154. }
  155. void konwersja(){
  156.     int ile=0,pomInt,warModyf;
  157.     string pomString,poKon;
  158.     ile=dlZapTab(ile);
  159.     ofstream uchw("wyjscie.txt");
  160.     for(int i=0;i<ile;i++){
  161.         poKon="";
  162.         if(tab[i].poczUchw=="") continue;  
  163.         switch(tab[i].systemP){
  164.             case 'd':{
  165.                 switch(tab[i].systemN){
  166.                     case 'b':{
  167.                         pomInt=stringNaInt(tab[i].poczUchw);
  168.                         poKon=binarnie(pomInt);
  169.                     break;}
  170.                     case 'o':{
  171.                         pomInt=stringNaInt(tab[i].poczUchw);
  172.                         poKon=osemkowo(pomInt);
  173.                     break;}
  174.                 }  
  175.             break;}
  176.             case 'b':{
  177.                 poKon=naDzies(tab[i].poczUchw,tab[i].systemP);
  178.                 if(tab[i].systemN=='o'){
  179.                     pomInt=stringNaInt(poKon);
  180.                     poKon=osemkowo(pomInt);
  181.                 }      
  182.             break;}
  183.             case 'o':{
  184.                 poKon=naDzies(tab[i].poczUchw,tab[i].systemP);
  185.                 if(tab[i].systemN=='b'){
  186.                     pomInt=stringNaInt(poKon);
  187.                     poKon=binarnie(pomInt);
  188.                 }
  189.             break;}        
  190.         }  
  191.         tab[i].poczUchw+="("+polszczyzna(tab[i].systemP)+")";
  192.         warModyf=tab[i].poczUchw.length();
  193.         uchw<<tab[i].poczUchw;
  194.         uchw.seekp(+25-warModyf,ios_base::cur);
  195.         uchw<<"-";
  196.         if(polszczyzna(tab[i].systemN)=="10") uchw.seekp(+11,ios_base::cur);else uchw.seekp(+10,ios_base::cur);
  197.         uchw<<poKon<<"("<<polszczyzna(tab[i].systemN)<<")";
  198.         if(i<ile-1) uchw<<endl;
  199.        
  200.     }
  201.     uchw.close();
  202. }
  203. int main(){
  204.     odczyt();
  205.     konwersja();
  206.     return 0;
  207. }
Advertisement
Add Comment
Please, Sign In to add comment