Zadanie mi nefunguje, neviem kde je chyba, je to jazyk C – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Zadanie mi nefunguje, neviem kde je chyba, je to jazyk C – C / C++ – Fórum – Programujte.comZadanie mi nefunguje, neviem kde je chyba, je to jazyk C – C / C++ – Fórum – Programujte.com

 

Barbora
~ Anonymní uživatel
3 příspěvky
31. 3. 2017   #1
-
0
-

 zdravim vie mi niekto pomocť a povedať mi prečo to nepočíta tak ako má? vopred dakujem za pomoc. som už z toho zufala.

//mnozstvo minci za jednu rudu
#define MINCA_ZA_RUDU1   1

//mnozstvo minci za jednu rudu ak nie je unaveny
#define MINCA_ZA_RUDU2     2

//maximalne mnozstvo jedla v inventari trpaslika
#define INV_MAX_JEDLO   10

//maximalna unava, po ktorej uz nepracuje
#define MAX_UNAVA      10

//pocet trpaslikov
#define POCET_TRPASLIKOV    1

//maximanla nuda
#define MAX_NUDA    10

//maximalne mnoystvo piva
#define MAX_PIVO    20

#include "defines.h"
#include <stdio.h>
#include <time.h>

typedef struct
{
    int jedlo;
    int pivo;
    int ruda;
    int mince;
} CENTRALNY_SKLAD;

typedef struct
{
    int jedlo[INV_MAX_JEDLO];
    int pivo[MAX_PIVO];
    int unava[MAX_UNAVA];
    int nuda[MAX_NUDA];
} INVENTAR_STAV;

typedef enum
{
    ODDYCH = 1,
    BANIK = 2,
    REMESELNIK = 3,
    KUCHAR = 4,
    PIVOVARNIK = 5
} TypAkcie;

void trpaslik_generator (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);
void vypis_skladu_stav(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);
int oddych(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);
int banik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);
int remeselnik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);
int kuchar(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);
int pivovarnik(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);
int centralna_distribucna_funkcia(TypAkcie typakcie,INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad);

int main()
{
    int x = 0, i;
    srand(time(NULL));
    INVENTAR_STAV *inventar_stav;
    CENTRALNY_SKLAD *centralny_sklad;
    TypAkcie typakcie;


    printf("********************Dwarf Fortress********************\n");
    trpaslik_generator (&inventar_stav, &centralny_sklad);
    for(i = 1; i <= 5; i++)
    {
        vypis_skladu_stav(&inventar_stav, &centralny_sklad);
        printf("****************CYKLUS CISLO %d****************\n",i);
        printf ("vykonala sa akcia: %d\n", typakcie = rand()%5+1) ;
        printf ("akcia vratila hodnotu (0 - nepodarila sa akcia/1 - akcia sa podarila): %d\n",centralna_distribucna_funkcia(typakcie, &inventar_stav, &centralny_sklad));
        vypis_skladu_stav(&inventar_stav, &centralny_sklad);



    }

    return 0;
}

void trpaslik_generator (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
    int i;
    srand(time(NULL));
    centralny_sklad->jedlo = 100;
    centralny_sklad->pivo = 100;
    centralny_sklad->ruda = 50;
    centralny_sklad->mince = 50;

    for (i = 1; i <= POCET_TRPASLIKOV; i++)
    {
        inventar_stav->jedlo[i] = 0;
        inventar_stav->pivo[i] = 0;
        inventar_stav->unava[i] = 0;
        inventar_stav->nuda[i] = 0;
    }

    for (i = 1; i <= POCET_TRPASLIKOV; i++)
    {
        inventar_stav->jedlo[i] = rand()%10 + 1; /* generovanie nahodneho cisla v rozsahu 1 - 10 */
        inventar_stav->pivo[i] = rand()%10 + 1;
        inventar_stav->unava[i] = rand()%10 + 1;
        inventar_stav->nuda[i] = rand()%10 + 1;
    }

}

void vypis_skladu_stav(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
    int i;
    for (i = 1; i <= POCET_TRPASLIKOV; i++)
    {
        printf ("----------------trpaslik %d---------------------\n",i);
        printf ("CENTRALNY SKLAD: jedlo: %d\tpivo: %d\truda: %d\t\tmince: %d\n",centralny_sklad->jedlo, centralny_sklad->pivo, centralny_sklad->ruda, centralny_sklad->mince);
        printf ("INVENTAR STAV:   jedlo: %d\tpivo: %d\t\tunava: %d\t\tnuda: %d\n\n",inventar_stav->jedlo[i], inventar_stav->pivo[i], inventar_stav->unava[i], inventar_stav->nuda[i]);

    }
}


int oddych(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
    int i;
    int tmp = 0;
    for(i = 1; i <= POCET_TRPASLIKOV; i++ )
    {
        inventar_stav->nuda[i] = 0;
        inventar_stav->unava[i] = 0;
        if (centralny_sklad->jedlo >= INV_MAX_JEDLO && centralny_sklad->pivo >= MAX_PIVO)
        {
            tmp = INV_MAX_JEDLO - sizeof(inventar_stav->jedlo[i]);
            centralny_sklad->jedlo -= tmp;
            inventar_stav->jedlo[i] += tmp;
            tmp = 0;

            tmp = MAX_PIVO - sizeof(inventar_stav->pivo[i]);
            centralny_sklad->pivo -= tmp;
            inventar_stav->pivo[i] += tmp;
        }
        else return 0;
    }
    return 1;
}

int banik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
    int i;
    for(i = 1; i <= POCET_TRPASLIKOV; i++ )
    {
        if (inventar_stav->jedlo[i] > 0 && inventar_stav->jedlo[i] <= INV_MAX_JEDLO || inventar_stav->pivo[i] > 0 && inventar_stav->pivo[i] <= MAX_PIVO || inventar_stav->unava[i] >= 0 && inventar_stav->unava[i] <= MAX_UNAVA)
        {
            inventar_stav->jedlo[i]--;
            inventar_stav->pivo[i]--;
            inventar_stav->unava[i]++;

            (inventar_stav->unava[i] <= 5) ? (centralny_sklad->ruda += 2) : (centralny_sklad->ruda++);
        }
        else return 0;
    }
    return 1;
}

int remeselnik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
    int i;
    for(i = 1; i <= POCET_TRPASLIKOV; i++ )
    {
        if (inventar_stav->jedlo[i] > 0 && inventar_stav->jedlo[i] <= INV_MAX_JEDLO || inventar_stav->pivo[i] > 0 && inventar_stav->pivo[i] <= MAX_PIVO || inventar_stav->unava[i] >= 0 && inventar_stav->unava[i] <= MAX_UNAVA)
        {
            inventar_stav->jedlo[i]--;
            inventar_stav->pivo[i]--;
            inventar_stav->unava[i]++;

            (inventar_stav->unava[i] <= 5) ? (centralny_sklad->mince += MINCA_ZA_RUDU2) : (centralny_sklad->mince += MINCA_ZA_RUDU1);
        }
        else return 0;
    }
    return 1;
}

int kuchar(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
    int i;
    for(i = 1; i <= POCET_TRPASLIKOV; i++ )
    {
        if (inventar_stav->nuda[i] >= 0 && inventar_stav->nuda[i] < MAX_NUDA || inventar_stav->unava[i] >= 0 && inventar_stav->unava[i] < MAX_UNAVA || centralny_sklad->mince >= 30)
        {
            inventar_stav->nuda[i]++;

            (centralny_sklad->mince >= 30) ? ((centralny_sklad->jedlo += centralny_sklad->jedlo) && (inventar_stav->unava[i]-- )) : (centralny_sklad->jedlo++);
        }
        else return 0;
    }
    return 1;
}

int pivovarnik(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
    int i;
    for(i = 1; i <= POCET_TRPASLIKOV; i++ )
    {
        if (inventar_stav->nuda[i] >= 0 && inventar_stav->nuda[i] < MAX_NUDA  || inventar_stav->unava[i] >= 0 && inventar_stav->unava[i] < MAX_UNAVA || centralny_sklad->mince >= 30)
        {
            inventar_stav->nuda[i]--;
            inventar_stav->unava[i]--;

            (inventar_stav->unava[i] <= 5 && inventar_stav->nuda[i] <= 5) ? ((centralny_sklad->pivo += MINCA_ZA_RUDU2) && (centralny_sklad->mince -= MINCA_ZA_RUDU2)) : ((centralny_sklad->pivo += MINCA_ZA_RUDU1) && (centralny_sklad->mince -= MINCA_ZA_RUDU1));
        }
        else return 0;
    }
    return 1;
}

int centralna_distribucna_funkcia(TypAkcie typakcie,INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
   // int akcia1, akcia2, akcia3, akcia4, akcia5ô
    int akcia = 0;
    switch (typakcie)
    {
    case ODDYCH:
        akcia = oddych(&inventar_stav, &centralny_sklad) ;
        break;                                                           //jaky sakra samostatny zaznam chce
    case BANIK:
        akcia = banik (&inventar_stav, &centralny_sklad) ;
        break;
    case REMESELNIK:
        akcia = (remeselnik (&inventar_stav, &centralny_sklad)) ;
        break;
    case KUCHAR:
        akcia = (kuchar(&inventar_stav, &centralny_sklad)) ;
        break;
    case PIVOVARNIK:
        akcia = (pivovarnik(&inventar_stav, &centralny_sklad)) ;
        break;
    default:
        break;
    }
    return akcia;
}

Nahlásit jako SPAM
IP: 178.40.120.–
KIIV
~ Moderátor
+43
God of flame
1. 4. 2017   #2
-
0
-

No ono je to hlavne tim, ze je tam strasne moc chyb. Sice se zobrazuji jen jako warningy, takze to zkompilovat jde, ale padne to temer okamzite na pristup mimo vlastni pamet.

Nejvetsi chyby jsou hlavne:

for (i = 1; i <= POCET_TRPASLIKOV; i++)

// spravne by melo byt:
for (i = 0; i < POCET_TRPASLIKOV; ++i)

Indexovani poli se v C pocita od 0. Je to proto, ze mas adresu prvniho prvku a k nemu se pripocita offset. Tudiz pokud zacinas od 1, tak je to vlastne  adresa+1*sizeof(prvek) -> druhy prvek. Ono v C je pro jednorozmerne pole plati:  ptr[i]  ==  *(ptr+i)  == i[ptr].
Da se to i prohodit, jelikoz je to v zaveru vlastne: *(i+ptr)

A pokud tedy opravis pocitani od 0, tak nesmis zapomenout na koncovou podminku  i <= POCET. Jelikoz pak jeste budes zasahovat ZA posledni prvek.

#define N 5
int pole[N];

/*
Pak mas prvky:   {1, 2, 3, 4, 5}
Ale indexy jsou:  0  1  2  3  4
*/

Dalsi obrovsky problem jsou nedefinovane pointery:

    INVENTAR_STAV *inventar_stav;
    CENTRALNY_SKLAD *centralny_sklad;

Podle pouziti hadam, ze to melo byt:

    INVENTAR_STAV     inventar_stav;
    CENTRALNY_SKLAD centralny_sklad;

Tj. mas struktury pekne v pameti a pokud pouzijes ziskani adresy, tak odkazuje na spravne misto.

Nahlásit jako SPAM
IP: 94.113.99.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
1. 4. 2017   #3
-
0
-

No a i pak je tam pomerne slusna radka warningu:

test.c: In function ‘main’:
test.c:42:5: warning: implicit declaration of function ‘srand’ [-Wimplicit-function-declaration]
     srand(time(NULL));
     ^
test.c:54:55: warning: implicit declaration of function ‘rand’ [-Wimplicit-function-declaration]
         printf ("vykonala sa akcia: %d\n", typakcie = rand()%5+1) ;
                                                       ^
test.c: In function ‘banik’:
test.c:134:41: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
         if (inventar_stav->jedlo[i] > 0 && inventar_stav->jedlo[i] <= INV_MAX_JEDLO || inventar_stav->pivo[i] > 0 && inventar_stav->pivo[i] <= MAX_PIVO || inventar_stav->un
                                         ^
test.c:134:185: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
 av->jedlo[i] > 0 && inventar_stav->jedlo[i] <= INV_MAX_JEDLO || inventar_stav->pivo[i] > 0 && inventar_stav->pivo[i] <= MAX_PIVO || inventar_stav->unava[i] >= 0 && inventar
                                                                                                                                                                  ^
test.c: In function ‘remeselnik’:
test.c:152:41: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
         if (inventar_stav->jedlo[i] > 0 && inventar_stav->jedlo[i] <= INV_MAX_JEDLO || inventar_stav->pivo[i] > 0 && inventar_stav->pivo[i] <= MAX_PIVO || inventar_stav->un
                                         ^
test.c:152:185: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
 av->jedlo[i] > 0 && inventar_stav->jedlo[i] <= INV_MAX_JEDLO || inventar_stav->pivo[i] > 0 && inventar_stav->pivo[i] <= MAX_PIVO || inventar_stav->unava[i] >= 0 && inventar
                                                                                                                                                                  ^
test.c: In function ‘kuchar’:
test.c:170:41: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
         if (inventar_stav->nuda[i] >= 0 && inventar_stav->nuda[i] < MAX_NUDA || inventar_stav->unava[i] >= 0 && inventar_stav->unava[i] < MAX_UNAVA || centralny_sklad->minc
                                         ^
test.c: In function ‘pivovarnik’:
test.c:186:41: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
         if (inventar_stav->nuda[i] >= 0 && inventar_stav->nuda[i] < MAX_NUDA  || inventar_stav->unava[i] >= 0 && inventar_stav->unava[i] < MAX_UNAVA || centralny_sklad->min
                                         ^
test.c: In function ‘centralna_distribucna_funkcia’:
test.c:205:24: warning: passing argument 1 of ‘oddych’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = oddych(&inventar_stav, &centralny_sklad) ;
                        ^
test.c:105:5: note: expected ‘INVENTAR_STAV * {aka struct <anonymous> *}’ but argument is of type ‘INVENTAR_STAV ** {aka struct <anonymous> **}’
 int oddych(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:205:40: warning: passing argument 2 of ‘oddych’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = oddych(&inventar_stav, &centralny_sklad) ;
                                        ^
test.c:105:5: note: expected ‘CENTRALNY_SKLAD * {aka struct <anonymous> *}’ but argument is of type ‘CENTRALNY_SKLAD ** {aka struct <anonymous> **}’
 int oddych(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:208:24: warning: passing argument 1 of ‘banik’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = banik (&inventar_stav, &centralny_sklad) ;
                        ^
test.c:129:5: note: expected ‘INVENTAR_STAV * {aka struct <anonymous> *}’ but argument is of type ‘INVENTAR_STAV ** {aka struct <anonymous> **}’
 int banik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:208:40: warning: passing argument 2 of ‘banik’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = banik (&inventar_stav, &centralny_sklad) ;
                                        ^
test.c:129:5: note: expected ‘CENTRALNY_SKLAD * {aka struct <anonymous> *}’ but argument is of type ‘CENTRALNY_SKLAD ** {aka struct <anonymous> **}’
 int banik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:211:30: warning: passing argument 1 of ‘remeselnik’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = (remeselnik (&inventar_stav, &centralny_sklad)) ;
                              ^
test.c:147:5: note: expected ‘INVENTAR_STAV * {aka struct <anonymous> *}’ but argument is of type ‘INVENTAR_STAV ** {aka struct <anonymous> **}’
 int remeselnik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:211:46: warning: passing argument 2 of ‘remeselnik’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = (remeselnik (&inventar_stav, &centralny_sklad)) ;
                                              ^
test.c:147:5: note: expected ‘CENTRALNY_SKLAD * {aka struct <anonymous> *}’ but argument is of type ‘CENTRALNY_SKLAD ** {aka struct <anonymous> **}’
 int remeselnik (INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:214:25: warning: passing argument 1 of ‘kuchar’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = (kuchar(&inventar_stav, &centralny_sklad)) ;
                         ^
test.c:165:5: note: expected ‘INVENTAR_STAV * {aka struct <anonymous> *}’ but argument is of type ‘INVENTAR_STAV ** {aka struct <anonymous> **}’
 int kuchar(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:214:41: warning: passing argument 2 of ‘kuchar’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = (kuchar(&inventar_stav, &centralny_sklad)) ;
                                         ^
test.c:165:5: note: expected ‘CENTRALNY_SKLAD * {aka struct <anonymous> *}’ but argument is of type ‘CENTRALNY_SKLAD ** {aka struct <anonymous> **}’
 int kuchar(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:217:29: warning: passing argument 1 of ‘pivovarnik’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = (pivovarnik(&inventar_stav, &centralny_sklad)) ;
                             ^
test.c:181:5: note: expected ‘INVENTAR_STAV * {aka struct <anonymous> *}’ but argument is of type ‘INVENTAR_STAV ** {aka struct <anonymous> **}’
 int pivovarnik(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^
test.c:217:45: warning: passing argument 2 of ‘pivovarnik’ from incompatible pointer type [-Wincompatible-pointer-types]
         akcia = (pivovarnik(&inventar_stav, &centralny_sklad)) ;
                                             ^
test.c:181:5: note: expected ‘CENTRALNY_SKLAD * {aka struct <anonymous> *}’ but argument is of type ‘CENTRALNY_SKLAD ** {aka struct <anonymous> **}’
 int pivovarnik(INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
     ^

* srand a rand jsou definovany v  stdlib.h

* centralna_distribucna_funkcia uz ma parametry tak, jak je ma pak dale predat do funkce. Takze pri jejich volani uz zadne &.

* doporucuje ti to pouzivat zavorky, protoze pouzivas  && a || 

A tak dale a tak dale .....

Pokud tedy pridas #include <stdlib.h> a opravis:

int centralna_distribucna_funkcia(TypAkcie typakcie,INVENTAR_STAV *inventar_stav, CENTRALNY_SKLAD *centralny_sklad)
{
   // int akcia1, akcia2, akcia3, akcia4, akcia5ô
    int akcia = 0;
    switch (typakcie)
    {
    case ODDYCH:
        akcia = oddych(inventar_stav, centralny_sklad);
        break;                                                           //jaky sakra samostatny zaznam chce
    case BANIK:
        akcia = banik(inventar_stav, centralny_sklad);
        break;
    case REMESELNIK:
        akcia = remeselnik(inventar_stav, centralny_sklad);
        break;
    case KUCHAR:
        akcia = kuchar(inventar_stav, centralny_sklad);
        break;
    case PIVOVARNIK:
        akcia = pivovarnik(inventar_stav, centralny_sklad);
        break;
    default:
        break;
    }
    return akcia;
}

Tak uz zbyvaji jen ty zavorky (je mozne, ze se podminka bude vyhodnocovat jinak, nez bylo zamysleno).

Kazdopadne ty podminky vypadaji divne a prinejmensim se musi opravit rozsahy kontrol od  .. >= 0  do  .. < MAX

Nahlásit jako SPAM
IP: 94.113.99.–
Program vždy dělá to co naprogramujete, ne to co chcete...
KIIV
~ Moderátor
+43
God of flame
1. 4. 2017   #4
-
0
-

Pak jeste pouzivas ternalni operator  ? :  misto ifu. Sice to jde, ale az ted jsem si toho vsiml, takze pokud tvym umyslem nebylo zamlzit, co to dela, tak pouzij if. Napriklad:

(centralny_sklad->mince >= 30) ? ((centralny_sklad->jedlo += centralny_sklad->jedlo) && (inventar_stav->unava[i]-- )) : (centralny_sklad->jedlo++);

// by bylo trosku prehlednejsi jako:
if (centralny_sklad->mince >= 30) {
  centralny_sklad->jedlo += centralny_sklad->jedlo; // a najednou se objevi otazka: proc to nasobis dvema takto? Naprosto zrejme by to bylo proste vynasobit dvema
  inventar_stav->unava[i];
} else {
  centralny_sklad->jedlo++;
}
Nahlásit jako SPAM
IP: 94.113.99.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Staon0
Návštěvník
5. 4. 2017   #5
-
+1
-
Zajímavé

#4 KIIV
Ano, musím podpořit názor. Tento zápis je pouze mlžení kódu, obzvláště pokud jsou ve výrazu operátory se side efekty (+=, --, ++). Vyhodnocení výrazu je sice v tomto případě dobře definované, ale asi neznám programátora, který by si byl absolutně jistý. If je jednoznačně lepší volba.

Jenom bych dodal, že navrhovaný přepis do ifu není zcela přesný, protože původní vyraz v případě, že centralny_sklad->jedlo bude nula, neprovede dekrementaci inventar_stav->unava[i] (předpokládám, že dekrementace se ztratila pouze omylem). Nejsem si ale úplně jistý, jestli tohle náhodou nebyla chyba v původním vyrazu :-)

Nahlásit jako SPAM
IP: 94.142.234.–
KIIV
~ Moderátor
+43
God of flame
5. 4. 2017   #6
-
+1
-
Zajímavé

#5 Staon
pravda, dekrementace mi jen vypadla, ale na short evaluation jsem uplne zapomnel.

Coz tim spise potvrzuje: Prepsat a poradne, zadny saskarny. Jak neni na prvni pohled jasne, co se tam deje, je mozne, ze ani autor nevi, co to dela ci nedela.

Cca (zprehlednena forma nazvu promennych): 

    if (mince >= 30) {
      jedlo *= 2;
      if (jedlo) {
        unava--;
      }
    } else {
      jedlo++;
    }

A da se usetrit ten vnoreny if napriklad pouzitim:

  unava -= jedlo != 0;  
  // nebo: 
  unava -= !!jedlo;
  // a spousty dalsich variant

ale chce to zvazit

Nahlásit jako SPAM
IP: 212.47.3.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 70 hostů

Podobná vlákna

Chyba v kode, neviem si rady — založil Rastislav

Kde ej chyba? — založil Tom@sQo

Kde je chyba ? — založil sipeer

Kde je chyba — založil Milan

C# kde je chyba ? — založil Milan

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý