Advertisement
primatas

c++ sudetingiausia

Dec 2nd, 2011
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 19.23 KB | None | 0 0
  1. #pragma warning(disable:4786)
  2. #include <iostream>
  3. #include <set>
  4. #include <iomanip>
  5. #include <string>
  6. #include <fstream> 
  7. #include <cstdlib>
  8. #include <vector>
  9.  
  10. using namespace std;
  11.  
  12. void meniu();
  13. void isvalyti_ekrana_ir_rodyti_meniu();
  14. void baigti();
  15. int iveda_teksta_is_failo(string, vector<string> &);
  16. void spausdinti_teksta(ostream &duomenys, vector<string> &);
  17. void randa_ilgiausia_eilute(vector<string> &, int &);
  18. void randa_trumpiausia_eilute(vector<string> &, int &);
  19. int gauti_eilutes_ilgi(vector<string>, int);
  20. void gauna_eiluciu_vidurkis(vector<string>, double &);
  21. bool ar_antro_zodzio_trecia_raide_didzioji(string);
  22. void suskaiciuoti_kiek_eilutej_yra_zodziu_prasidedanciu_mazaja_raide(string, int &);
  23. int kiekis(string);
  24. vector<string> explode( const string &delimiter, const string &str);
  25. string& str_replace(const string &search, const string &replace, string &subject);
  26. void sukeiciam_ilgiausia_ir_trumiausia_zodi(string &);
  27. int kiek_tekste_yra_lotynisku_raidziu(vector<string> &, char);
  28. void spausdinti_skaicius_arba_raides(vector<string> &, char, string & );
  29. bool in_array(const char &needle, const vector< char > &haystack);
  30. int gauti_eiluteje_esanciu_zodziu_kieki(string);
  31. void pasalinti_pirma_didziaja_raide_prasidedanti_zodi(string &);
  32. void prideti_zodi(string &, int, string);
  33.  
  34. int main(){
  35.  
  36.     // kintamuju aprasai
  37.     bool veiksmas_egzistuoja = false;
  38.     bool tekstas_ivestas = false;
  39.     int veiksmas = -1;
  40.     vector<string> tekstas;
  41.     string vartotojo_zodis;
  42.     string tekstas_spausdinimui;
  43.     string kelias; 
  44.     int ilgiausia_eilute = -1;
  45.     int trumpiausia_eilute = -1;
  46.     int ilgiausios_eilutes_ilgis = -1;
  47.     int trumpiausios_eilutes_ilgis = -1;
  48.     int skaicius_int, sk_in_2; // iveda vartotojas 2 uzduociai
  49.     double skaicius; // iveda vartotojas 1 uzduociai
  50.     double eiluciu_vidurkis; // visu eiluciu ilgiu vidurkis
  51.     int suma;
  52.     int zodziu_kiekis;
  53.     int did_lot_raidziu_kiekis, maz_lot_raidziu_kiekis;
  54.     int kiek_eiluteje_yra_zodziu;
  55.  
  56.     cout << "Laboratorinis darbas nr. 4, Lukas Liesis, GM080102\n\n";
  57.     cout << "Programa atlieka ivairius veiksmus su tekstu pagal vartotojo pasirinkima\n";
  58.     cout << "Tekstas ivedamas is failo\n";
  59.  
  60.     // meniu spausdinimas
  61.  
  62.     meniu();
  63.     // pagrindinis programos ciklas
  64.     do {
  65.  
  66.         veiksmas_egzistuoja = false;
  67.         cout << "\nIveskite norimo atlikti veiksmo meniu numeri: ";
  68.         cin >> veiksmas;
  69.         cout << "\n";
  70.  
  71.         switch ( veiksmas ) {
  72.  
  73.             case 0 :
  74.                 meniu();
  75.                 break;
  76.             case 1 :
  77.                 isvalyti_ekrana_ir_rodyti_meniu();
  78.                 break;
  79.             case 2 :
  80.                 baigti();
  81.                 break;
  82.             case 3 :
  83.                 cout << "Nurodykite kelia iki failo: ";
  84.                 cin >> kelias;
  85.                 if(iveda_teksta_is_failo(kelias, tekstas) == -1){
  86.                     cout << "Klaida! Netinkamas failas arba kelias iki jo.\n";
  87.                 } else {
  88.                     tekstas_ivestas = true;
  89.                     ilgiausia_eilute = -1;
  90.                     trumpiausia_eilute = -1;
  91.                 }
  92.                 break;
  93.             case 4 :
  94.                 if(tekstas_ivestas == false){
  95.                     cout << "Klaida! Teksto nera\n";
  96.                 } else {
  97.                     spausdinti_teksta(cout, tekstas);
  98.                 }
  99.                 break;
  100.             case 5 :
  101.                 /*
  102.                 Jeigu ilgiausios ir trumpiausios eilučių ilgių suma yra didesnė už vartotojo nurodytą skaičių,
  103.                 suskaičiuokite ir atspausdinkite tekste esančių eilučių kiekį ir vidutinį jų ilgį.
  104.                 */
  105.                 if(tekstas_ivestas == false){
  106.                     cout << "Klaida! Neivestas tekstas\n";
  107.                     break;
  108.                 }
  109.                 randa_ilgiausia_eilute(tekstas, ilgiausia_eilute);
  110.                 randa_trumpiausia_eilute(tekstas, trumpiausia_eilute);
  111.                 ilgiausios_eilutes_ilgis = gauti_eilutes_ilgi(tekstas, ilgiausia_eilute);
  112.                 trumpiausios_eilutes_ilgis = gauti_eilutes_ilgi(tekstas, trumpiausia_eilute);
  113.                
  114.                 cout << "Ilgiausia eilute yra: " << ilgiausia_eilute+1 << " jos ilgis: " << ilgiausios_eilutes_ilgis << "\n";
  115.                 cout << "Trumpiausia eilute yra: " << trumpiausia_eilute+1 << " jos ilgis: " << trumpiausios_eilutes_ilgis << "\n";
  116.                 suma = ilgiausios_eilutes_ilgis+trumpiausios_eilutes_ilgis;
  117.                 cout << "Ju suma yra " << suma << "\n";
  118.                 cout << "\nNuorodykite skaiciu: \n";
  119.                 cin >> skaicius; // double
  120.                 if (cin.fail()) {// jei ivesti neteisingi duomenys, sutvarkom cina ir pranesam apie klaida
  121.                     cin.clear();
  122.                     cin.ignore(256, '\n');
  123.                     cout << "Klaida! Neteisinga ivestis\n";
  124.                 }
  125.                 if(suma > skaicius ){
  126.                     gauna_eiluciu_vidurkis(tekstas, eiluciu_vidurkis);
  127.                     cout << "Suma yra didesne uz ivestas skaiciu.\n";
  128.                     cout << "Tekste esanciu eiluciu kiekis: \t" << tekstas.size() << "\n";
  129.                     cout << "Eiluciu ilgiu vidurkis: \t" << eiluciu_vidurkis << "\n";
  130.                 } else {
  131.                     cout << "Suma yra mazesne uz ivesta skaiciu. Nieko nedarome. \n";
  132.                 }
  133.                 cout << "\n";
  134.                 break;
  135.             case 6 :
  136.                 /*
  137.                 Jeigu nagrinėjamos eilutės antro žodžio trečia raidė didžioji, suskaičiuokite, kiek joje yra žodžių,
  138.                 prasidedančių mažąja raide. Kitu atveju sukeiskite trumpiausią ir ilgiausią tos eilutės žodžius vietomis.
  139.                 */
  140.                 cout << "Eiluciu yra: " << tekstas.size() << "\n";
  141.                 cout << "Nuordykite kuria eilute nagrinejame: ";
  142.                 cin >> skaicius_int;
  143.                 if (cin.fail()) {// jei ivesti neteisingi duomenys, sutvarkom cina ir pranesam apie klaida
  144.                     cin.clear();
  145.                     cin.ignore(256, '\n');
  146.                     cout << "Klaida! Neteisinga ivestis\n";
  147.                 }
  148.                 if(skaicius_int > tekstas.size()){
  149.                     cout << "Klaida! Tokios eilutes nera. \n";
  150.                 } else {
  151.                     cout << "Nagrinejama eilute: \n\n" << tekstas[skaicius_int-1] << "\n\n";
  152.                     if(ar_antro_zodzio_trecia_raide_didzioji(tekstas[skaicius_int-1])){ // !!!!!!!!!!!
  153.                         cout << "Taip, 2 zodzio 3 raide yra didzioji.\n";
  154.                         zodziu_kiekis = 0;
  155.                         suskaiciuoti_kiek_eilutej_yra_zodziu_prasidedanciu_mazaja_raide(tekstas[skaicius_int-1], zodziu_kiekis); //!!!!!!!!!
  156.                         cout << "Sioje eiluteje yra zodziu, kurie prasideda mazaja raide: " << zodziu_kiekis << "\n";
  157.                     } else {
  158.                         cout << "Ne, 2 zodzio 3 raide nera didzioji.\n";
  159.                         cout << "Sukeiciame ilgiausia ir trumpiausia zodzius vietomis. Nauja eilute yra: \n\n";
  160.                         sukeiciam_ilgiausia_ir_trumiausia_zodi(tekstas[skaicius_int-1]);
  161.                         cout << "\n" << tekstas[skaicius_int-1] << "\n\n";
  162.                     }
  163.                 }
  164.                 break;
  165.             case 7 :
  166.                 did_lot_raidziu_kiekis = kiek_tekste_yra_lotynisku_raidziu(tekstas, 'd');
  167.                 cout << "Lotynisku didziuju raidziu tekste yra: " << did_lot_raidziu_kiekis << "\n";
  168.                 maz_lot_raidziu_kiekis = kiek_tekste_yra_lotynisku_raidziu(tekstas, 'm');
  169.                 cout << "Lotynisku mazuju raidziu tekste yra: " << maz_lot_raidziu_kiekis << "\n";
  170.                 if(did_lot_raidziu_kiekis > maz_lot_raidziu_kiekis){
  171.                     cout << "Didziuju raidziu yra daugiau uz mazuju, jos yra: \n";
  172.                     spausdinti_skaicius_arba_raides(tekstas, 'r', tekstas_spausdinimui);
  173.                     cout << tekstas_spausdinimui << "\n";
  174.                 } else {
  175.                     spausdinti_skaicius_arba_raides(tekstas, 's', tekstas_spausdinimui);
  176.                     cout << "Didziuju raidziu yra maziau uz mazuju, skaiciai tekste yra: \n";
  177.                     cout << tekstas_spausdinimui << "\n";
  178.                 }
  179.  
  180.                 break;
  181.             case 8 :
  182.                 // Jeigu eiluteje esanèiu žodžiu skaièius didesnis už vartotojo nurodyt¹ skaièiu, pašalinkite joje
  183.                 //esanti pirm¹ji didžiaja raide prasidedanti žodi. Kitu atveju po
  184.                 //vartotojo nurodyto žodžio toje eiluteje (nurodomas žodžio eiles numeris) iterpkite vartotojo ivest¹ žodi.
  185.                 cout << "Nurodykite kuria eilute norite nagrineti: \n";
  186.                 cin >> sk_in_2;
  187.                 if (cin.fail()) {// jei ivesti neteisingi duomenys, sutvarkom cina ir pranesam apie klaida
  188.                     cin.clear();
  189.                     cin.ignore(256, '\n');
  190.                     cout << "Klaida! Neteisinga ivestis\n";
  191.                 }
  192.                 if(sk_in_2 < 1){
  193.                     cout << "Klaida! Neteisinga ivestis \n";
  194.                     break;
  195.                 }
  196.  
  197.                 cout << "Pasirinkta eilute: \n";
  198.                 cout << tekstas[sk_in_2-1];
  199.  
  200.                 kiek_eiluteje_yra_zodziu = gauti_eiluteje_esanciu_zodziu_kieki(tekstas[sk_in_2-1]);
  201.                 cout << "eiluteje yra zodziu: " << kiek_eiluteje_yra_zodziu << "\n";
  202.                 cout << "Iveskite koki nors sveikaji skaiciu > 0: \n";
  203.                 cin >> skaicius_int;
  204.                 if (cin.fail()) {// jei ivesti neteisingi duomenys, sutvarkom cina ir pranesam apie klaida
  205.                     cin.clear();
  206.                     cin.ignore(256, '\n');
  207.                     cout << "Klaida! Neteisinga ivestis\n";
  208.                 }
  209.                 if(skaicius_int < 0){
  210.                     cout << "Klaida! Neteisinga ivestis \n";
  211.                     break;
  212.                 }
  213.                 if(kiek_eiluteje_yra_zodziu < skaicius_int){
  214.                     // pasalinti pirma didziaja raide prasidedanti zodi
  215.                     pasalinti_pirma_didziaja_raide_prasidedanti_zodi(tekstas[sk_in_2-1]);
  216.                     cout << "Zodis pasalintas. Nauja eilute yra: \n";
  217.                     cout << tekstas[sk_in_2-1];
  218.                 } else {
  219.                     // vartotojo zodi ivesti i ta vieta, kur nurode pries tai
  220.                     cin.clear();
  221.                     cin.ignore(256, '\n');
  222.                     cout << "Iveskite zodi: \n";
  223.                     cin >> vartotojo_zodis;
  224.                     if (cin.fail()) {// jei ivesti neteisingi duomenys, sutvarkom cina ir pranesam apie klaida
  225.                         cin.clear();
  226.                         cin.ignore(256, '\n');
  227.                         cout << "Klaida! Neteisinga ivestis\n";
  228.                     }
  229.                     cout << "Ivestas zodis: " << vartotojo_zodis << "\n";
  230.                     prideti_zodi(tekstas[sk_in_2-1], skaicius_int ,vartotojo_zodis);
  231.                     cout << "Zodis pridetas. Nauja eilute yra: \n";
  232.                     cout << tekstas[sk_in_2-1];
  233.                 }
  234.  
  235.                 break;
  236.  
  237.             default :
  238.                 cout << "Tokio meniu punkto nera. Pasirinkite nauja veiksma.\n";
  239.                 meniu();
  240.                
  241.         }
  242.  
  243.  
  244.         if (cin.fail()) {// jei ivesti neteisingi duomenys, sutvarkom cina ir pranesam apie klaida
  245.             cin.clear();
  246.             cin.ignore(256, '\n');
  247.             cout << "Klaida! Neteisingi parametrai\n";
  248.         }
  249.  
  250.     } while(true);  // ciklas vyksta visa programos veikimo laika
  251.     return 0;
  252. }
  253.  
  254. // parodo meniu
  255.  
  256. void meniu() {
  257.     cout << "[0] Meniu\n";
  258.     cout << "[1] Isvalyti ekrana ir rodyti meniu\n";                                                                                                           
  259.     cout << "[2] Baigti darba\n";
  260.     cout << "[3] Ivesti teksta\n";
  261.     cout << "[4] Spausdinti teksta\n";
  262.     cout << "[5] 1 uzduotis\n";
  263.     cout << "[6] 2 uzduotis\n";
  264.     cout << "[7] pradine uzduotis su lot. raidemis\n";
  265.     cout << "[8] 3 uzduotis\n";
  266.  
  267.     cout << "\n\n\n";
  268. }
  269.  
  270. // baigia darba
  271.  
  272. void baigti() {
  273.     exit(0);
  274. }
  275.  
  276. // isvalo ekrana ir parodo meniu
  277.  
  278. void isvalyti_ekrana_ir_rodyti_meniu(){
  279.     system("cls");
  280.     meniu();
  281. }
  282.  
  283. // iveda teksta is nurodyto failo
  284.  
  285. int iveda_teksta_is_failo(string kelias, vector<string> & tekstas ){   
  286.     ifstream skaito( kelias );
  287.     if(skaito.fail()){
  288.         return -1;
  289.     }
  290.     string temp;
  291.  
  292.     tekstas.clear();
  293.     // po 1 eilute nuskaito teksta
  294.     while( getline( skaito, temp ) ){
  295.         tekstas.push_back( temp );
  296.     }
  297. }
  298.  
  299. // spausdina teksta i ekrana arba faila
  300.  
  301. void spausdinti_teksta(ostream &duomenys, vector<string> & tekstas){
  302.     int ilgis = tekstas.size();
  303.     for(int i = 0; i < ilgis; i++) {
  304.         duomenys << tekstas[i];
  305.         duomenys << "\n"; // pereina i nauja eilute
  306.     }
  307. }
  308.  
  309.  
  310. void randa_ilgiausia_eilute(vector<string> & tekstas, int & ilgiausia_eilute){
  311.     ilgiausia_eilute = 0;
  312.     int ilgis = tekstas.size();
  313.     for(int i = 0; i < ilgis; i++) {
  314.         if(tekstas[i].size() > tekstas[ilgiausia_eilute].size()){
  315.             ilgiausia_eilute = i;
  316.         }
  317.     }
  318. }
  319.  
  320.  
  321. void randa_trumpiausia_eilute(vector<string> & tekstas, int & trumpiausia_eilute){
  322.     trumpiausia_eilute = 0;
  323.     int ilgis = tekstas.size();
  324.     for(int i = 0; i < ilgis; i++) {
  325.         if(tekstas[i].size() < tekstas[trumpiausia_eilute].size()){
  326.             trumpiausia_eilute = i;
  327.         }
  328.     }
  329. }
  330.  
  331. int gauti_eilutes_ilgi(vector<string> tekstas, int eilute){
  332.     return tekstas[eilute].size();
  333. }
  334.  
  335. void gauna_eiluciu_vidurkis(vector<string> tekstas, double & vidurkis) {
  336.     vidurkis = 0;
  337.     double suma = 0.;
  338.     int ilgis = tekstas.size();
  339.     for(int i = 0; i < ilgis; i++) {
  340.         suma += tekstas[i].size();
  341.     }
  342.     vidurkis = suma / ilgis;
  343. }
  344.  
  345. bool ar_antro_zodzio_trecia_raide_didzioji(string eilute) {
  346.     vector<string> zodziu_masyvas;
  347.     zodziu_masyvas = explode(" ", eilute);
  348.     if(zodziu_masyvas.size() > 1){
  349.         if( (zodziu_masyvas[1][2] == ',') || (zodziu_masyvas[1][2] == '.') ){
  350.             return false;
  351.         }
  352.         if(isupper(zodziu_masyvas[1][2])){
  353.             return true;
  354.         }
  355.     }
  356.  
  357.     return false;
  358. }
  359.  
  360. void suskaiciuoti_kiek_eilutej_yra_zodziu_prasidedanciu_mazaja_raide(string eilute, int & zodziu_kiekis){
  361.     vector<string> zodziu_masyvas;
  362.     zodziu_masyvas = explode(" ", eilute);
  363.     zodziu_kiekis = 0;
  364.     if(zodziu_masyvas.size() > 0){
  365.         int ilgis = zodziu_masyvas.size();
  366.         for(int i = 0; i < ilgis; i++) {
  367.             if(islower(zodziu_masyvas[i][0])){
  368.                 zodziu_kiekis++;
  369.             }
  370.         }
  371.     }
  372. }
  373.  
  374. int kiekis(string eilute) {
  375.     int i, j=0, k=0;
  376.     for(i = 0; i < sizeof(eilute.length()); i++){
  377.         if(eilute[i] == ' '){
  378.             k += 1;
  379.         } else {
  380.             j += 1;
  381.         }
  382.     }
  383.     if (j>0) {
  384.         return k+1;
  385.     } else {
  386.         return k;
  387.     }
  388. }
  389.  
  390.  
  391.  
  392. string& str_replace(const string &search, const string &replace, string &subject) {
  393.     string buffer;
  394.    
  395.     int sealeng = search.length();
  396.     int strleng = subject.length();
  397.  
  398.     if (sealeng==0)
  399.         return subject;//no change
  400.  
  401.     for(int i=0, j=0; i<strleng; j=0 ) {
  402.         while (i+j<strleng && j<sealeng && subject[i+j]==search[j])
  403.             j++;
  404.         if (j==sealeng) { //found 'search'
  405.             buffer.append(replace);
  406.             i+=sealeng;
  407.         } else {
  408.             buffer.append( &subject[i++], 1);
  409.         }
  410.     }
  411.     subject = buffer;
  412.     return subject;
  413. }
  414.  
  415. vector<string> explode( const string &delimiter, const string &str) {
  416.     vector<string> arr;
  417.  
  418.     int strleng = str.length();
  419.     int delleng = delimiter.length();
  420.     if (delleng==0)
  421.         return arr;//no change
  422.  
  423.     int i=0;
  424.     int k=0;
  425.     while( i<strleng ) {
  426.         int j=0;
  427.         while (i+j<strleng && j<delleng && str[i+j]==delimiter[j])
  428.             j++;
  429.         if (j==delleng) { //found delimiter
  430.             arr.push_back(  str.substr(k, i-k) );
  431.             i+=delleng;
  432.             k=i;
  433.         } else {
  434.             i++;
  435.         }
  436.     }
  437.     arr.push_back(  str.substr(k, i-k) );
  438.     return arr;
  439. }
  440.  
  441. void sukeiciam_ilgiausia_ir_trumiausia_zodi(string & eilute){
  442.     vector<string> zodziu_masyvas;
  443.     vector<string> zodziu_masyvas_backup;   // backupo reikia, nes zodziu_masyva sudraskytas bus del . ir ,
  444.     zodziu_masyvas = explode(" ", eilute);
  445.     zodziu_masyvas_backup = zodziu_masyvas;
  446.     if(zodziu_masyvas.size() > 0){
  447.         int ilgis = zodziu_masyvas.size();
  448.         // randa trumpiausia ir ilgiausia zodzius
  449.         int trumpiausias = 0;
  450.         int ilgiausias = 0;
  451.         for(int i = 0; i < ilgis; i++) {
  452.             zodziu_masyvas[i] = str_replace(",", "", zodziu_masyvas[i]);
  453.             zodziu_masyvas[i] = str_replace(".", "", zodziu_masyvas[i]);
  454.             zodziu_masyvas[i] = str_replace(" ", "", zodziu_masyvas[i]);
  455.             if(isalpha(zodziu_masyvas[i][0])){
  456.                 if(zodziu_masyvas[i].size() < zodziu_masyvas[trumpiausias].size()){
  457.                     trumpiausias = i;
  458.                 }
  459.                 if(zodziu_masyvas[i].size() > zodziu_masyvas[ilgiausias].size()){
  460.                     ilgiausias = i;
  461.                 }
  462.             }
  463.         }
  464.         // apkeicia vietomis
  465.         string buffer =  zodziu_masyvas_backup[trumpiausias];
  466.         zodziu_masyvas_backup[trumpiausias] = zodziu_masyvas_backup[ilgiausias];
  467.         zodziu_masyvas_backup[ilgiausias] = buffer;
  468.         bool pirmas = true;
  469.         string nauja_eilute;
  470.         for(int i = 0; i < ilgis; i++) {
  471.             if(pirmas){
  472.                 nauja_eilute.append(zodziu_masyvas_backup[i]);
  473.             } else {
  474.                 nauja_eilute.append(" ");
  475.                 nauja_eilute.append(zodziu_masyvas_backup[i]);
  476.             }
  477.             pirmas = false;
  478.         }
  479.         eilute = nauja_eilute;
  480.     }
  481. }
  482.  
  483.  
  484. int kiek_tekste_yra_lotynisku_raidziu(vector<string> & tekstas, char tipas){
  485.     int eiluciu = tekstas.size();
  486.     int eilute = 0;
  487.     int kiek_yra_didziuju = 0;
  488.     for(int i = 0; i < eiluciu; i++){
  489.         eilute = tekstas[i].size();
  490.         for(int j = 0;j < eilute; j++ ){
  491.             if(tipas == 'd'){
  492.                 if( isalpha(tekstas[i][j]) && isupper(tekstas[i][j]) ){
  493.                     kiek_yra_didziuju++;
  494.                 }
  495.             } else {
  496.                 if( isalpha(tekstas[i][j]) && islower(tekstas[i][j]) ){
  497.                     kiek_yra_didziuju++;
  498.                 }
  499.             }
  500.         }
  501.     }
  502.  
  503.     return kiek_yra_didziuju;
  504. }
  505.  
  506. void spausdinti_skaicius_arba_raides(vector<string> & tekstas, char tipas, string & tekstas_atgal){
  507.     vector<char> masyvas_raidziu;
  508.     vector<char> masyvas_skaiciu;
  509.    
  510.     tekstas_atgal = "";
  511.     int eiluciu = tekstas.size();
  512.     int eilute = 0;
  513.     int kiek_yra_didziuju = 0;
  514.     for(int i = 0; i < eiluciu; i++){
  515.         eilute = tekstas[i].size();
  516.         for(int j = 0;j < eilute; j++ ){
  517.             if(tipas == 'r'){
  518.                 // spausdina lot. did. raides
  519.                 if( isalpha(tekstas[i][j]) && isupper(tekstas[i][j]) ){
  520.                     if(in_array(tekstas[i][j], masyvas_raidziu) == false){
  521.                         tekstas_atgal += tekstas[i][j];
  522.                         masyvas_raidziu.push_back(tekstas[i][j]);
  523.                     }
  524.                 }
  525.             } else {
  526.                 if( isdigit(tekstas[i][j])){
  527.                     if(in_array(tekstas[i][j], masyvas_skaiciu) == false){
  528.                         tekstas_atgal += tekstas[i][j];
  529.                         masyvas_skaiciu.push_back(tekstas[i][j]);
  530.                     }
  531.                 }
  532.             }
  533.         }
  534.     }
  535. }
  536.  
  537. bool in_array(const char &needle, const vector< char > &haystack){
  538.     int max=haystack.size();
  539.     if (max==0) return false;
  540.     for(int i=0; i<max; i++)
  541.         if (haystack[i]==needle)
  542.             return true;
  543.     return false;
  544. }
  545.  
  546. int gauti_eiluteje_esanciu_zodziu_kieki(string eilute){
  547.     vector<string> zodziu_masyvas;
  548.     zodziu_masyvas = explode(" ", eilute);
  549.     return zodziu_masyvas.size();
  550. }
  551.  
  552.  
  553. void pasalinti_pirma_didziaja_raide_prasidedanti_zodi(string & eilute){
  554.     vector<string> zodziu_masyvas;
  555.     vector<string> zodziu_masyvas_backup;
  556.     zodziu_masyvas = explode(" ", eilute);
  557.     zodziu_masyvas_backup = zodziu_masyvas;
  558.     eilute = "";
  559.     int kuri_salint = 0;
  560.     if(zodziu_masyvas.size() > 0){
  561.         int ilgis = zodziu_masyvas.size();
  562.         cout << "ilgis: "<<ilgis << "\n";
  563.          // dsa adsdsa asd Aasdad Aasdads dads
  564.         for(int i = 0; i < ilgis-1; i++) {
  565.             zodziu_masyvas[i] = str_replace(",", "", zodziu_masyvas[i]);
  566.             zodziu_masyvas[i] = str_replace(".", "", zodziu_masyvas[i]);
  567.             zodziu_masyvas[i] = str_replace(" ", "", zodziu_masyvas[i]);
  568.             if(isalpha(zodziu_masyvas[i][0]) && isupper(zodziu_masyvas[i][0]) ){
  569.                 kuri_salint = i;
  570.                 break;
  571.             }
  572.         }
  573.         // istrina
  574.         ilgis = zodziu_masyvas_backup.size();
  575.         cout << "kuri salint: " << kuri_salint << "ilgis: " << ilgis << "\n";
  576.         bool pirmas = true;
  577.         for(int i = 0; i < ilgis; i++) {
  578.             if(i != kuri_salint){
  579.                 if(pirmas){
  580.                     eilute = zodziu_masyvas_backup[i];
  581.                 } else {
  582.                     eilute += " "+zodziu_masyvas_backup[i];
  583.                 }
  584.                 pirmas = false;
  585.             }
  586.         }
  587.     }
  588.    
  589.  
  590. }
  591.  
  592. void prideti_zodi(string & eilute, int kur_iterpt, string ka_iterpt){
  593.     //cout << "kur iterpt: "<< kur_iterpt << " ka_iterpt: "<<ka_iterpt<<"\n";
  594.     vector<string> zodziu_masyvas;
  595.     vector<string> zodziu_masyvas_backup;
  596.     zodziu_masyvas = explode(" ", eilute);
  597.     zodziu_masyvas_backup = zodziu_masyvas;
  598.     eilute = "";
  599.     int kelintas_cia_zodis = 0;
  600.     int indeksas_pries_kuri_iterpt;
  601.     if(zodziu_masyvas.size() > 0) {
  602.         int ilgis = zodziu_masyvas.size();
  603.         for(int i = 0; i < ilgis-1; i++) {
  604.             zodziu_masyvas[i] = str_replace(",", "", zodziu_masyvas[i]);
  605.             zodziu_masyvas[i] = str_replace(".", "", zodziu_masyvas[i]);
  606.             zodziu_masyvas[i] = str_replace(" ", "", zodziu_masyvas[i]);
  607.             if(isalpha(zodziu_masyvas[i][0]) ){
  608.                 kelintas_cia_zodis++;
  609.                 if(kelintas_cia_zodis == kur_iterpt){
  610.                     indeksas_pries_kuri_iterpt = i;
  611.                 }
  612.             }
  613.         }
  614.         // iterpia
  615.         ilgis = zodziu_masyvas_backup.size();
  616.         //cout << "pries kuri iterpt: " << indeksas_pries_kuri_iterpt << "ilgis: " << ilgis << "\n";
  617.         eilute = "";
  618.         bool pirmas = true;
  619.         for(int i = 0; i < ilgis; i++) {
  620.             if(i == indeksas_pries_kuri_iterpt){
  621.                 if(!pirmas){
  622.                     eilute += " ";
  623.                 }
  624.                 pirmas = false;
  625.                 eilute += ka_iterpt;
  626.             }
  627.             if(!pirmas){
  628.                 eilute += " ";
  629.             }
  630.             pirmas = false;
  631.            
  632.             eilute += zodziu_masyvas_backup[i];
  633.         }
  634.     }
  635. }
  636.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement