Pereiti prie turinio

c++ darbas su tekstu


Rekomenduojami pranešimai

Sveiki, taigi ir vėl kreipiuosi pagalbos:

 

LA5-7

Tekstiniame faile pateikiamas tekstas. Žodžiai iš eilutės į kitą eilutę nekeliami. Žodžiai eilutėse skiriami bent vienu tarpu. Tarpai gali būti eilutės pradžioje bei gale, gali būti tuščios eilutės. Pašalinti žodžius, sudarytus iš nelyginio simbolių skaičiaus.

 

Nelabai suprantu duomenų faila, atrodo lyg pati salyga sau prieštarautu, tai žodžiai surašyti vienoje eilutėje ar keliuose eilutėse?

 

ir gal idėjų kaip šią funkcija parašyti? :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Juk salyga tiesiog praso, kad zodis nebutu parasytas taip:

Sveikas pa-
sauli

funkcija analizuojanti eilute turi rasti zodzio pradzia ir pabaiga, po to jei (pa-pr+1)%2 == 1 tada istrini zodi ir panaikini tarpus (nors to salygoje nepraso, tai manau uztenka raides keisti i tarpus).

Dabar nepamenu ar c++ string tipas nuskaito visa eilute faile ar gali paimti atskira zodi?

Redagavo audrius^
Nuoroda į pranešimą
Dalintis kituose puslapiuose

blem, nesigauna, ištraukiu eilutę, toj eilutėj lyg ir surandu žodžius kuriuos man reikia ištrinti bet kaip man viską spausdint išskyrus tuos kelis žodžius...

redaguok string'a istrindamas ko tau nereikia

http://www.cplusplus.com/reference/string/string/erase/

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dėkui, bet pasidariau turbūt išpjovęs anginą pro užpakalį, na bet jei kam įdomu:

 

void IsimtiNelyg(){

ifstream failas("Duomenys.txt"); // Atidaro Duomenys.txt
ofstream rez("Rezultatai.txt"); // Atidaro Rezultatai.txt
int pr,pb=0,ilg,prad,z; // kintamieji
string eilute,sakinys="";
while(!failas.eof()){ // kol yra duomenų
getline(failas,eilute); // ima 1 eilutę
eilute += " "; // prideda tarpą prie eilutės galo
pb=0;
pr = eilute.find_first_not_of(" ",pb); // suranda pirmą simboli kuris nėra tarpas
z=0;
while(z < 100){ // kol mažiau už žodžius eilutėje
	pb = eilute.find_first_of(" ",pr); // suranda paskutini simboli kuris nėra tarpas
	sakinys="";
	ilg = pb-pr; // suradus žodžio pradžią ir pabaigą galima sužinot žodžio ilgį
	if(ilg%2!=0){ // jei žodžio ilgis nelyginis
		for(int i=0;i<pr;i++){ // įrašo visus simbolius iki to žodžio pradžios
			sakinys +=eilute.at(i);
		}
		for(unsigned int b=pb;b<(eilute.length());b++){ // įrašo likusius simbolius nuo to žodžio pabaigos
			sakinys +=eilute.at(b);
		}
		eilute = sakinys; // eilutei priskiria įrašytą eilutės reikšmę
	} else { // jeigu tai lyginio ilgio žodis
		eilute = eilute; // nieko nepakeičia(nebūtina šitą eilutė nžn kam ją parašiau)
	}
	if(ilg%2!=0){ // jeigu ištrintasis žodis buvo nelyginis
		pr=pr; // tai visą eilutę pradeda žiūrėti nuo pradžių
	}else { // jeigu - lyginis
	prad = eilute.find_first_not_of(" ",pb); // kitų žodžių pradeda ieškoti nuo buvusio žodžio pabaigos
	pr = prad; 
	}
	z++; // pridedam žodi
}
cout << eilute << endl; // spausdina eilutę ekrane
rez << eilute << endl; // spausdina eilutę rezultatų faile
}

Redagavo Tikasas
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ą...