C++ ZADATAK: MANIPULACIJA STRINGOVIMA

12


#include
#include
#include
using namespace std;
class Stringovi {
private:
string s1, s2, s3;

public:
void unos();
void top3najvise();
void top3najmanje();
void obrnuti();
void funkcija2();
Stringovi(string, string, string);
};
Stringovi::Stringovi(string x, string y, string z) {
s1 = x;
s2 = y;
s3 = z;
}
void Stringovi::unos() {
cout << "Unesite prvi string: ";
getline(cin, s1);
cout << "Unesite drugi string: ";
getline(cin, s2);
cout << "Unesite treci string: ";
getline(cin, s3);
}
void Stringovi::top3najvise() {
string s = s1 + s2 + s3;
cout << "3 najcesce pojavljivana znaka su: " << endl;
int niz[256] = {0};
char znak;
// za svaki znak prebrojavamo broj ponavljanja u nizu
// (svaki znak je odredjen ascii kodom)
for (int i = 0; i < s.length(); i++) {
niz[(int)s[i]]++;
}
// u nizu trazimo maximalni broj ponavljanja,
// ispoisujemo te ga postavljamo na 0
for (int i = 0; i < 3; i++) {
int max = 0;
for (int j = 0; j < 256; j++) {
if (max < niz[j]) {
max = niz[j];
znak = j;
}
}
cout << "Znak " << znak << " " << niz[znak] << " puta" << endl;
niz[znak] = 0;
}
}
void Stringovi::top3najmanje() {
string s = s1 + s2 + s3;
cout << "3 najmanje pojavljivana znaka su: " << endl;
int niz[256] = {0};
char znak;
// za svaki znak prebrojavamo broj ponavljanja u nizu
// (svaki znak je odredjen ascii kodom)
for (int i = 0; i < s.length(); i++) {
niz[(int)s[i]]++;
}
// u nizu trazimo minimalni broj ponavljanja,
// ispoisujemo te ga postavljamo na 0
for (int i = 0; i < 3; i++) {
int min = 1000;
for (int j = 0; j < 256; j++) {
if (niz[j] != 0) {
if (niz[j] < min) {
min = niz[j];
znak = j;
}
}
}
cout << "Znak " << znak << " " << niz[znak] << " puta" << endl;
niz[znak] = 0;
min = 1000;
}
}
void Stringovi::obrnuti() {
int izbor;
cout << "Unesite string koji zelite ispisati obrnuto
(unesite 1, 2 ili 3)" izbor;
switch (izbor) {
case 1: {
int j = s1.length() - 1;
string ss1 = s1;
for (int i = 0; i < j; i++) {
char temp = ss1[i];
ss1[i] = ss1[j];
ss1[j] = temp;
j--;
}
cout << "\nNovi string: " << ss1 + s2 + s3 << endl;
break;
}
case 2: {
int j = s2.length() - 1;
string ss2 = s2;
for (int i = 0; i < j; i++) {
char temp = ss2[i];
ss2[i] = ss2[j];
ss2[j] = temp;
j--;
}
cout << "\nNovi string: " << s1 + ss2 + s3 << endl;
break;
}
case 3: {
int j = s3.length() - 1;
string ss3 = s3;
for (int i = 0; i < j; i++) {
char temp = ss3[i];
ss3[i] = ss3[j];
ss3[j] = temp;
j--;
}
cout << "\nNovi string: " << s1 + s2 + ss3 <> skok;
for (int i = 0; i < s.length(); i++) {
if (skok == i || brojac == i) {
if (islower(s[i])) {
s[i] = toupper(s[i]);
} else if (isupper(s[i])) {
s[i] = tolower(s[i]);
} else if (isdigit(s[i])) {
s[i] = '0';
} else {
s[i] = '0';
}
brojac = brojac + skok;
}
}
cout << "Finalni string: " << s << endl;
}
int main() {
int opcija;
string x, y, z;
Stringovi st(x, y, z);
st.unos();
do {
cout << "IZBORNIK" << endl;
cout << "1. 3 najmanje i najvise pojavljivana znaka" << endl;
cout << "2. spajanje u jedan string i ispis svakog narednog znaka pocev od "
"prvog, sa tast unosimo skok"
<< endl;
cout << "3. jedan string se ispisuje u obrnutom redoslijedu (korisnik bira "
"koji)"
<< endl;
cout << "4. izlaz" << endl;
cout << "__________________________________________________________________"
"__________"
<< endl;
cout << "Unesite opciju"  opcija;
switch (opcija) {
case 1: {
st.top3najvise();
st.top3najmanje();
break;
}
case 2: {
st.funkcija2();
break;
}
case 3: {
st.obrnuti();
break;
}
case 4: {
cout << "Odabrali ste opciju za izlaz" << endl;
break;
}
default: { cout << "Opcije su od 1 do 3" << endl; }
}
} while (opcija != 4);
system("Pause");
return 0;
}

3.JPG

 

Komentariši