Ir para conteúdo

POWERED BY:

Arquivado

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

billywillis

Imprimir valor inverso em um vetor...

Recommended Posts

Escreva um programa em C para ler um vetor X de 10 elementos inteiros. Logo após copie os
elementos do vetor X para um vetor Y fazendo com que o 1o. elemento de X seja copiado para o 10o. de
Y, o 2o. de X para o 9o. de Y e assim sucessivamente. Após o término da cópia, imprimir o vetor Y.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main()
{
    int x[10], y[10], i = 0;
    for(i = 0; i < 10; i++){
    scanf("%d", &x[i]);
    }
    for(i = 0; i < 5; i++){
   
        y[9 - i] = x[i];
        printf("Os valores do vetor sao %d\n", y[i]);
            }


    return(0);
}

 

E quando vai imprimir ele imprime valores enormes e negativos... o que pode ser isso? Achei que era erro de sintaxe mas não encontrei nenhum..

Compartilhar este post


Link para o post
Compartilhar em outros sites

A causa é comportamento indefinido. Você está acessando um objeto não-inicializado, o que, na maioria das vezes, gera undefined behavior. Sugiro que faça testes de mesa para descobrir quais partes do vetor y acessou de forma que este comportamento fosse gerado.

 

ps: digo que isto gera undefined behavior "na maioria das vezes" pois, a partir do 3o T.C. da C99 (n1256), lvalues de tipo de caracter (char, signed char ou unsigned char) nunca formam trap representations. Mas você não precisa se preocupar com isto agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>

/*

#include <stdlib.h>

#include <string.h>

#include <math.h>

*/

 

int main()

{

int x[10], y[10], i = 0;

 

for(i = 0; i < 10; i++)

scanf("%d", &x);

 

for(i = 0; i < 10; i++) // Por que não 10?

{

y = x[9 - i]; // Por que não assim?

printf("Os valores do vetor sao %d\n", y);

}

 

return 0;

}

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.