TOPIC

PROBLEM 2031 - URI Fórum 1.0

URI Online Judge asked 4 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • willian oliveira pires replied 4 years ago

    10% errado

    #include<stdio.h>
    #include<string.h>
    
    main(){
     char escolha1[10], escolha2[10];
     int qtd,i;
    
         scanf("%d",&qtd);
         if( qtd >= 1 && qtd <= 1000){
              int caso[qtd];
                 for(i =0; i < qtd; i++){
                    scanf("%s %s",escolha1,escolha2);
                    if( (strcmp(escolha1,"pedra") == 0) && (strcmp(escolha2,"pedra") == 0) ){
                        caso[i] = 1;
                    }else if( (strcmp(escolha1,"papel") == 0) && (strcmp(escolha2,"papel") == 0) ){
                        caso[i] = 2;
                    }else if( (strcmp(escolha1,"ataque") == 0) && (strcmp(escolha2,"ataque") == 0) ){
                        caso[i] = 3;
                    }else if( (strcmp(escolha1,"ataque") == 0) && (strcmp(escolha2,"pedra") == 0) ){
                        caso[i] = 4;
                    }else if( (strcmp(escolha1,"ataque") == 0) && (strcmp(escolha2,"papel") == 0) ){
                        caso[i] = 4;
                    }else if( (strcmp(escolha1,"papel") == 0) && (strcmp(escolha2,"pedra") == 0) ){
                        caso[i] = 5;
                    }else if( (strcmp(escolha1,"pedra") == 0) && (strcmp(escolha2,"ataque") == 0) ){
                        caso[i] = 5;
                    }else if( (strcmp(escolha1,"papel") == 0) && (strcmp(escolha2,"ataque") == 0) ){
                        caso[i] = 5;
                    }else if( (strcmp(escolha1,"pedra") == 0) && (strcmp(escolha2,"papel") == 0) ){
                        caso[i] = 4;
                    }
    
                }
    
             for(i = 0; i < qtd; i++){
                if(caso[i] == 1){
                    printf("Sem ganhador\n");
                }else if(caso[i] == 2){
                    printf("Ambos venceram\n");
                }else if(caso[i] == 3){
                    printf("Aniquilicao mutua\n");
                }else if(caso[i] == 4){
                    printf("Jogador 1 venceu\n");
                }else if(caso[i] == 5){
                    printf("Jogador 2 venceu\n");
                }
            }
    
        }
    
      return 0;
    
    }
  • Jeremias Moreira Gomes replied 4 years ago

    Marco Antônio, seu método para leitura está lendo as entradas na posição errrada. Ele lê o valor de N, mas em seguida capta uma string vazia para o jogador um, o que deveria ser a jogada 1 para o jogador 2 e assim sucessivamente.

  • Marco Antônio de Almeida Fernandes replied 4 years ago

    Qual o problema com o código? testei todas saídas possíveis e as respostas batem com o toolkit, não vejo erro, porém recebo 40%

    #include<stdio.h>
    #include<stdlib.h>
    
    int decideGanhador(char jogada[2][10]){
        int jogador1;
        int jogador2;
        if(strcmp(jogada[0], "papel") == 0)
            jogador1 = 1;
        else if(strcmp(jogada[0], "pedra") == 0)
            jogador1 = 2;
        else
            jogador1=3;
        if(strcmp(jogada[1], "papel") == 0)
            jogador2 = 1;
        else if(strcmp(jogada[1], "pedra") == 0)
            jogador2 = 2;
        else
            jogador2 = 3;
    
        if(jogador1 == 3 && jogador2 != 3)
            return 1;
        else if(jogador2 == 3 && jogador1 != 3)
            return 2;
        else if(jogador2 == 3 && jogador1 == 3)
            return 5;
        else if(jogador1 ==1 && jogador2 == 1)
            return 3;
        else if(jogador1 == 2 && jogador2 == 2)
            return 4;
        else if(jogador1 == 1 && jogador2 == 2)
            return 2;
        else
            return 1;
    }
    
    void imprimeVencedor(int ganhador){
        if(ganhador == 1 || ganhador ==2)
            printf("Jogador %d venceu\n", ganhador);
        else if(ganhador == 3)
            printf("Ambos venceram\n");
        else if(ganhador == 4)
            printf("Sem ganhador\n");
        else
            printf("Aniquilacao mutua\n");
    
    }
    
    int main(){
    
        int i=0, j;
        int ganhador = 0;
        char jogada[2][10];
        int N;
        scanf("%d", &N);
    
        while(i<N){
            for(j=0;j<2;j++){
                fflush(stdin);
                gets(jogada[j]);
            }
            ganhador = decideGanhador(jogada);
            imprimeVencedor(ganhador);
            i++;
        }
        return 0;
    }
  • Matheus Patrikus replied 4 years ago

    Alguém pode me ajudar? estou recebendo 100% wrong answer mas testei e as saídas estavam (aparentemente) iguais ao do toolkit.

    #include<stdio.h>
    #include<string.h>
    int main(){
        int turnos,i;
        char movimentoum[6],movimentodois[6];
    
        scanf("%d",&turnos);
        for(i=0;i<turnos;i++){
            fflush(stdin);
            scanf("%s %s",movimentoum,movimentodois);
    
            if((strcmp(movimentoum,"papel")==0) && (strcmp(movimentodois,"papel")==0)){
                printf("Ambos venceram\n");
            }
            else{
                if((strcmp(movimentoum,"pedra")==0) && (strcmp(movimentodois,"pedra")==0)){
                    printf("Sem ganhador\n");
                }
                else{
                    if((strcmp(movimentoum,"ataque")==0) && (strcmp(movimentodois,"ataque")==0)){
                        printf("Aniquilacao mutua\n");
                    }
                    else{
                        if((strcmp(movimentoum,"ataque")==0) && ((strcmp(movimentodois,"papel")==0) || (strcmp(movimentodois,"pedra")==0))){
                            printf("Jogador 1 venceu\n");
                        }
                        else{
                            if(((strcmp(movimentoum,"papel")==0) || (strcmp(movimentoum,"pedra")==0)) && (strcmp(movimentodois,"ataque")==0)){
                                printf("Jogador 2 venceu\n");
                            }
                            else{
                                if((strcmp(movimentoum,"pedra")==0) && (strcmp(movimentodois,"papel")==0)){
                                    printf("Jogador 1 venceu\n");
                                }
                                else{
                                    if((strcmp(movimentodois,"pedra")==0) && (strcmp(movimentoum,"papel")==0)){
                                        printf("Jogador 2 venceu\n");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    
    }
  • Trindade replied 4 years ago

    Valeu Manhoso!!!! Accepted!!!!

  • 🧙The Install Wizard 🧙 replied 4 years ago

    Uma das saídas esta incorreta.

  • Trindade replied 4 years ago

    Qual o problema com o meu código?

    Accepted