Program zliczający spacje nie działa

Program zliczający spacje nie działa
A0
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Cześć,
Dopiero zacząłem swoją przygodę z językiem C++ i mam problem w programie liczącym spacje w tekście. Otóż program ten ignoruje instrukcję warunkową i wypisuje zawsze 0 (zmienna spacje). Co robię źle?

Kopiuj
#include <iostream>
#include <string.h>

using namespace std;
int i;

int main()
{	
	char tekst[255];
	int spacje;
	spacje=0;
	cin >> tekst;
	for (i=0; i<strlen(tekst); i++)
		{
			if(tekst[i]==' ')
			spacje++;
		}
	cout << spacje;
        return 0;
} 
SO
  • Rejestracja: dni
  • Ostatnio: dni
0

Użyj isspace

SI
  • Rejestracja: dni
  • Ostatnio: dni
3

Nie działa, bo cin uznaje spację za koniec tekstu, patrz prosta modyfikacja twojego programu

Kopiuj
#include <iostream>
#include <string.h>

using namespace std;
int i;

int main()
{
    char tekst[255];
    int spacje;
    spacje=0;
    cin >> tekst;
    for (i=0; i<strlen(tekst); i++)
        {
            if(tekst[i]==' ')
            spacje++;
        }
    cout <<  "W " << tekst << " mamy " <<  spacje;
        return 0;
}
 

edit: a tu działająca wersja w c++, użyłem string a nie string.h oraz getline-a

Kopiuj
 
#include <iostream>
#include <string>

using namespace std;
int i;

int main()
{
    string tekst;
    int spacje;
    spacje=0;
    getline(cin, tekst);
    for (i=0; i<tekst.size(); i++)
        {
            if(tekst[i]==' ')
            spacje++;
        }
    cout <<  "W " << tekst << " mamy " <<  spacje;
        return 0;
}
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
3

cin >> tekst; wczyta ci tekst do najbliższego białego znaku (w tym spacje).
Użyj: - getline

n0name_l
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2412
1
Kopiuj
for(i = 0; (c = cin.get()) && cin.good(); i += isblank(c));

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.