TOPIC

5% de Wrong Answer

Daniel asked 5 months ago

Eu criei uma matriz de strings N linhas com M colunas.

O programa está com o problema de simplesmente pular a primeira linha de entrada. ALguém sabe o que pode estar causando isso?

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

int main(void){
    int n, i, j, k, cont;

    scanf("%d", &n);

    char linhas[n][1001], aux[10001];
    for(i = 0; i < n; i++){
        fgets(linhas[i], 1000, stdin);

        //Deslocando três posições para a direita
        for(k = 0; k < strlen(linhas[i]); k++){
            if((linhas[i][k] >= 65 && linhas[i][k] <= 90) || (linhas[i][k] >= 97 && linhas[i][k] <= 122))
                linhas[i][k] = linhas[i][k] + 3;
        }

        //Criando uma cópia auxiliar da string
        strcpy(aux, linhas[i]);
        cont = strlen(linhas[i]) - 1;
        for(k = 0; k < strlen(linhas[i]); k++){
            linhas[i][k] = aux[cont];
            cont--;
        }
        //Deslocando uma posição para a esquerda
        for(k = strlen(linhas[i]) / 2; k < strlen(linhas[i]); k++)
            linhas[i][k] = linhas[i][k] - 1;
    }

    for(i = 0; i < n; i++)
        printf("%s\n", linhas[i]);

    return 0;
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • Ariel Narciso replied 4 months ago

    Você tá usando o método fgets() pra ler a string e certamente já percebeu que ele armazena '\n' no final da string CASO HAJA na entrada. Veja essa linha:

    cont = strlen(linhas[i]) - 1;

    Imagino que esteja subtraindo 1 pensando em descartar esse '\n'. Mas acontece que a ultima linha do arquivo de entrada pode não estar sendo finalizada com '\n'. Nesse caso vc não está pegando o comprimento da string corretamente.

    Já tive esse mesmo problema em outro exercício.

  • Daniel replied 3 months ago

    Tem razão, Ariel! Muito obrigado.

    Acabei modificando o modo de leitura da string e agora obtive ACC.

  • Daniel replied 5 months ago

    Consegui resover o problema de não ler a primeira entrada aplicando a seguinte substituição: Troquei de:

    scanf("%d", &n);

    Para:

    scanf("%d ", &n);

    O código é o mesmo acima, apenas com essa mudança citada. Continuo recebendo 5% de WA.