Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Matej
Člen
Avatar
Matej:20.10.2015 11:37

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
Tvůrce
Avatar
Odpovídá na Matej
Martin Dráb:20.10.2015 11:56

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
Jozef:20.10.2015 12:16

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
Člen
Avatar
Matej:20.10.2015 16:31

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
Libor Šimo (libcosenior):20.10.2015 17:23

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í
+2,50 Kč
Ř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
Člen
Avatar
Matej:20.10.2015 18:11

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):20.10.2015 18:17

Svoje myslenie!

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

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
20.10.2015 18:50
I'm not afraid to die on a treadmill
Avatar
Odpovídá na Jozef
Libor Šimo (libcosenior):20.10.2015 19:01

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
Člen
Avatar
Odpovídá na Jozef
Matej:20.10.2015 19:04

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:20.10.2015 19:11

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):20.10.2015 19:12

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:20.10.2015 19:19

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

Nahoru Odpovědět
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
Člen
Avatar
Matej:20.10.2015 20:15

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
Jozef:20.10.2015 20:35

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