Chyba v C

Programovacie jazyky, rady, poradňa...
Madeyro
Medium Expert
Medium Expert
Príspevky: 122
Registrovaný: 10 jan 2008, 18:26

Chyba v C

Príspevok od používateľa Madeyro »

Robili sme v skole jeden programik no a ja som uz tak trochu bezradny a nemozem nasjt chybu.
Program:

Kód: Vybrať všetko

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char *argv[])
{
  int a,b,c,d,e,f,g,h,pokusy,sm,nm;
  srand (time(NULL));
  printf("Hra \" Myslim si cislo\"\n\n");
  pokusy=0;
  sm=0;
  nm=0;
  a=(rand()%8)+1;
  b=(rand()%10);
  c=(rand()%10);
  d=(rand()%10);
  printf("Myslim si 4 ciferne cislo\n");
  printf("%d%d%d%d\n",a,b,c,d);
  do
    {
    printf("Uhadni moje cislo. Zadaj 4 cifry v poraadi od tisicok po jednotky\n\n");
    scanf("%d%d%d%d",&e,&f,&g,&h);
    pokusy++;
    if (e == a)
       sm++;
    else
        {
        if (e == b)
           nm++;
        else
            {
            if (e == c)
               nm++;
            else
                {
                if (e == d)
                   nm++;
                }
            }
        }
    if (f == a)
       nm++;
    else
        {
        if (f == b)
           sm++;
        else
            {
            if (f == c)
               nm++;
            else
                {
                if (f == d)
                   nm++;
                }
            }
        }
    if (g == a)
       nm++;
    else
        {
        if (g == b)
           nm++;
        else
            {
            if (g == c)
               sm++;
            else
                {
                if (g == d)
                   nm++;
                }
            }
        }
    if (h == a)
       nm++;
    else
        {
        if (h == b)
           nm++;
        else
            {
            if (h == c)
               nm++;
            else
                {
                if (h == d)
                   sm++;
                }
            }
        }
    printf("\n%d\t%d\n\n",sm,nm);
    if (sm=0)
       printf("Neuhadol si ani jednu cifru na spravnom mieste\n\n");
    else
        {
        if (sm=4)
           printf("Gratulujem, uhadol si moje cislo! Pocet tvojich pokusov je %d\n\n",pokusy);
        else
            {
            printf("Na spravnom mieste si uhadol %d cifier\n\n",sm);
            if (nm=0)
               printf("Neuhadol si ani jednu cifru na nespravnom mieste\n\n");
            else
                printf("Na nespravnom mieste si uhadol %d cifier\n\n",nm);
            }
        }    
    }
  while (sm!=4);
  
  system("PAUSE");	
  return 0;
}
Vsetko ide dobre chybu robi az pri tejto casti:

Kód: Vybrať všetko

if (sm=0)
       printf("Neuhadol si ani jednu cifru na spravnom mieste\n\n");
    else
        {
        if (sm=4)
           printf("Gratulujem, uhadol si moje cislo! Pocet tvojich pokusov je %d\n\n",pokusy);
        else
            {
            printf("Na spravnom mieste si uhadol %d cifier\n\n",sm);
            if (nm=0)
               printf("Neuhadol si ani jednu cifru na nespravnom mieste\n\n");
            else
                printf("Na nespravnom mieste si uhadol %d cifier\n\n",nm);
            }
        }    
    }
  while (sm!=4);
Sprava sa ako keby premenna "sm" = 4 pricom to tak nie je (viem ze sm!=4, lebo som si to dal vypisat)

Ak mam dat namiesto "code" source file tak dajte vediet a ja to upravim ;)
BX
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4572
Registrovaný: 10 jan 2008, 15:30

Re: Chyba v C

Príspevok od používateľa BX »

Ako sa porovnáva v C?
Madeyro
Medium Expert
Medium Expert
Príspevky: 122
Registrovaný: 10 jan 2008, 18:26

Re: Chyba v C

Príspevok od používateľa Madeyro »

x==y :D ale vysie to mam, nechapem preco na konci nie :/. Diky
Napísať odpoveď