» »

c++ naloga ne deluje pravilno

c++ naloga ne deluje pravilno

whatever ::

Tule je ena naloga ki se prevede prav in zazene ok vendar ne deluje pravilno pa mi ni jasno kaj je narobe ce kak programerski majster ve kje je napaka naj prosim pove cimprej!:D
Namen te kolobocije je taksenle:



Vhodno datoteko "vhod.txt" preoblikujte v izhodno datoteko "izhod.txt" tako, da v vsaki vrstici, ki ima več kot 7 besed, besedah na sodih mestih zamenjate samoglasnike z znakom '*', besede na lihih mestih pa izpišete obrnjeno. Besede so ločene z enim ali več presledki. Primer:
Kratka vrstica.
To je vrstica, ki vsebuje vec kot sedem besed.

Izhod:
Kratka vrstica.
oT j* ,acitsrv k* ejubesv v*c tok s*d*m .deseb

In tole je source:

#include

int main() {
fstream vhod("vhod.txt", ios::in); //vhodna datoteka
fstream izhod("izhod.txt", ios::out); //izhodna datoteka
while(!vhod.eof()) { //gre do konca vhodne dat
char niz[1000]="";
vhod.getline(niz, 1000, '\n'); //z getline v niz vpisujemo vrstico za vrstico
int i=0;
int k=0;
int i1=0;
int z=0;
int h=0;
int w=0;
int w1=0;
while (niz[w]!='\0') { //beremo znake v nizu do konca vrstice
if (niz[w]==' ' && w1!=w-1) {
h++; //h se poveca za 1, ce je niz[w] presledek in ce ne gre za dva zaporedna presledka, h je torej st besed
w1=w;
}
w++;
}

if(h>7) { //ce je st besed vecje od 7

while (niz[i]!='\0') { //znak za znakom gremo po vrstici

if (niz[i]==' ') { //ko naletimo na presledek
if (i1!=i) k++; //povecamo k za 1, ce ne gre za dva zap. presledka, torej dobimo sodo za sode in liho za lihe besede
cout << k;
int l=0;
char niz2[1000]="";
if (i1!=i) {
for(; i1 i1=i+1;

for(; z<=l; z++) { //gremo skozi besedo crko za crko


if (k%2==0) {if ((niz2[z]=='a') || (niz2[z]=='e') || (niz2[z]=='i') || (niz2[z]=='o') || (niz2[z]=='u') || (niz2[z]=='A') || (niz2[z]=='E') || (niz2[z]=='I') || (niz2[z]=='O') || (niz2[z]=='U')) niz2[z]='*'; else niz2[z]=niz2[z];} //ce je soda beseda, nadomestimo samoglasnike z zvezdico
else if (k%2!=0 && z<=((z+l)/2)) { //ce je liha znake v besedi obrnemo
char niz3[1000]="";
niz3[z]=niz2[l];
niz2[l]=niz2[z];
niz2[z]=niz3[z];
l--;

}
else break;


}
z=0;
izhod << niz2; //v izhodno dat izpise besedo
izhod << ' '; //in presledek
}
else if(i1==i) {izhod << ' '; i1=i+1;} //ce gre za 2 zap presledka izpise samo presledek
}
i++;
}

}




else izhod << niz; //ce je v vrstici manj kot 7 besed, se vrstica skopira v izhodno dat

izhod << '\n'; //skok v novo vrstico
}

return 0;
}





Ce komu rata svaka cast jst nimam vec ideje.
Ko sn dobil nazaj popravljeno sem dobil komentar da se prikradejo dodatni konci vrstic... Fora je pa, da ce v 33. vrstici kjer je { l++; niz2=niz} vrstni red znotraj oklepaja zamenjam, program izpise ali samo sode vrstice ali samo lihe vrstice.




  • spremenilo: whatever ()


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

c++ DODAJANJE elementov iz datoteke v vektor

Oddelek: Programiranje
7913 (788) Tutankhamun
»

Java Objekti

Oddelek: Programiranje
102206 (1900) Mavrik
»

C++ datoteke

Oddelek: Programiranje
5901 (728) technolog
»

[NALOGA][NASM] problem pri povezovanju s C-jevskimi funkcijami

Oddelek: Programiranje
61363 (1221) c00L3r
»

štetje vpisanih znakov

Oddelek: Programiranje
81337 (1250) bostek

Več podobnih tem