Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

vidaloka860

Erro de logica

Recommended Posts

to fazendo o seguinte codigo, so que a questão das fixas ta dando erro, tipo, so fica somando de um em um, não to conseguindo fazer adicionar 3 ou 2...

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

main()
{
   int sorteio1, sorteio2, sorteio3, fixas, rg;
    srand(time(NULL));
    rg=0;
    fixas=0;
    do
    {


           sorteio1=rand()%5;
           sorteio2=rand()%5;
           sorteio3=rand()%5;

           printf("  /================\\ ");
           printf("\n / Caça niquel LUIZ \\\n");
           printf("|====================|\n");
           printf("|####################|\n");
           printf("||||  |||   |||   ||||\n");
           printf("|||| %d||| %d |||  %d||||\n", sorteio1, sorteio2, sorteio3);
           printf("||||  |||   |||   ||||\n");
           printf("|####################|\n");
           printf("|--------------------|\n");
           printf("|**Numero de fixas***|\n");
           printf("|#########%d##########|\n",fixas);
           printf("|--------------------|\n");
           if(sorteio1 == sorteio2 && sorteio1 == sorteio3 && sorteio2 == sorteio3)
               {   
                    fixas +=3;
               }
               else
               {
               if((sorteio1 != sorteio2 && sorteio1 == sorteio3 && sorteio2 == sorteio3) || (sorteio1 == sorteio2 && sorteio1 != sorteio3 && sorteio2 == sorteio3) || (sorteio1 == sorteio2 && sorteio1 == sorteio3 && sorteio2 != sorteio3))
               {fixas +=2;
               }else{
               fixas+=5;
               }
               }
           sorteio1 = 0;
           sorteio2 = 0;
           sorteio3 = 0;

           rg++;
           printf("\n\nAperte enter para rodar");
           getch();
         //  system("cls");
       }
       while(rg<6);


    /*
   printf("\n", sorteio1);
     printf("\n%d", sorteio2);
       printf("\n%d", sorteio3);
*/
getch();
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

vidaloka860,

 

Separe cada termo de comparação dos if's com ().

 

Exemplo:

- Este if:

...

if(sorteio1 == sorteio2 && sorteio1 == sorteio3 && sorteio2 == sorteio3)

...

 

Ficaria assim:

...

if((sorteio1 == sorteio2) && (sorteio1 == sorteio3) && (sorteio2 == sorteio3))

...

 

O erro de lógica pode estar aí. Pois os compiladores dão prioridade de execução ao que está dentro de parenteses, assim como na matemática.

Além de deixar o código mais organizado.

 

Dica:

- Neste código você não precisa incluir o header do windows, não está utilizando nenhuma função da API. Está?

- Também não necessita do header conio.h. Além de ser antiga e ultrapassada, não é portável.

 

Espero ter ajudado, FLW! :grin:

Compartilhar este post


Link para o post
Compartilhar em outros sites

sorteio1 == sorteio2 && sorteio1 == sorteio3 && sorteio2 == sorteio3

associatividade

se A == B e A == C, então B == C. Então seu if tem coisa sobrando

 

 

(sorteio1 != sorteio2 && sorteio1 == sorteio3 && sorteio2 == sorteio3)

de novo

voce compara A == C e B == C. Logo, A == B, e sorteio1 != sorteio2 sempre retornará falso

 

 

ps: estou considerando:

A = sorteio1

B = sorteio2

C = sorteio3

Compartilhar este post


Link para o post
Compartilhar em outros sites

windows.h eu uso pra colocar

Beep();

 

conio e stdio, é digamos, o professor sempre manda colcoar.

 

Agora, não intendi como deveria fica ro segundo que comprar se 2 dos 3 são verdadeiros

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.