Diskuze: Problém s polem

C++ C a C++ Problém s polem

Avatar
Nekki
Neregistrovaný
Avatar
Nekki:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int hodnoty[25],i;
    char prikaz[32];

    printf("Zadej prikaz: ");
    scanf("%s", &prikaz);
    if(!strcmp("poloz", prikaz))
    {
        hodnoty[i];
    }

    for (i = 0; i < 25; i++) {
            if(hodnoty[i] == 1)
                printf("%d" , hodnoty [i]);
            else
                printf("0");
    }
}

Heleď takhle sem to napsal, ale vypíše mi to nulu i když zadám správný příkaz :(

 
Odpovědět 31.8.2012 18:28
Avatar
Nekki
Neregistrovaný
Avatar
Nekki:

A taky ta tabulká zmizí hned jak to dopíši :(

 
Nahoru Odpovědět 31.8.2012 18:30
Avatar
Odpovídá na Nekki
David Jančík [sczdavos]:

V té podmínce nepřiřazuješ nic do toho pole. Má tam být:

if(!strcmp("poloz", prikaz))
     {
         hodnoty[i] = 1;
     }
Nahoru Odpovědět 31.8.2012 19:14
Čím více času dostaneš, tím méně ho máš.
Avatar
Odpovídá na Nekki
David Jančík [sczdavos]:

Aby se konzole nezavřela zkus getchar(); nebo system("pause");

Nahoru Odpovědět 31.8.2012 19:16
Čím více času dostaneš, tím méně ho máš.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Nekki
David Čápka:

Nemáš tam = 1 u příkazu hodnoty[i].

Nahoru Odpovědět 31.8.2012 19:16
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Nekki
Neregistrovaný
Avatar
Nekki:

Tak sem to tam napsal ale píše mi toto:

ko\muj_program2\ma­in.c||In function 'main':|
ko\muj_program2\ma­in.c|10|warnin­g: format '%s' expects type 'char ', but argument 2 has type 'char ()[32]'|
ko\muj_program2\ma­in.c|11|warnin­g: implicit declaration of function 'strcmp'|
ko\muj_program2\ma­in.c|23|warnin­g: control reaches end of non-void function|
ko\muj_program2\ma­in.c|13|warnin­g: 'i' may be used uninitialized in this function|

  === Build finished: 0 errors, 4 warnings ===
 
Nahoru Odpovědět 31.8.2012 20:03
Avatar
Nekki
Neregistrovaný
Avatar
Nekki:

a taky když teď napíší "poloz" přestaně program odpovídat :(

 
Nahoru Odpovědět 31.8.2012 20:04
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Nekki
David Čápka:

Jo, tohle vypadá opravdu divně, snad se na to Зайчик potom podívá. Tato sekce je spíše doplňková, pokud nemáš žádný pádný důvod programovat zrovna v C, navštiv sekci o modernějším jazyce C#, které se tu velmi věnujeme.

Nahoru Odpovědět 31.8.2012 21:23
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na Nekki
David Jančík [sczdavos]:

Zkus to takhle:

char slovo[50] = {'\0'};

gets(slovo);

Já už si nepamatuju jak to tam v Céčku přesně je, ale vím, že s tím stringem tam byly nějaké problémy. Díval jsem se na nějaké své programy v něm a se stringem tam pracuju takto.

Nahoru Odpovědět 31.8.2012 21:30
Čím více času dostaneš, tím méně ho máš.
Avatar
Duplicate
Člen
Avatar
Odpovídá na David Čápka
Duplicate:

No já se to chci naučit postupně nejdřív se naučit C poté C++ a nakonec C#, a taky je tu problém že nemam Visual Studio, ale v budoucnosti bych se chtěl věnovat programování jak 3D tak 2D her, zatím dělám jen v Game Makeru, protože GML umim asi nejvíc, ale v tom dobrá 3D hra moc urobit nejde ta 2D ještě jakžtakž :D, čiže co by ste mi doporučily, jaké jazyky k tomu budu potřebovat umět atd. ?
Zatim umim totiž jen základy html a css. GML ovládám tak na "střední" úrovni :D. A dříve sem se též věnoval jazyku pawn :)

 
Nahoru Odpovědět 31.8.2012 22:54
Avatar
Kit
Redaktor
Avatar
Odpovídá na Duplicate
Kit:

Cesta od jazyků nízké úrovně k vysokoúrovňovým není zrovna rozumná, protože si můžeš přenést chybné návyky. Raději bys měl začít s C#, Javou nebo Pythonem. Osobně se přimlouvám za Python, protože je pro začátečníka asi nejjednodušší a přitom toho umí opravdu hodně.

Nahoru Odpovědět 31.8.2012 23:08
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Duplicate
David Čápka:

Přesně, to je úplná hloupost. Když jdeš do autoškoly, také si děláš řidičák na auto, neděláš si nejdříve na motorku, potom trojkolku a potom auto. C# není o nic složitější než C nebo C++, ty začátky tam jsou úplně stejné a možná ještě jednodušší.

Nahoru Odpovědět  +2 1.9.2012 9:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Зайчик
Člen
Avatar
Зайчик:

nevím kde je přesně chyba vše jsem nečetl každopádně na pozastavení programu je system("pause"); nebo getch(); getchar(); a tak podobně myslím že už jsem to psal v nějakém článku za druhé vše co jsem tu napsal jsou jen příklady takže je možné že to nefunguje přesně jak myslíte alias if nepíšu tuším chlupaté závorky protože tam nemam jiný řetězec a podobně takže není třeba jej rozlišovat char warningy nejsou správně napsány a tak je vaše IDE bere jako warning funguje ale 100% správně to není můžete napsat proměnou samozdrejmě do funkce dále pokud mám pole prvni si vyplnim pole nulovou hodnoutou! pole[i] = 0; a dáme do cyklu pote ... porovnáme strcmp a misto nulové hodnoty napíšeme 1 není na tom nic divného stačí číst , neřešit kraviny , myslet a co je hlavni COPY PASTE je vám na prdlačku

Nahoru Odpovědět 2.9.2012 20:20
Коммунизм для нашего будущего!
Avatar
Martin Černý
Neregistrovaný
Avatar
Martin Černý:

Tak předně, příklad který nefunguje je pro každýho k ničemu. Vím že internet snese všechno ale lepší nepsat nic, než být za troubu. Ty jsi evidentně někdo, kdo čekal, že sklidí velkej obdiv, ale k tomu je potřeba odvést obdivuhodný výkon, a ne jen machrovat. U takto psaného kurzu se nedá předpokládat, že u něj profíci budou trávit delší čas než jedno kliknutí myši, které je pošle úplně jinam. Ti co tu zůstanou, pravděpodobně začínaj a pro takové je příklad nefunkční z jakéhokoli důvodu opravdu leda ke škodě.

v podmínce je použita proměná "i" ale není deklarována, proto se nic neděje a program vyhodí chybu. takže:

if(!strcmp("poloz", prikaz))
{
i = 0;
hodnoty[i] = 1;
}

vloží jedničku do buňky pole podle hodnoty i, v tomto případě do první, i = 1 do druhé i = 2 do třetí atd.

nebo

if(!strcmp("poloz", prikaz))
{
for(i = 0; i < 25; i++)
hodnoty[i] = 1;
}

tento cyklus for vloží 1 do všech polí řetězce.

omlouvám se autorovi za následující řádek, ale leckdo ho určitě ocení
Začátečníkům doporučuji kurz na http://www.sallyx.org/sally/c/

 
Nahoru Odpovědět 26.11.2012 16:18
Avatar
Martin Černý
Neregistrovaný
Avatar
Martin Černý:

Omlouvám se deklarována je, není ji přiřazena hodnota...

 
Nahoru Odpovědět 29.11.2012 11:30
Avatar
Зайчик
Člen
Avatar
Odpovídá na Martin Černý
Зайчик:

Tak si nastuduj knížku a klidně napiš článek. A můj se smaže. Podle mě příklady na copy/ paste jsou k ničemu, když si to člověk ani nepřečte jak to funguje a hned scrolluje ke kódu. ^^

Nahoru Odpovědět 29.11.2012 11:39
Коммунизм для нашего будущего!
Avatar
R.P.
Člen
Avatar
R.P.:

Ja som len začiatočník ale myslím že tento návod je vhodný pretože je podstatné ten program pochopiť a nie len copy/paste, ak sa ten program pochopý tak podla mňa si každý kto to pochopil dokáže tam tých zopár príkazov doplniť aby sa mu to dalo spustiť.

Nahoru Odpovědět 25.12.2012 14:33
Každý má dve možnosti. Sme buď naplnení láskou…, alebo strachom.
Avatar
Martin Černý
Neregistrovaný
Avatar
Martin Černý:

Omlouvám se tedy upřímně, jak je vidět každému vyhovuje něco jiného. Já se učil na copy/paste příkladech a nikterak mi to nepřekáželo v tom si příklad (program) přečíst a pochopit. Mějte se fajn:-)

 
Nahoru Odpovědět 27.12.2012 11:24
Avatar
Kit
Redaktor
Avatar
Odpovídá na Martin Černý
Kit:

To jsi na tom vcelku dobře. Většina programátorů includuje knihovnu nebo framework a ani se do nich nepodívá.

Nahoru Odpovědět 27.12.2012 11:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
sugarmen
Redaktor
Avatar
sugarmen:

tvoje tutoriály sa mi páčia ale tento som vôbec nepochopil čo a ako a prečo ... ;(

len dúfam že toto neni nič dôležité alebo sa to doučím neskôr pokračujem v tvojom daľšom tutoriále

 
Nahoru Odpovědět 18.9.2013 21:36
Avatar
Odpovídá na sugarmen
Libor Šimo (libcosenior):

Dám ti sem doplnený kód. Možno ti to pomôže pochopiť.

#include <stdio.h>

int main(void)
{
    int hodnoty[25],i; // i představuje proměnnou pozice nějakého objektu
    char prikaz[32]; // prikaz predstavuje reťazec

    // najpr naplním pole hodnoty[25] jednotkami a nulami na základe zadaného reťazca
    // poloz = 1 v poli, vpravo, vlavo, zdvihni (teda všetko okrem poloz) = 0 v poli
    for (i = 0; i < 25; i++)  {
        printf("Zadej prikaz: ");
        scanf("%s", &prikaz);
        // strcmp() porovná dva reťazce, ak sú rovnaké vráti nulu
        if(!strcmp("poloz", prikaz)) // ak vyhodnotenie podnienky je nula
        {
            hodnoty[i] = 1;
        }
    }
    putch('\n'); // odriadkovanie

    // a potom vykreslíme všechny "jedničky" z pole

    for (i = 0; i < 25; i++)  {
        if(hodnoty[i] == 1)
            printf("%d" , hodnoty[i]);
        else
            printf("0");
    }
    return 0;
}
Nahoru Odpovědět  +1 19.9.2013 8:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):

Samozrejme by to išlo aj inakšie. Ja som vychádzal z pôvodného kódu.

Nahoru Odpovědět 19.9.2013 8:55
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
sugarmen
Redaktor
Avatar
Avatar
oraz123
Člen
Avatar
oraz123:

Nefunguje mi !strcmp ... pise ze je undefined, co s tim, nema se includovat jeste neco?

 
Nahoru Odpovědět 29.10.2013 16:24
Avatar
Nahoru Odpovědět 30.10.2013 17:33
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Levin
Člen
Avatar
Levin:

Na jakém základě se přiřazují 1 a 0? Nenašel jsem v tom nějaký systém. Pro polož to vypíše 1001000100010­000010000000. Taky nepochopím, že když zadám nějaké číslo, tak to vypíše 1 taky.

 
Nahoru Odpovědět 8.9.2014 22:14
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 26 zpráv z 26.