Dzięki @MasterBLB, działa mi :)
Nie chciał bym zakładać, nowego tematu, z drobnym problemem więc umieszczę tu. Mianowicie, zadanie jest takie:
Wejście:
Na wejściu program wczytuje łańcuch liter o długości nie większej niż 10 znaków. Następnie wczytuje liczbę n (0<n<10) oznaczającą liczbę napisów do przetestowania. W kolejnych n liniach znajdują się owe napisy. Długość napisu nie przekracza 100 znaków. Należy zliczyć liczbę wystąpień każdej litery z wejścia w każdym podanym napisie.
Wyjście:
Program wypisuje dla każdego napisu liczbę wystąpień każdej litery w osobnych liniach w formacie: "litera:liczba_wystapien".
Przykład:
Wejście:
as
2
ala ma kota
marysia ma rysia
Wyjście:
a: 4
s: 0
a: 4
s: 2
Wiem, że problem w moim programie leży zapewne w funkcji .length() która zliczając znaki bierze rownież spacje pod uwagę co skutkuje błędem w pętli while i problemem z programem. Zamieszczę to co mam i może ktoś będzie umiał mi pomóc.
#include <cstdlib>
#include <iostream>
#include <string>
using namespace std;
int iw(string napis, char litera)
{
int liczba=0;
for(int i=0; i<napis.length(); ++i)
{
if(napis[i]==litera) ++liczba;
}
return liczba;
}
int main()
{
string zdanie;
string litery;
int lt=1;
int tab[10][10];
do{getline(cin,litery);}
while(litery.length()>10);//problem
do{cin>>lt;}
while(lt>10&<<0);//Problem
cin.get();
for(int j=0; j<lt; ++j)
{
do{getline(cin,zdanie);}
while(zdanie.length()>100);//Problem
for(int i=0; i<litery.length(); ++i)
{
tab[j][i]=iw(zdanie,litery[i]);
}
}
for(int p=0; p<lt; p++)
{
for(int k=0,i=0; k<litery.length(),i<litery.length(); ++k,++i)
{
cout<<litery[k]<<":"<<tab[p][i]<<endl;
if(k>(litery.length()-1))k=0;
}
}
return 0;
}