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

Diskuze: Problém s polem

Aktivity
Avatar
Nekki
Neregistrovaný
Avatar
Nekki:31.8.2012 18:28
#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:31.8.2012 18:30

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

 
Nahoru Odpovědět
31.8.2012 18:30
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na
David Jančík:31.8.2012 19:14

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
Zapomeň, že je to nemožné a udělej to ;)
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na
David Jančík:31.8.2012 19:16

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

Nahoru Odpovědět
31.8.2012 19:16
Zapomeň, že je to nemožné a udělej to ;)
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:31.8.2012 19:16

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

Nahoru Odpovědět
31.8.2012 19:16
You are the greatest project you will ever work on.
Avatar
Nekki
Neregistrovaný
Avatar
Nekki:31.8.2012 20:03

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:31.8.2012 20:04

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

 
Nahoru Odpovědět
31.8.2012 20:04
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na
David Hartinger:31.8.2012 21:23

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
You are the greatest project you will ever work on.
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na
David Jančík:31.8.2012 21:30

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
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Duplicate
Člen
Avatar
Odpovídá na David Hartinger
Duplicate:31.8.2012 22:54

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
Tvůrce
Avatar
Odpovídá na Duplicate
Kit:31.8.2012 23:08

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 Hartinger
Vlastník
Avatar
Odpovídá na Duplicate
David Hartinger:1.9.2012 9:20

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
1.9.2012 9:20
You are the greatest project you will ever work on.
Avatar
Зайчик
Člen
Avatar
Зайчик:2.9.2012 20:20

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ý:26.11.2012 16:18

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ý:29.11.2012 11:30

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
Зайчик:29.11.2012 11:39

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

Člen
Avatar
:25.12.2012 14:33

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
Avatar
Martin Černý
Neregistrovaný
Avatar
Martin Černý:27.12.2012 11:24

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
Tvůrce
Avatar
Odpovídá na
Kit:27.12.2012 11:33

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
Tvůrce
Avatar
sugarmen:18.9.2013 21:36

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):19.9.2013 8:52

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
19.9.2013 8:52
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Libor Šimo (libcosenior):19.9.2013 8:55

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
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
sugarmen:21.9.2013 19:38

díky moc pomohlo mi to :O

 
Nahoru Odpovědět
21.9.2013 19:38
Avatar
oraz123
Člen
Avatar
oraz123:29.10.2013 16:24

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
Odpovídá na oraz123
Libor Šimo (libcosenior):30.10.2013 17:33

# include <string.h>

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:8.9.2014 22:14

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.