drawgas

Grįžta

Kur aš?

RT : P.S. Primenu, kad artėjantį šeštadienį - RenaultFan vasaros sezono atidarymas :)

Užduotis:
20. Parašyti programą su objektais, kurių metodai:

  • 1. Duomenų faile ieško užsiduoto žodžio ir išveda eilutę, kurioje rastas tas žodis.
  • 2. Kopijuoja duomenų failą, išmesdamas tarpus tarp žodžių.
  • 3. Apskaičiuojamas programos vykdymo laikas (panagrinėti time.h )
  • 4. Visi rezultatai išvedami į ekraną ir rezultatų failą.

O toliau programos kodas:
Programą sudaro, dvi dalys: pagrindine.cpp ir klase.h

pagrindine.cpp:

  1. #include <iostream .h>
  2. #include <fstream .h>
  3. #include <string .h>
  4. #include <time .h>
  5. #include "klase.h"
  6.  
  7.  
  8.  
  9. main() {
  10.  
  11. kl t;  //klases x sukurimas
  12.  
  13. //laiko parametru aprasymas
  14. time_t   start, finish;
  15. double   visas_laikas;
  16. time( &start ); // issaugos pradzios laikas
  17.  
  18. //laikinai reikalingi kintamieji
  19. int l=0;
  20. int i=0;
  21. int k=0;
  22. int j=0;
  23. int c=0;
  24.  
  25.  
  26. //kintamieji prilyginami nuliui
  27. t.countzodziu=0;
  28. t.counteiluciu=0;
  29. t.z1=0;
  30. t.n1=0;
  31. t.c();
  32.  
  33. //ivedimo,isvedimo srautai
  34. ofstream R("Rezul.txt",ios::out);
  35. ofstream R2("Rezul.txt",ios::app);
  36. ifstream T("Duom.txt",ios::in);
  37. ifstream N("Duom.txt",ios::in);
  38. ifstream X("Duom.txt",ios::in);
  39.  
  40. //pradinis tekstas
  41. cout< <"PRADINIS TEKSTAS:"<<endl<<endl;
  42. R<<"PRADINIS TEKSTAS:"<<endl<<endl;
  43.  
  44. while(!T.eof())
  45. {
  46.         T.getline(t.A,256);
  47.         cout<<t.A<<endl;
  48.         R<<t.A<<endl;
  49. }
  50.  
  51.  
  52. //ieskomo zodzio ivedimas
  53. cout<<endl<<"Iveskite norima zodi:"<<endl;
  54. cin>>t.B;
  55.  
  56. //skaiciuojama, kelintas yra ieskomas zodis
  57. while(!N.eof()  && strcmp(t.B,t.C))
  58. {
  59.         N>>t.C;
  60.         k++;
  61.         if (!strcmp(t.B,t.C)) l++;
  62. }
  63.  
  64. //i E masyva irasomas visas tekstas po 1 simboli ir ismetami tarpai
  65. while(!X.eof())
  66. {
  67.         t.E[j]=X.get();
  68.         t.tarpas(j);
  69.         j++;
  70. }
  71.  
  72. //patikrinimas, ar yra ieskomas zodis
  73. if (l==0) cout< <endl<<"Tokio zodzio nera"<<endl;
  74. else {
  75.  
  76. //jei yra,tai atliekama pagr. programa
  77. while (i<j && c<(k-1))
  78. {
  79.         if (t.enter(i)) c=t.doenter(c);
  80.         else
  81.         {
  82.                 if (t.space(i)) c++;
  83.         }
  84.         i++;
  85. }
  86.  
  87. //rezultatu isvedimas i ekrana ir i faila
  88. cout<<endl<<"Zodis  "<< t.B <<"  yra "<< t.n1+1 <<" eiluteje"<<endl<<endl;
  89. R<<endl<<"Zodis  "<< t.B <<"  yra "<< t.n1+1 <<" eiluteje"<<endl<<endl;
  90. cout<<"TEKSTAS BE TARPU:"<<endl<<endl;
  91. R<<"TEKSTAS BE TARPU:"<<endl<<endl;
  92.  
  93. t.isvedimas();
  94. }
  95.  
  96. //skaicioujamas laikas,kuris praejo,dirbant su programa
  97. time( &finish );
  98. visas_laikas = difftime( finish, start );
  99. //rezultatas isvedamas i ekrana ir i faila
  100. cout<<endl<<"Programa dirbo "<<visas_laikas<<" sekundes (-iu)"<<endl;
  101. R2<<endl<<"Programa dirbo "<<visas_laikas<<" sekundes (-iu)"<<endl;
  102.  
  103.  
  104. //srautai uzdaromi
  105. R2.close();
  106. R.close();
  107. T.close();
  108. N.close();
  109. X.close();
  110. return 0;
  111. }

klase.h

  1. //klases aprasymas
  2. class kl
  3. {
  4. //klases kintamuju aprasymas
  5. public :
  6. char *A;
  7. char *B;
  8. char *C;
  9. char *E;
  10. int countzodziu;
  11. int counteiluciu;
  12. int z1;
  13. int n1;
  14. void c()  
  15.      {count = 0;}
  16. private: //privatus kintamasis ir masyvas
  17.         int count;
  18.         char *NEW;
  19. //klases funkciju aprasymas
  20. public:
  21. kl ();
  22. bool enter (int i); // ar simbolis reiskia nauja eilute
  23. bool space (int i); // ar tai tarpo simbolis
  24. int doenter (int c); // priskaiciuoja eilute, kol bus surastas mum reikalingas zodis
  25. void tarpas(int i); // perkelia teksta is vieno masyvo i kita, ismesdama tarpus
  26. void isvedimas();
  27. };
  28.  
  29.  
  30. //klases funkciju detalizacija
  31.  
  32. kl::kl ()
  33. {
  34.         A = new char[256];
  35.         B = new char[256];
  36.         C = new char[256];
  37.         E = new char[1024];
  38.         NEW = new char[1024];
  39. }
  40.  
  41. void kl::tarpas(int i)
  42. {
  43. if (E[i]!=32)
  44. {
  45.         NEW[count]=E[i];
  46.         count++;}
  47. }
  48.  
  49. void kl::isvedimas()
  50. {
  51.         int i;
  52.         ofstream OUT("Rezul.txt",ios::app);
  53.         for(i=0;i<count;i++)
  54.         {
  55.                 cout<<NEW[i];
  56.                 OUT<<NEW[i];
  57.         }
  58.         cout<<endl<<endl;
  59.         OUT<<endl;
  60.         OUT.close();
  61. }
  62.  
  63.  
  64. bool kl::enter (int i)
  65. {
  66.         if (E[i]==10) return 1;
  67.         else return 0;
  68. }
  69.  
  70. bool kl::space (int i)
  71. {
  72.         if (E[i]==32) return 1;
  73.         else return 0;
  74. }
  75.  
  76.  
  77. int kl::doenter (int c)
  78. {
  79.         n1++;
  80.         c++;
  81. return c;
  82. }

Ir failas duom.txt:

20. Parasyti programa su objektais, kuriu metodai:
Duomenu faile iesko uzsiduoto zodzio ir isveda eilute, kurioje rastas tas zodis.
Kopijuoja duomenu faila, ismesdamas tarpus tarp zodziu.
Apskaiciuojamas programos vykdymo laikas (panagrineti time.h )
Visi rezultatai isvedami i ekrana ir rezultatu faila.

Darbo pabaigoje sukuriamas rezul.txt

PRADINIS TEKSTAS:

20. Parasyti programa su objektais, kuriu metodai:
Duomenu faile iesko uzsiduoto zodzio ir isveda eilute, kurioje rastas tas zodis.
Kopijuoja duomenu faila, ismesdamas tarpus tarp zodziu.
Apskaiciuojamas programos vykdymo laikas (panagrineti time.h )
Visi rezultatai isvedami i ekrana ir rezultatu faila.

Zodis laikas yra 4 eiluteje

TEKSTAS BE TARPU:

20.Parasytiprogramasuobjektais,kuriumetodai:
Duomenufaileieskouzsiduotozodzioirisvedaeilute,kuriojerastastaszodis.
Kopijuojaduomenufaila,ismesdamastarpustarpzodziu.
Apskaiciuojamasprogramosvykdymolaikas(panagrinetitime.h)
Visirezultataiisvedamiiekranairrezultatufaila.

Programa dirbo 9 sekundes (-iu)

8 komentarų (-ai) to “C++, 2 namų darbas, 20 užduotis”

  1. O seube ;O

    MeOw

  2. :P o kazkam is to atsiskaityt reikia :P

    drawgas

  3. Na bet tu bent supranti kas čia parašyta, o man tai čia panašiai kaip vokiečių ;D

    MeOw

  4. kaip mano destytojas sakytu: “Susikime cikliuka”..

    Ieva

  5. susukime*

    Ieva

  6. elementari uzduotis, bet ciklu tai daugoka :D manau dabar visai kitaip isspresciau sita uzduoti

    drawgas

  7. Gal kas turit 16 uzduoties koda labai reikia! :)

    Marius

  8. na, cia jau labai senai buvo :D nemanau, kad dar kas issaugojo ;) megink pagal sita rasyti ;)

    drawgas

Komentuokite