Parte 1: Elabore uma função que recebe um vetor V de elementos inteiros de
dimensão N(N <= 50) e altere esse vetor da seguinte maneira:
  • os elementos iguais a zero são eliminados
  • os elementos negativos são substituídos pelo seu correspondente positivo.
    Parte 2: Escreva um programa que, utilizando a função anterior, lê diversos vetores fornecidos pelo usuário e retorna os vetores modificados. Criar um critério de parada, para quando o usuário não quiser continuar.

Passo 1

Primeiro, vamos resumir o que o exercício pede, indicar o conteúdo envolvido e o que precisamos para resolver.

Passo 2

Precisamos criar uma função que processe um vetor de inteiros de tamanho N (N ≤ 50) de modo que todos os zeros sejam eliminados e todos os negativos virem positivos. Para isso, usaremos operações de iteração e manipulação de arrays em C.

Passo 3

Na implementação da função processVector, vamos varrer o vetor original, copiar apenas os valores não nulos para o início de um mesmo array e, quando encontrarmos negativos, usar a função abs() para torná-los positivos. Manteremos um índice de gravação que também definirá o novo tamanho do vetor.

Passo 4

No programa principal (main), montaremos um laço que leia o tamanho e os elementos do vetor, chame processVector, mostre o vetor resultante e, em seguida, pergunte ao usuário se ele deseja continuar ou parar. O critério de parada será a resposta do usuário (por exemplo, ‘N’ ou ‘n’).

Resposta

#include <stdio.h>
#include <stdlib.h>
#define MAX_N 50
// Função que elimina zeros e transforma negativos em positivos
void processVector(int V[], int *N) {
int i, j = 0;
for (i = 0; i < *N; i++) {
if (V[i] != 0) {
V[j++] = abs(V[i]);
}
}
*N = j; // Atualiza o tamanho para o número de elementos válidos
}
int main() {
int V[MAX_N];
int N;
char opc;
do {
    // Leitura do tamanho do vetor
    printf("Digite o numero de elementos do vetor (max %d): ", MAX_N);
    scanf("%d", &N);
    if (N < 0 || N > MAX_N) {
        printf("Tamanho invalido. Tente novamente.\n");
        continue;
    }

    // Leitura dos elementos
    printf("Digite %d elementos (podem ser negativos, zeros ou positivos):\n", N);
    for (int i = 0; i < N; i++) {
        scanf("%d", &V[i]);
    }

    // Chama a função que processa o vetor
    processVector(V, &N);

    // Exibe o vetor modificado
    printf("Vetor modificado (sem zeros, negativos viraram positivos):\n");
    for (int i = 0; i < N; i++) {
        printf("%d ", V[i]);
    }
    printf("\n");

    // Pergunta se o usuário quer continuar
    printf("Deseja processar outro vetor? (S/N): ");
    scanf(" %c", &opc);

} while (opc == 'S' || opc == 's');

printf("Programa encerrado.\n");
return 0;
}

Exercícios relacionados