Ir ao conteúdo
  • Cadastre-se
Eduardo_Braz

C Inverte Vetor e encontrar o Maior e Melhor em C

Posts recomendados

Faça um programa que receba um vetor V de N inteiros e construa um vetor W com os mesmos elementos de V, porém invertidos, mostre os vetores V e W e o maior elemento de V e o menor elemento de W.
 

Entrada:

A entrada contém apenas um caso de teste com 2 linhas. Na primeira linha há um inteiro N, 1 < N ≤1000, representando o tamanho do vetor V. Na segunda linha há N valores inteiros separados por um espaço em branco cada, que são os valores do vetor V.
Saída:

O programa deve gerar 4 linhas de saída. A primeira linha deve haver N inteiros separados por um espaço em branco cada, representando os elementos do vetor V. Atenção, após o último elemento de V não deve haver um espaço em branco. A segunda linha deve haver N inteiros separados por um espaço em branco cada, representando os elementos do vetor W. Atenção, após o último elemento de V não deve haver um espaço em branco. A terceira linha deve haver apenas um inteiro, representando o maior elemento de V. A quarta linha deve haver apenas um inteiro, representando o menor elemento de W. Após imprimir a quarta linha da saída, quebre uma linha.

 

Exemplo:

Entrada:

5
7 8 4 9 2

Saída

7 8 4 9 2
2 9 4 8 7
9

2

Entrada

8
235 6 23 5 78 123 89 4

Saída

235 6 23 5 78 123 89 4
4 89 123 78 5 23 6 235
235
4

Entrada

10
1 2 3 4 5 6 7 8 9 0

Saída

1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1
9

0

 

Código <- Não está funcionando o Maior e nem o Menor

 

 

#include <stdio.h>

int main(){
    int n, vetor[1000], maior, menor, i, j;

    scanf("%d", &n);

    for (i = 0; i < n; i++){
        scanf("%d", &vetor);
    }
    for(i=0; i<n; i++){
        printf("%d ",vetor);
    }
    printf("\n");
    for (j = n-1; j >= 0; j--){
        printf("%d ", vetor[j]);
    }
    printf("\n");
    if(i==0){
        maior=vetor;
        menor=vetor;
    }
    if(vetor>maior){
        maior=vetor;
    }
    else if(vetor<menor){
        menor=vetor;
    }
    printf("%d\n",maior);
    printf("%d\n",menor);
    
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite.

 

Relate qual foi o raciocínio usado para determinar maior e menor elemento? Isso ficou em código pouco claro.

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mauro Britivaldo Eu usei o primeiro for que eu usei anteriormente para pegar os valores e fiz os testes para ver qual era o maior número inserido quando outro fosse maior eu trocava o anterior mais não funcionou, fiz isso para o Maior e o Menor.  

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, Eduardo_Braz disse:

@Mauro Britivaldo Eu usei o primeiro for que eu usei anteriormente para pegar os valores e fiz os testes para ver qual era o maior número inserido quando outro fosse maior eu trocava o anterior mais não funcionou, fiz isso para o Maior e o Menor.  

Sinapses correta!

 

Revise o código.

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, Mauro Britivaldo disse:

Sinapses correta!

 

Revise o código.

Okay

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Eduardo_Braz Seu código tem uma série de erros:

1- Suas variáveis precisam ser inicializadas, caso contrário elas conterão lixo de memória.

   int n = 0, vetor[1000], maior = 0, menor = 0, i = 0, j = 0;

    // Inicializa todas as posições do vetor
    for (i = 0; i < 1000; ++i) {
        vetor[i] = 0;
    }

2- Não precisa economizar linhas, elas são de graça. Fazer todas as declarações em uma única linha, torna massante o trabalho de ler seu código.

int n = 0;
int vetor[1000];
int maior = 0;
int menor = 0;
int i = 0;
int j = 0;

3- Recomendo inicializar as variáveis maior e menor usando os limites do tipo primitivo. Assim é quase certo que o valor será sobrescrito quando for a hora. Para isso é necessário importar a biblioteca limits.h.

// Inclua a biblioteca
#include <limits.h>

// Depois inicialize as variáveis
int maior = INT_MIN;
int menor = INT_MAX;

4- Use nomes mais coerentes nas variáveis.

int tamanho = 0;    // Antigo n

5- Diga ao usuário o que ele tem fazer.

printf("Digite o tamanho do vetor: ");
scanf(" %d", &tamanho);

6- Para atribuir e acessar um valor do vetor, é necessário informar a posição desejada.

for (i = 0; i < tamanho; i++) {
    printf("Digite o valor %i: ", (i + 1));
    scanf(" %d", &vetor[i]);
}

7- A verificação para determinar o maior e menor pode ser feita usando if aninhado. e deve ser feita dentro de um loop.

for (i = 0; i < tamanho; ++i) {
    if (i == 0) {
        maior = vetor[i];
        menor = vetor[i];
    } else if (vetor[i] > maior) {
        maior = vetor[i];
    } else if (vetor[i] < menor) {
        menor = vetor[i];
    }
}

8- A variável j é dispensável.

// Antes usava o j
for (i = tamanho - 1; i >= 0; i--) {
    printf("%d ", vetor[i]);
}

9- Garanta que o tamanho esteja em uma faixa válida.

do {
    printf("Digite o tamanho do vetor: ");
    scanf(" %d", &tamanho);
} while (tamanho < 2 || tamanho > 1000);

 

  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
17 minutos atrás, Eduardo_Braz disse:

@AdrianoSiqueira Muito obrigado funcionou perfeitamente.

Muito Obrigado 

Você nunca vai aprender se continuar pegando respostas dos outros, certamente o senso comum manda aprender com seus erro se dando a oportunidade de revisa-los. Contudo isso é um problema seu.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites
8 horas atrás, Eduardo_Braz disse:

@Mauro Britivaldo Eu desmontei o código e refiz 

Seu raciocínio já resolveu parte do problema só não tinha conseguido codificá-lo. Todos os elementos essências para resposta foram apresentados e dominados, ou seja, você tem o conhecimento da linguagem pra resolver só falta organiza-los. 

 

Certo já que desmontou e refez então acredito ter feito as devidas observações. Ok!

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Mauro Britivaldo Eu agradeço demais a sua ajuda me fez perceber que eu tenho que focar primeiro o meu raciocínio fazer o programa em português para mondar o esqueleto do código aí sim começar a desenvolver o mesmo.

 

Muito obrigado mesmo vós vem me ensinando muito esse código eu mandei com as suas observações nos meus posts anteriores e eu agradeço demais a vossa ajuda. Já fazia 10 anos que eu não mexia com essa linguagem de programação eu usava mais o Python pela a sua facilidade e o seu grande avanço e também por causa que ela é uma das principais linguagem mais usada no mercado atualmente, exemplo o site do Instagram é feito por ela

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...