Diskuze: Znak alebo číslo
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 16 zpráv z 16.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Pokud myslíš čísla v textové formě (tzn. vstup je tvořen znaky 0-9, popř. dalšími pro jiné číselné soustavy než desítkovou), tak můžeš maximálně rozlišit, zda uživatelem zadaný řetězec je číslo nebo ne. Čísla v textové formě jsou posloupnosti znaků, a tedy to vlastně jsou znaky.
Tvoj problém riešia funkcie isdigit() (http://www.cplusplus.com/…ype/isdigit/)
a isalpha() (http://www.cplusplus.com/…ype/isalpha/).
Vstupny znak načítas ako znak char
Asi sme sa celkom nepochopili alebo som to nenapísal celkom dobre Martin máš asi pravdu
a Jozef žiaľ to asi
nevyužijem
Nejak takto to má vyzerať :
Toto bude na vstupe
Hello, world!
Created on 2015-08-26
having 13 words out of which 8 = 4+4 contains o.
A na výstupe bude toto:
word: Hello,
word: world!
word: Created
word: on
date: Wed 2015-08-26
word: having
number: 13 (prime)
word: words
word: out
word: of
word: which
number: 8
word: = (palindrome)
word: 4+4 (palindrome)
word: contains
word: o.
ten vstup bol načítaný zo súboru ale keď to zadám cez scanf malo by to
byť rovnaké
A proste ide o to že ja zadám napr. 5 program vypíše number: 5 ( a ešte k
tomu zistí či je prvočíslo )
zadám ahoj vypíše word: ahoj ( a ešte k tomu zisti či ide o palindrom čo
je rovnaké slovo z oboch strán napr. anna )
A mňa zaujíma ako zistím či je to word alebo number potom tam je ešte datum ale to
neskôr a to ostatné dajme bokom
A mňa zaujíma ako zistím či je to word alebo number
potom tam je ešte datum ale to neskôr a to ostatné dajme bokom
#include <stdio.h>
#include <ctype.h>
char * je_cislo(char * slovo)
{
char *vysledok = "number";
while (*slovo) {
if (!isdigit(*slovo++)) {
vysledok = "word";
break;
}
}
return vysledok;
}
int main(void)
{
char *slovo1 = "0",
*slovo2 = "25kl58",
*slovo3 = "koleso",
*slovo4 = "256897";
printf("%s: %s\n", je_cislo(slovo1), slovo1);
printf("%s: %s\n", je_cislo(slovo2), slovo2);
printf("%s: %s\n", je_cislo(slovo3), slovo3);
printf("%s: %s\n", je_cislo(slovo4), slovo4);
return 0;
}
Svoje myslenie!
Obe funkcie, ktoré som napísal, resp. minimálne aspoň jednu z nich potrebuješ. Tak isto boli použité vo vyššie uvedenom kóde. Nechcel som ti sem dávať kód, je to tvoja úloha, nie moja. Chcel som ťa iba nakopnúť, aby si vedel akým smerom sa máš zamerať. Keby si trošku porozmýšľal, s uvedenými funkciami by si na svoje riešenie mal poľahky prísť sám. Nezáleži na tom, či je vstup jeden znak alebo viac znakov(napr. slovo).
Jozef, sam vies,, ze tie funkcie si dokaze napisat kazdy, kto len trochu
pozna cecko, takze ich vazne nepotrebuje hotove. Ja som ich pouzil, preto ze ich
poznam a nemusim vymyslat koleso.
Samozrejme, ale teraz neviem na čo tým chceš poukázať. Ja som mu ich napísal, pretože je to pre neho oveľa jednoduchšie použiť už hotové funkcie. Jediné, čo trebalo domyslieť bolo, ako skontrolovať všetky znaky - ani to nie je potrebné vždy. Ako som mu napísal:
Chcel som ťa iba nakopnúť, aby si vedel akým smerom sa máš zamerať.
Voči tvojmu riešeniu nemám výhrady, snáď okrem toho, že si ho nemusel
zverejniť celé. Vlastným snažením sa človek naučí vždy najviac
Mathos mi napisal, ze nema rad pointery..., k tomu v cecku nemam komentar...
Tak to si teda moc programovanie v C neužije.
Čomu presne nerozumieš? Aj tu sú celkom dobre vysvetlené, prvé články v serii C- Ďalší konstrukce. Prvý diel: http://www.itnetwork.cz/…-c-ukazatele
Zobrazeno 16 zpráv z 16.