Compactar vetor em C
Tou precisando de ajuda na seguinte questão:
- Leia um vetor de 50 posições e o compacte, ou seja, elimine as posições com valor zero avançando uma posição com os valores subsequentes do vetor. Dessa forma, todos os "zeros" devem ficar para o final do vetor.
Eu até tentei fazer o programa, mas nao consigo rodá-lo da forma como a questão pede, talvez por falta de compreensão lógica, deem uma olhada...
#include <stdio.h>
const int T = 5;
int main () {
int vet[T], i, j, k, aux;
printf ("Preencha o vetor:\n\n"); // Entrada de dados.
for (i = 0; i < T; i++) {
printf ("\n\tInsira o valor da posicao [%d]: ", i + 1);
scanf ("%d", &vet[i]);
}
system ("cls");
printf ("Vetor inicial:\n\n"); // Saída de dados.
for (i = 0; i < T; i++)
printf ("%d ", vet[i]);
for (i = 0; i < T; i++) { // Operações.
printf ("%d ", vet[i]);
if (vet[i] == 0) {
j = i;
do {
if (j < T - 1)
k = j + 1;
aux = vet[j];
vet[j] = vet[k];
vet[k] = aux;
j++;
k++;
} while (vet[j] < T - 1);
}
}
printf ("\n\nVetor resultante:\n\n"); // Saída de dados.
for (i = 0; i < T; i++)
printf ("%d ", vet[i]);
return 0;
}Discussão (0)
Carregando comentários...