Pereiti prie turinio

Char Eilutės (šiek tiek strigau)


Rekomenduojami pranešimai

Užduotis:

Tekstiniame faile stulpeliais įrašytas eilėraštis. Sudarykite programą, apskaičiuojančią, kuri jo eilutė turi daugiausia raidžių. Eilėraščio tekstą sudaro raidės, skyrybos ženklai ir tarpai.

 

Mano kodas:

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int main(){
   setlocale(LC_ALL, "Lithuanian");
   int n, kiek;
   char ch[50];
   ifstream fd("duom.txt");
   while(!fd.eof()){
       fd.getline(ch, 50);
       n = strlen(ch);
       kiek = 0;
       for(int i = 0; i < n; i++){
           ch[i] = tolower(ch[i]);
           if(ch[i] == 'a' || ch[i] == 's' || ch[i] == 'd' || ch[i] == 'f' || ch[i] == 'g' || ch[i] == 'h' || ch[i] == 'j' || ch[i] == 'k' || ch[i] == 'l' ||
              ch[i] == 'z' || ch[i] == 'x' || ch[i] == 'c' || ch[i] == 'v' || ch[i] == 'v' || ch[i] == 'b' || ch[i] == 'n' || ch[i] == 'm' || ch[i] == 'q' ||
              ch[i] == 'w' || ch[i] == 'e' || ch[i] == 'r' || ch[i] == 't' || ch[i] == 'y' || ch[i] == 'u' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'p' ||
              ch[i] == 'ą' || ch[i] == 'č' || ch[i] == 'ę' || ch[i] == 'ė' || ch[i] == 'į' || ch[i] == 'š' || ch[i] == 'ų' || ch[i] == 'ū' || ch[i] == 'ž')
                   kiek++;
       }
       cout << kiek << endl;
   }
}

Gal galit paaiškint, kaip rasti daugiausiai raidžių turinčios eilutės numerį? Daugiausiai raidžių turinčia eilutę randu, bet jos numerio niekaip, kokį 4-5 kartą jau perašinėju koda, ką nors pakeisdamas, bet vistiek nepavyksta nieko sugalvot.

Redagavo heAt0n
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Na, gal ir gremėzdiškai čia padariau, bet veikia ;)

 

#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;

int main(){
   setlocale(LC_ALL, "Lithuanian");
   int n, kiek, c, max, eilute;
   char ch[50];
   int index[50];
   max = 0;
   ifstream fd("duom.txt");
   c = 0;
   while(!fd.eof()){
       fd.getline(ch, 50);
       n = strlen(ch);
       kiek = 0;

       for(int i = 0; i < n; i++){
           ch[i] = tolower(ch[i]);
           if(ch[i] == 'a' || ch[i] == 's' || ch[i] == 'd' || ch[i] == 'f' || ch[i] == 'g' || ch[i] == 'h' || ch[i] == 'j' || ch[i] == 'k' || ch[i] == 'l' ||
          	ch[i] == 'z' || ch[i] == 'x' || ch[i] == 'c' || ch[i] == 'v' || ch[i] == 'v' || ch[i] == 'b' || ch[i] == 'n' || ch[i] == 'm' || ch[i] == 'q' ||
          	ch[i] == 'w' || ch[i] == 'e' || ch[i] == 'r' || ch[i] == 't' || ch[i] == 'y' || ch[i] == 'u' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'p' ||
          	ch[i] == 'à' || ch[i] == 'è' || ch[i] == 'æ' || ch[i] == 'ë' || ch[i] == 'á' || ch[i] == 'ð' || ch[i] == 'ø' || ch[i] == 'û' || ch[i] == 'þ')
                   kiek++;
       }
       index[c] = kiek;
       c++;
   }
   for (int i = 0; i < (n-1); i++) {
   if ( index[i] > max) {max = index[i]; eilute = i;}    

}
   cout << eilute+1;
   cin.get();
}

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Vietoj šito :

for(int i = 0; i < n; i++){

ch[i] = tolower(ch[i]); if(ch[i] == 'a' || ch[i] == 's' || ch[i] == 'd' || ch[i] == 'f' || ch[i] == 'g' || ch[i] == 'h' || ch[i] == 'j' || ch[i] == 'k' || ch[i] == 'l' ||

ch[i] == 'z' || ch[i] == 'x' || ch[i] == 'c' || ch[i] == 'v' || ch[i] == 'v' || ch[i] == 'b' || ch[i] == 'n' || ch[i] == 'm' || ch[i] == 'q' ||

ch[i] == 'w' || ch[i] == 'e' || ch[i] == 'r' || ch[i] == 't' || ch[i] == 'y' || ch[i] == 'u' || ch[i] == 'i' || ch[i] == 'o' || ch[i] == 'p' ||

ch[i] == 'à' || ch[i] == 'è' || ch[i] == 'æ' || ch[i] == 'ë' || ch[i] == 'á' || ch[i] == 'ð' || ch[i] == 'ø' || ch[i] == 'û' || ch[i] == 'þ')

kiek++;

}

Bandyk šitaip :

for(int i = 0; i < n; i++){
  		ch[i] = tolower(ch[i]);
               for(char sim = 'a'; sim <= 'z'; sim++) { // trumpesne raidziu kiekio paieska. (ne lietuvisku).
  				if(ch[i]== sim) kiek++;
  			}
  			if(ch[i] == 'ą' || ch[i] == 'č' || ch[i] == 'ę' || ch[i] == 'ė' || ch[i] == 'į' || ch[i] == 'š' || ch[i] == 'ų' || ch[i] == 'ū' || ch[i] == 'ž') kiek++;
			}

Redagavo MindeB
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...