TOPIC

40 % de erro no codigo

ylima11 asked 5 years ago


int main() {
 int X;
 int soma;
 int i=0;
 int an;
 int resto;
 int x[i];
 int a;
    while(1){
        scanf("%d",&X);
        if (X==0)
        break;
        resto = X % 2;
        if (resto==0){
            an = X +(4)*2;
            soma = (an + X)*2.5f;
            x[i] = soma;
            i=i+1;
            //printf("\n%d\n", soma);
         }else{
            an = X+1+(4)*2;
            soma = (an + X+1)*2.5f;
            //printf("\n%d\n", soma);
            x[i] = soma;
            i=i+1;
         }

     }
     for(a=0; a<i;a++){
        printf("\n%d", x[a]);
     }
}

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

  • tmjunior replied 3 years ago

    Vi que você tinha implementado antes o printf dentro dos if. E estava certo o seu código, sugiro voltar para a versão dos prints dentro do if else e a única alteração que deve fazer é remover o primeiro "\n" do printf e deixar só no final. Recebi AC com o seu código.

    Sempre utilizo abordagens assim, reduzir equações, simplificar, usar fórmulas, são bem legais para treinar o conhecimento de matemáticas, em PA, PG, e outras sequências, etc.

    Quanto a duvida do A284, o C/C++ é uma linguagem que não se importa com tipos. Tanto que você pode facilmente atribuir um double a um int, sair multiplicando tudo, e ao atriguir em um inteiro por exemplo só a parte inteira é considerada. O C permite muitas coisas, porém tem várias regras na operação entre tipos diferentes. Isso funciona para char também se eu declarar um char zero = 48 e imprimir esse char ele vai imprimir o número '0'. Com bool é a mesma coisa, true é 1 e false é 0, porém, no while, qualquer coisa que seja diferente de 0 será aceita, e quando for 0 o laço é parado, seja para int, double, char, ponteiro, estrutura, etc.

    MOD
  • PhilipiII replied 3 years ago

    Não garanto todos os erros mas no printif o \n é depois do %d, não sei se funciona para você mas eu nunca vi um while (1), tente colocar while(true), na linha 22 pode dar erro por você multiplicar inteiro por float, e além disso eu vi casos que a sua verificação se os números são pares não deu certo pois desse modo não aceita números ímpares negativos. Não entendi muito bem suas contas, tente fazer um laço for que vá somando numero por número, e me parece que você está printando vários dígitos por causa do for. Espero ter ajudado.