Forum » Programiranje » [C++] Štetje sičnikov in brisanje ločil
[C++] Štetje sičnikov in brisanje ločil
minghags ::
Lep pozdrav!
Zanima me, če mi lahko kdo pomaga pri tej nalogi. In sicer, rad bi prebral koliko sičnikov (c,s,z) je v polju in pobrisal ločila iz polja. Za zdaj sem prišel do sem...
Hvala za pomoč.
Zanima me, če mi lahko kdo pomaga pri tej nalogi. In sicer, rad bi prebral koliko sičnikov (c,s,z) je v polju in pobrisal ločila iz polja. Za zdaj sem prišel do sem...
#include <iostream> #include <string> #include <algorithm> using namespace std; int numChars(string besedilo[]) { int znaki=0; int vrstica=0; for(int a=0;a<10;a++) { vrstica=besedilo[a].length(); znaki=znaki+vrstica; } return znaki; } int numWords(string besedilo[]) { int besede=0; string vrsta; for(int a=0;a<1;a++) { vrsta=besedilo[a]; for(int b=0;b<besedilo[a].length();b++) { if(vrsta[b]==' ' || vrsta[b]=='\n') { besede++; } } besede++; } return besede; } int reverseString(string a[]) { for (int i = 0; i < 1; i++) { string rstr = a[i]; reverse(rstr.begin(), rstr.end()); cout << rstr << endl; } } int countChar( char * str , char ch ) { int countChar = 0; for ( int i = 0; str[i] != '\0'; i++) { if ( str[i] == ch ) countChar = countChar + 1; } return countChar; } int main() { string vrstica[10]; string ime; int meni; cout<<"Vnesi besedilo: "; cout<<endl<<"-----------------------"<<endl; for(int a=0;a<1;a++) { getline(cin,vrstica[a]); } cout<<"-----------------------"<<endl; do { cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++"<<endl; cout<<"+ MENU +"<<endl; cout<<"+ 1. Izpise stevilo vnesenih znakov +"<<endl; cout<<"+ 2. Izpise stevilo vnesenih besed +"<<endl; cout<<"+ 3. Obrne niz +"<<endl; cout<<"+ 4. Prešteje število sičnikov +"<<endl; cout<<"+ 0. Izhod +"<<endl; cout<<"+++++++++++++++++++++++++++++++++++++++++++++++++"<<endl<<endl; cin>>meni; if(meni==1) { cout<<"Stevilo znakov: "<<numChars(vrstica)<<endl; } if(meni==2) { cout<<endl<<"Stevilo besed: "<<numWords(vrstica)<<endl; } if(meni==3) { cout<<reverseString(vrstica); } if(meni==4) { cout << "s comes : " << countChar( vrstica , 's' ) << " times" << endl; } } while(meni!=0); return 0; }
Hvala za pomoč.
klemen93 ::
namesto
napiši
ali pa napiši novo funkcijo
cout << "s comes : " << countChar( vrstica , 's' ) << " times" << endl;
napiši
cout << "s, c, z comes : " << (countChar( vrstica , 's' ) + countChar( vrstica , 'c' ) + countChar( vrstica , 'z' )) << " times" << endl;
ali pa napiši novo funkcijo
int steviloSicnikov( char * str ) { int countChar = 0; for ( int i = 0; str[i] != '\0'; i++) { if ( str[i] == 's' || str[i] == 'c' || str[i] == 'z' ) countChar++; } return countChar; }
minghags ::
Hvala, ampak problem je, da je v funkciji char, jaz pa uporabljam string... in mi vrže ven "No matching function to call to "steviloSicnikov"...
minghags ::
Hvala ti... Zaj pa samo še ena stvar, če je mogoče možnost da pomagaš, in sicer moram izbrisati ven vsa ločila:
To sem do zdaj naredil, kak bi to lahko implementiral?
Hvala še enkrat.
void izbris_vejic(string str[]) { for(int a=0;a<10;a++) { for(int i = besedilo[a].find(",", 0); i != string::npos; i = besedilo[a].find(",", i)) { besedilo[a].erase(i,1); i++; } } }
To sem do zdaj naredil, kak bi to lahko implementiral?
Hvala še enkrat.
ERGY ::
str.erase(std::remove_if (str.begin(), str.end(), static_cast<int(*)(int)>(&ispunct)), str.end()); //pobrišemo ločila
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Niti - segmentation faultOddelek: Programiranje | 1993 (840) | galu |
» | DIJKSTROV_ALGORITEMOddelek: Programiranje | 2221 (1455) | krneki0001 |
» | [C] Vsota števil v poljuOddelek: Programiranje | 1279 (1217) | Cvenemir |
» | [C++] Delo s *.txt datotekamiOddelek: Programiranje | 2025 (1501) | Tr0n |
» | [C++][Naloga_polja]MIN in MAX polja, izpis za x.100 stevilOddelek: Programiranje | 2944 (2755) | snow |