Tu masz małą modyfikacje twojego kodu:
#include <iostream>
#include <string.h>
int main()
{
std::string tekst;
int spacja=0, liczba_a=0, liczba_z=0, liczba_p=0;
std::cout << "Podaj tekst:";
getline(std::cin,tekst);
for(std::size_t i=0; i<tekst.size(); i++)
{
switch(tekst.at(i))
{
case ' ':
spacja++;
break;
case 'a':
liczba_a++;
break;
case 'z':
liczba_z++;
break;
case 'p':
liczba_p++;
break;
default:
break;
}
}
std::cout << "liczba spacji wynosi: " << spacja << std::endl;
std::cout << "liczba a wynosi: " << liczba_a << std::endl;
std::cout << "liczba z wynosi: " << liczba_z << std::endl;
std::cout << "liczba p wynosi: " << liczba_p;
return 0;
}
Mam nadzieję, że pomoże, lecz lepiej wykorzystać rzutowanie typu char (string to nic innego jak tablica char'ów) na typ int bądź unsigned int a następnie sprawdzanie odpowiednich wartości za pomocą tablicy ASCII. Kod poniżej:
#include <iostream>
#include <string.h>
int main()
{
std::string tekst;
int spacja=0, liczba_a=0, liczba_z=0, liczba_p=0;
std::cout << "Podaj tekst:";
getline(std::cin,tekst);
for(std::size_t i=0; i<tekst.size(); i++)
{
switch(static_cast<unsigned int>(tekst.at(i)))
{
case 32:
spacja++;
break;
case 97:
liczba_a++;
break;
case 122:
liczba_z++;
break;
case 112:
liczba_p++;
break;
default:
break;
}
}
std::cout << "liczba spacji wynosi: " << spacja << std::endl;
std::cout << "liczba a wynosi: " << liczba_a << std::endl;
std::cout << "liczba z wynosi: " << liczba_z << std::endl;
std::cout << "liczba p wynosi: " << liczba_p;
return 0;
}