[ create a new paste ] login | about

Link: http://codepad.org/pEoPCo5a    [ raw code | fork ]

Sk8erPeter - C++, pasted on May 13:
/**
* Titkosírás: Kérjen be egy max. 1000 karakterből álló szöveget, majd a szöveg szavait adott kódrendszer
* segítségével írassa ki kódoltan is. A kódolás szabálya is jelenjen meg a képernyőn.
* Pl.: "Sok alma van az almafa alatt.". Kódolás: al=A, fa=B. Az új szöveg: "Sok Ama van az AmaB Aatt."
*/

#include <iostream>
#include <string>

using namespace std;

//Elődeklaráció
void kodol(const char* elotte, string& utana);

//Főprogram
int main(){
	const int meret=1001;
	char cin_szoveg[meret];
	cin_szoveg[meret-1]=0;

	cin.get(cin_szoveg, meret); //beolvasunk a standard inputról "meret" mennyiségű szöveget

	string utana(cin_szoveg);  //lemásoljuk stringbe a bepötyögött szöveget

	kodol(cin_szoveg, utana);

	cout<<"Elotte:\t"<<cin_szoveg<<endl
		<<"Utana:\t"<<utana<<endl; //kiírjuk utána

	return 0;
}

/// Kódolás
void kodol(const char* elotte, string& utana){
	const int SOROK=3;
	const int OSZLOPOK=2;

	char* betucsere[SOROK][OSZLOPOK]=
	{
		{"al", "A"},
		{"fa", "B"},
		{"Sok","25"}
	};

	//figyelem! az alábbi csak akkor működik helyesen, ha a keresett karaktersorozat rövidebb, mint amivel kicseréljük! (pl. betucsere[1][0] ("al") rövidebb, mint betucsere[1][1] ("A")

	for(int i=0;i<SOROK;i++){ //végigmegyünk a "titkosítandókon"
		for(unsigned j=0;j<utana.size(); ){ //végigmegyünk a karaktersorozaton, és minden előforduló "titkosítandót" cserélünk
			size_t talaltpoz=utana.find(betucsere[i][0],j); //pl. keressük az "al"-t a j. pozíciótól
			if (talaltpoz!=string::npos){ //talált
				utana.replace(talaltpoz, strlen(betucsere[i][0]), betucsere[i][1]); //helyettesítjük a "talaltpoz" pozícióban lévő, "betucsere[i][0]" hosszúságú szöveget ("al") "betucsere[i][1]" szöveggel ("A")
				j=talaltpoz+strlen(betucsere[i][1]); //a j. pozíció: csak a már lecserélt szöveg UTÁNI karaktersorozatot érdemes megvizsgálni
			}
			else break; //ha egyáltalán nem találtunk, felesleges tovább vizsgálódni, megnézzük a következő keresett elemet (külső ciklus)
		}
	}
}


Create a new paste based on this one


Comments: