Zliczanie liter

0

Muszę napisać program który zliczy litery. Udało mi się napisać tylko dla jednej litery.

#include <stdio.h>

char tablica[1000];

int main ( )
{
    printf("\n Wpisz dowolny łańcuch znaków\n");
    gets( tablica ) ;

    printf("\nWprowadzono %s\n", tablica );

    int i=0;
    int k=0;

    for(i=0, k=0; i<tablica[i]; i++){
        if(tablica[i]=='a')
            k=k+1;
        }
    tablica[i] != 0;
      printf("\nWynik: %d\n", k);


   return 0;
}
 

Jest możliwość żeby w funkcji zadeklarować duże i małe litery i zwrócić jako zmienną i wpisać zamist a w tym

if(tablica[i]=='a' 

?

0

Chodzi mi o wykorzystanie kodów ASCI

1

Guzik ci sie udalo zrobić. POMYŚL trochę. Każda "litera" ma odpowiedni numer ascii i mozesz ten numer wykorzystać jako indeks w tablicy w której zliczasz.

2

Żebyś miał odrobinę zabawy, proszę bardzo, oto przykład w C++
http://ideone.com/3nl8kC

count_if(begin(str), end(str), [](auto e){ return isalpha(e); })
0
#include <stdio.h>
#include <ctype.h>

char tablica[1000];

int isalpha( int tablica );

int main ( )
{
    printf("\n Wpisz dowolny łańcuch znaków\n");
    gets( tablica ) ;

    printf("\nWprowadzono %s\n", tablica );

    int i=0;
    int k=0;

    for(i=0, k=0; i<tablica[i]; i++){
        if(tablica[i]=isalpha( tablica[i] ))
            k=k+1;
        }
    tablica[i] != 0;
      printf("\nWynik: %d\n", k);


   return 0;
}
 

Działa :)

0

Po co ta deklaracja funkcji?

0
Panix napisał(a):

Działa :)

Niestety. Bo przez to nie widzisz, że jest wiele złych/niepotrzebnych rzeczy w tym programie. Idąc od góry:

char tablica[1000];               // globalna zmienna, magiczna liczba
int isalpha( int tablica );             // po co?
for(i=0, k=0; i<tablica[i]; i++){            // warunek zakończenia pętli niepoprawny, ++i
if(tablica[i]=isalpha( tablica[i] ))        // po co tablica[i]=
k=k+1;                                      // ++k
tablica[i] != 0;                          // po co?
0

Masz po prostu szczęście, że kody ASCII są większe niż długość wprowadzonego tekstu.
Dla takich danych

static const char* test = "!kkkkkkkkkkbbbbbbbbbbnnnnnnnnnnmmmmmmmmmmuuuuuuuuuu!oooooooooorrrrrrrrrrddddddddddwwwwwwwwwwllllllllllllllll"

wynikiem jest 50, bo warunek pętli jest inwalidą :]

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