Escreva um programa que leia para um vetor um conjunto de números inteiros. Assuma que o conjunto de números lidos é menor que o tamanho do vetor. O programa deve inserir no vetor, em uma posição especificada pelo usuário, um numero lido
do teclado. Assuma que a posição especificada pelo usuário corresponde ao índice do vetor.

Passo 1

O enunciado pede um programa em C que leia um conjunto de números inteiros em um vetor, sem ultrapassar o tamanho máximo do vetor, e depois insira um novo número em uma posição qualquer informada pelo usuário, deslocando os elementos à direita para abrir espaço.

Passo 2

Precisamos definir um vetor com tamanho máximo (por exemplo, MAX_SIZE), ler quantos elementos já existem (n), ler esses n valores e armazená-los nas primeiras posições do vetor.
Depois, lemos o valor que queremos inserir (valor) e a posição de índice (pos) onde vamos inserir. Temos que verificar se pos está entre 0 e n, pois a inserção pode ser feita logo após o último elemento.

Passo 3

Para abrir espaço na posição pos, deslocamos todos os elementos de índice i = n−1 até i = pos, fazendo vetor[i+1] = vetor[i]. Isso deve ser feito em ordem decrescente de i, para não sobrescrever dados.
Após o deslocamento, atribuimos vetor[pos] = valor e incrementamos n para refletir o novo tamanho do vetor.

Passo 4

Por fim, podemos opcionalmente imprimir o vetor atualizado para confirmar que a inserção ocorreu corretamente.

Resposta

#include <stdio.h>
#define MAX_SIZE 100
int main() {
int vetor[MAX_SIZE];
int n, i, valor, pos;
// Lê quantos elementos já existem no vetor
printf("Digite a quantidade de elementos atuais (menor que %d): ", MAX_SIZE);
scanf("%d", &n);

// Lê os n valores iniciais
printf("Digite %d valores inteiros:\n", n);
for (i = 0; i < n; i++) {
    scanf("%d", &vetor[i]);
}

// Lê o valor a ser inserido e a posição de inserção
printf("Digite o valor a ser inserido: ");
scanf("%d", &valor);
printf("Digite a posicao de insercao (0 a %d): ", n);
scanf("%d", &pos);

// Verifica validade da posição
if (pos < 0 || pos > n) {
    printf("Posicao invalida.\n");
    return 1;
}

// Desloca elementos à direita para abrir espaço
for (i = n; i > pos; i--) {
    vetor[i] = vetor[i - 1];
}

// Insere o novo valor e atualiza o tamanho
vetor[pos] = valor;
n++;

// Imprime o vetor resultante
printf("Vetor apos insercao:\n");
for (i = 0; i < n; i++) {
    printf("%d ", vetor[i]);
}
printf("\n");

return 0;
}

Exercícios relacionados