TEMA

Wrong Answer 100%, mas o código está funcionando

Gabriel Coelho dos Santos preguntado 1 year ago

Olá! Gostaria de saber se alguém pode me ajudar, eu queria saber porque esse código está dando resposta errada, mesmo com o que aparenta ser a saída correta.

#include <stdio.h>
#include <string.h>

int main(){
  int casos = 0, i = 0, j = 0, tamA = 0, tamB = 0;
  char strA[51], strB[51], strFinal[101];

  scanf("%d", &casos);

  for(i = 0; i < casos; i++){
    scanf("%*c");
    scanf("%s", strA);
    scanf("%*c");
    scanf("%s", strB);

    tamA = strlen(strA);
    tamB = strlen(strB);

    if(tamA == tamB){
      for(j = 0; j < tamA * 2; j += 2){
        strFinal[j] = strA[j/2];
        strFinal[j+1] = strB[j/2];
      }

      strFinal[j+1] = '\0';
      printf("%s\n", strFinal);

    }else if(tamA < tamB){
      for(j = 0; j < tamA * 2; j+=2){
        strFinal[j] = strA[j/2];
        strFinal[j+1] = strB[j/2];
      }

      for(j; j < (tamA * 2) + tamB; j++){
        strFinal[j] = strB[j - (tamA)];
      }

      strFinal[j+1] = '\0';
      printf("%s\n", strFinal);
    }else{
      for(j = 0; j < tamB * 2; j+=2){
        strFinal[j] = strA[j/2];
        strFinal[j+1] = strB[j/2];
      }

      for(j; j < (tamB * 2) + tamA; j++){
        strFinal[j] = strA[j - tamB];
      }

      strFinal[j+1] = '\0';
      printf("%s\n", strFinal);
    }
  }

  return 0;
}

Recuerda no enviar soluciones. Tu mensaje puede ser revisado por nuestros moderadores.

  • feodorv respondido 1 year ago

      char strA[51], strB[51], strFinal[101];

    Do not be so greedy:

      char strA[64], strB[64], strFinal[128];

    Next.

    scanf("%s", strA);
    scanf("%s", strB);

    The input lines can contains the blanks. And %s format of scanf reads the input string from one blank till the next one. Hence 100% of WA.