kestutis

3 lygis | 1 pamokėlė | Kodavimas

Nov 29th, 2013
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.13 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6. const char DV[]="Duom.txt";
  7. const char RV[]="Rez.txt";
  8.  
  9. const char K1 [8] = {'A','D','G','J','M','P','S','V'};  //To pačio indekso simboliai sudaro skaičiaus kodą.
  10. const char K2 [8] = {'B','E','H','K','N','Q','T','W'};
  11. const char K3 [8] = {'C','F','I','L','O','R','U','X'};
  12.  
  13. void skaityti_rasyti();
  14. void taisyti_koda (char &, char &, char &);
  15. bool geras_kodas (char , char , char );
  16. int skaicius (char);
  17.  
  18. int main()
  19. {
  20.     skaityti_rasyti();
  21.     return 0;
  22. }
  23.  
  24. bool geras_kodas (char a, char b, char c) //Tikrinama, ar kode nėra klaidų.
  25. {
  26.     int i;
  27.     bool t=0;
  28.     for (i=0;i<=8; i++)
  29.             if (K1[i]==a && K2[i]==b && K3[i]==c)
  30.             t=1;
  31.     return t;
  32. }
  33.  
  34. void taisyti_koda (char &a, char &b, char &c) //Ištaisoma kode klaida.
  35. {
  36.    int i;
  37.    for (i=0;i<=8; i++)
  38.         if (K1[i]!=a && K2[i]==b && K3[i]==c) a=K1[i];
  39.         else if (K1[i]==a && K2[i]!=b && K3[i]==c) b=K2[i];
  40.         else if (K1[i]==a && K2[i]==b && K3[i]!=c) c=K3[i];
  41. }
  42.  
  43. void skaityti_rasyti()
  44. {
  45.     ifstream fd(DV);
  46.     ofstream fr(RV);
  47.     int k, n, j;
  48.     char a,b,c;
  49.     int kiek;
  50.     fd>>n;
  51.     for (k=1; k<=n; k++)
  52.     {
  53.             kiek=0;
  54.             int numeris[7]={0,0,0,0,0,0,0};
  55.             int sk=0;
  56.             for (j=1; j<=7; j++)
  57.             {
  58.                 fd>>a>>b>>c; //Kodas skaitomas po tris simbolius.
  59.                 if (!geras_kodas(a,b,c))                               
  60.                     {
  61.                         taisyti_koda (a,b,c);
  62.                         kiek++;
  63.                     }
  64.                 numeris[sk]=skaicius(a); //Formuojamas numeris iš atkoduotų skaičių.
  65.                 fr<<a<<b<<c;
  66.                 sk = sk + 1;
  67.             }
  68.             fr<<"  Klaidos:"<<kiek<<"  Tel. nr.:";
  69.             for (j=0; j<=6; j++)
  70.             fr<<numeris[j];
  71.             fr<<endl;
  72.     }
  73.     fd.close();
  74.     fr.close();
  75. }
  76.  
  77. int skaicius (char sim)
  78. {
  79.     int k;
  80.     switch (sim) //Numeris atrenkamas pagal pirmą kodo raidę.
  81.     {
  82.         case 'A': k = 2; break;
  83.         case 'D': k = 3; break;
  84.         case 'G': k = 4; break;
  85.         case 'J': k = 5; break;
  86.         case 'M': k = 6; break;
  87.         case 'P': k = 7; break;
  88.         case 'S': k = 8; break;
  89.         case 'V': k = 9; break;
  90.     }
  91.     return k;
  92. }
Advertisement
Add Comment
Please, Sign In to add comment