Avatar
Matej Bandik
Člen
Avatar
Matej Bandik:

Ahojte všetci ;)
ako mám zistiť či užívateľ zadal znak alebo číslo ? keď obidve možnosti sú platné :) takže keď zadá znak program mi vypíše word: .... a keď číslo number: ... :)
Prosím o nejaký odkaz na článok ktorý sa týmto zaoberá alebo vysvetlenie :) môže byť aj kodom :D
Ďakujem

 
Odpovědět 20.10.2015 11:37
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Matej Bandik
Martin Dráb:

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.

Nahoru Odpovědět 20.10.2015 11:56
2 + 2 = 5 for extremely large values of 2
Avatar
Jozef
Člen
Avatar
Odpovídá na Matej Bandik
Jozef:

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

Nahoru Odpovědět 20.10.2015 12:16
I'm not afraid to die on a treadmill
Avatar
Matej Bandik
Člen
Avatar
Matej Bandik:

Asi sme sa celkom nepochopili alebo som to nenapísal celkom dobre :) Martin máš asi pravdu :D 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é :D
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 :D

 
Nahoru Odpovědět 20.10.2015 16:31
Avatar
Odpovídá na Matej Bandik
Libor Šimo (libcosenior):

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;
}
Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 20.10.2015 17:23
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Matej Bandik
Člen
Avatar
Matej Bandik:

Skvelý kód. Keby som chcel zadávať vstup sam čo by bolo treba zmeniť? :)

 
Nahoru Odpovědět 20.10.2015 18:11
Avatar
Libor Šimo (libcosenior):

Svoje myslenie!

Nahoru Odpovědět  +2 20.10.2015 18:17
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jozef
Člen
Avatar
Odpovídá na Matej Bandik
Jozef:

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).

Nahoru Odpovědět  +2 20.10.2015 18:50
I'm not afraid to die on a treadmill
Avatar
Odpovídá na Jozef
Libor Šimo (libcosenior):

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. ;-)

Nahoru Odpovědět 20.10.2015 19:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Matej Bandik
Člen
Avatar
Odpovídá na Jozef
Matej Bandik:

Idem si to pozrieť :) a idem rozmýšľať sám :) díky

 
Nahoru Odpovědět 20.10.2015 19:04
Avatar
Jozef
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jozef:

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 :)

Nahoru Odpovědět 20.10.2015 19:11
I'm not afraid to die on a treadmill
Avatar
Odpovídá na Jozef
Libor Šimo (libcosenior):

Mathos mi napisal, ze nema rad pointery..., k tomu v cecku nemam komentar...

Nahoru Odpovědět 20.10.2015 19:12
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Jozef
Člen
Avatar
Odpovídá na Libor Šimo (libcosenior)
Jozef:

Tak to si teda moc programovanie v C neužije.

Nahoru Odpovědět  +1 20.10.2015 19:19
I'm not afraid to die on a treadmill
Avatar
Nahoru Odpovědět 20.10.2015 19:29
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Matej Bandik
Člen
Avatar
Matej Bandik:

To som písal ale prečo nepoviete čo som napísal potom ;) nemám ich rád z dôvodu že im celkom nerozumiem a chcel som po vás aby ste mi ten kód aspoň trochu vysvetlili ... inač vďaka za odpoveď

 
Nahoru Odpovědět 20.10.2015 20:15
Avatar
Jozef
Člen
Avatar
Odpovídá na Matej Bandik
Jozef:

Č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

Nahoru Odpovědět 20.10.2015 20:35
I'm not afraid to die on a treadmill
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.