Zliczanie znaków, co robię nie tak...

0

Witam,
Przygotowuję się do kolosa, przerabiam zadania i mam problem z jednym:
"Program ma za zadanie zliczyć wszystkie wprowadzone znaki, a następnie sprawdzić czy ta liczba jest podzielna przez 3 i 7, oraz wyświetlić odpowiedni komunikat"
Napisałem coś takiego, ale program zlicza mi tylko litery, a pomija cyfry znaki interpunkcyjne i spacje.
Możecie mi pomóc i powiedzieć gdzie robię błąd??

#include "cstdlib"
#include "iostream"
#include "stdio.h"
#include "conio.h"
#include "string.h"
#include "ctype.h"

using namespace std;

int main()
{

    char tab[81];
    int b;
    int licznik=0;
    int i;
    gets(tab);
    b=strlen(tab);
    for(i=0;i<b;i++)
    {
        if(isalpha(tab[i]))licznik++;
    }
    cout<<"liczba liter "<<licznik<<endl;
    if(licznik%3==0&&licznik%7==0)
    {
            cout<<"ok"<<endl;
    }
    else (cout<<"bad"<<endl);
    getch();
    return 0;
}
0

W C++ możesz zrobić tak:

#include <iostream>
#include <string>
using namespace std;
int main()
{
	string a;
	getline(cin,a);
	if(a.length()%3==0 && a.length()%7==0)
		cout<<"ok\n";
	else
		cout<<"Nie ok\n";
	return 69;
} 

:)

1

@Carlos Spicy-Weener a co to co napisałeś na wspólnego z poleceniem? Bo na moje oko to chyba tylko język programowania sie zgadza...
@Mithgar twój problem leży tutaj:
isalpha() sprawdza czy dany znak JEST LITERĄ.
Jak byś chciał żeby ci zliczało inne znaki skoro sam je wykluczasz o_O

0

To jakiej funkcji użyć?? Nie jestem orłem, ale nie kojarzę innej funkcji :/

1

Ale po co w ogóle jakaś funkcja? o_O Poza tym co ty tam w ogóle robisz?

int zliczenia[255]={};
string dane;
getline(cin,dane);
for(int i=0;i<dane.length();i++)
  zliczenia[dane[i]]++;

w tablicy zliczenia[i] masz policzone ile razy wystąpił każdy znak ASCII
http://www.morbleu.com/wp-content/uploads/2009/08/ascii.gif

edit: aaa tych chcesz wiedzieć po prostu ile znaków ktoś wpisał? To przecież masz to już tutaj:

b=strlen(tab);
0

Już załapałem, wielkie dzięki :D

0

"Program ma za zadanie zliczyć wszystkie wprowadzone znaki, a następnie sprawdzić czy ta liczba jest podzielna przez 3 i 7, oraz wyświetlić odpowiedni komunikat"

@Shalom masz rację, pomyliło mi się z zliczaniem znaków w ogóle.. a tak w ogóle ten problem był już milion razy na forum..

1 użytkowników online, w tym zalogowanych: 0, gości: 1