matematykaszkolna.pl
Programowanie C Petr: Jezyk C . Napisz program,który liczy ile po wpisaniu ciągu znaków jest cyfr a ile liter. Jakies propozycje ? Zgóry dzieki
8 lis 13:06
Dziadek Mróz: ... #define SIZE 32 char *napis = (char *)malloc(32 * sizeof(char)); printf("Napis: "); scanf("%32s", napis); size_t ile_cyfr = 0; size_t ile_liter = 0; size_t i; for (i = 0; i < SIZE; i++) { if (napis[i] >= '0' && napis[i] <= '9') { ile_cyfr++; } if ((napis[i] >= 'A' && napis[i] <= 'Z') || (napis[i] >= 'a' && napis[i] <= 'z')) { ile_liter++; } } ... opcja 2: ... ile_cyfr += napis[i] >= '0' && napis[i] <= '9' ? 1 : 0; ile_liter += (napis[i] >= 'A' && napis[i] <= 'Z') || (napis[i] >= 'a' && napis[i] <= 'z') ? 1 : 0; ...
8 lis 13:17
Petr: Dzieki, ale generalnie nie rozumiem cos ty zrobil na początku char *napis = (char *)malloc(32 * sizeof(char)); printf("Napis: "); scanf("%32s", napis); sizet ilecyfr = 0; sizet ileliter = 0;
8 lis 13:23
jc: Proponuję coś takiego: #include <stdio.h> #include <ctype.h> int main(){ char napis[100]; int i; int litery = 0; int cyfry = 0; scanf("%99s", napis); for(i=0; napis[i]; i++){ if(isdigit( napis[i] )) cyfry++; if(isalpha( napis[i] )) litery++; } printf("%d %d\n", cyfry, litery); return 0; }
8 lis 13:50
Petr: bardziej zrozumiała propozycja
8 lis 13:57
Petr: przypomnij mi co to było isdigit i isalpha w ctype.h
8 lis 13:59
jc: A jak myślisz, co to może być?
8 lis 14:02
Petr: cos zwiazanego z analizą znaków, ten isalpha do liter a isdigit z tego co widzę do cyfr.
8 lis 14:04
Adamm: isalpha − czy jest literą isdigit − czy jest cyfrą
8 lis 14:28
Dziadek Mróz: Ja hołduję zasadzie, że jak ktoś chce się nauczyć programowania to niech się uczy podstaw, znajduje własne rozwiązanie problemu, a gdy u zna że jest wystarczająco wyszkolony to użyje gotowych funkcji typu isalpha i isdigit. Wykładowca spyta co robi dana funkcja to nie będzie wiedział. Jak w tej rymowance: ... A Dziad wiedział, nie powiedział...
8 lis 22:31