» »

[C++] branje iz datoteke in spreminjanje nizov

[C++] branje iz datoteke in spreminjanje nizov

Scooty` ::

/* 6. naloga Napišite program, katerega vhod je tekstovna datoteka VHOD,
izhod pa tekstovna datoteka IZHOD, na kateri so zamenjane vse besede,
katerih lihe črke so samoglasniki z nizom, ki ga uporabnik vpiše preko terminala.*/
void main()
{
//	char niz[100];
	char niz1[20];
	
	cin>>niz1;
	char niz[100];int i=0;
	ifstream dat("vhod.txt");
	ofstream data("izhod.txt");

	char tmp;

	while (! dat.eof())
	{
	

		do
		{
			tmp=dat.get();	//prepis besede 
			niz[i]=tmp;		//iz datoteke v niz
			i++;
		}
		while(tmp != ' ' || '.' || ',');


		for (int n=0; niz[n] !='\0'; n++)
		{
			if (((n % 2)==0) && niz[n] == ('a' || 'e' || 'i' || 'o' || 'u')) //če je liha črka samoglasnik
			{
				for (int j=0; niz1[j] !='\0'; j++)
				{										//vpis niza1 v datoteko
					data.put(niz1[j]);
				}
				data.put(' ');
			}
			else										//če ne
			{
				for (int j=0; niz[j] != '\0'; j++)		//pa vpis niza v datoteko
				{
					data.put(niz[j]);
				}
			}
		}
	}
}

Ali morda ve kdo, zakaj program ne deluje? poskušal sem že na vse načine pa ne znam popraviti.. morda ve kdo za preprostejšo rešitev?
lp
  • spremenilo: snow ()

Gundolf ::

Za začetek:
while(tmp != ' ' || '.' || ',')
Ne naredi tega kar ti hočeš. Na žalost se primerjanj ne da pisat na tak način. To kar ti hočeš se napiše takole:
while((tmp != ' ') && (tmp != '.') && (tmp != ','))

Popravi tole za začetek in poskusi znova. Pa ko boš že to delal, dodaj še ostala ločila ;)

Potem pa naslednjič bolj točno povej kaj ne deluje. Če ti compiler napiše napako povej napako in vrstico, če compiler prebavi to kodo potem povej, kako ti program ne deluje, a vrne izhodno datoteko enako vhodni, a se zacikla, a ti formatira računalnik itd.

snow ::

#include <string>
#include <fstream>
#include <sstream>
#include <iostream>

using namespace std;

bool isvowel(char s)
{
	return s=='a' || s=='e' || s=='i' || s=='o' || s=='u';
}

int main()
{
	ifstream ifVhod("vhod.txt");
	ofstream ofIzhod("izhod.txt");
	string beseda, vrstica, sout, niz;
	cin>>niz;
	stringstream ssin,ssout;
	while(getline(ifVhod,vrstica))
	{
		//cout<<vrstica<<endl;
		ssin.str(vrstica);
		ssin.clear();
		ssout.str("");
		while(ssin>>beseda)
		{
            cout<<beseda<<" ";
			int lihe=1;
			for(int i=0;i<beseda.size();i+=2)
			{
				if(!isvowel(beseda[i]))
				{
					lihe=0;
					break;
				}
			}
			if(lihe==1)
			{
				ssout<<niz<<" ";
			}
			else
			{
				ssout<<beseda<<" ";
			}
		}
		sout=ssout.str();
		if(sout.size()>0)
		{
            sout.erase(sout.size()-1);
        }
		ofIzhod<<sout<<"\n";
	}
	
	return 0;
}



c++ prva lekcija (pred hello world):
int main(){}


Pa drugič si preberi temo o imenovanju tem, ko odpiraš novo. Tokrat bom jaz popravil.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins

Scooty` ::

Najlepša hvala obema za pomoč. Sam tega nebi znal naredit..
snow, se opravičujem glede imenovanja teme.. bom naslednjič bolj pazljiv..
lep pozdrav, Scooty'
lp

snow ::

Ni problema.

Hmm mogoče je treba tole mojo kodo še malo popravit. Možno da kakšen presledek kje poje... pa kaka ločila je še treba čekirat.

Če bo še kak problem kar vprašaj... prvo pa preglej kodo in probaj razumet. :)
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins


Vredno ogleda ...

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

C++ datoteke

Oddelek: Programiranje
5936 (763) technolog
»

C strukture, kazalci naloga pomoc

Oddelek: Programiranje
51474 (1369) DavidJ
»

Pomoc v C-ju

Oddelek: Programiranje
51313 (1225) rfmw
»

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

Oddelek: Programiranje
61387 (1245) c00L3r
»

problem with c/c++ like program

Oddelek: Programiranje
71171 (996) OwcA

Več podobnih tem