// Solução do exercício proposto Tutorial 14 4-d
#include <cstdlib>
#include <iostream>
using namespace std;
void imprimeVetor(float v[], int n);
void leVetor(float v[], int n);
int remove_dup(float v[], int n);
void ordenaVetor(float v[], int n);
int MAX = 10;
int main(int argc, char *argv[])
{
int dup;
float vet[MAX];
leVetor(vet, MAX);
ordenaVetor(vet, MAX);
imprimeVetor(vet, MAX);
if(!(dup=remove_dup(vet, MAX)))
printf("Nao ha valores duplicados...\n\n");
else
{
printf("Encontrados %d duplicatas. Duplicatas removidas...\n", dup);
imprimeVetor(vet, MAX);
}
system("PAUSE");
return EXIT_SUCCESS;
}
void leVetor(float v[], int n) {
int i;
printf("Lendo %d valores...\n", n);
for(i=0;i<n;i++) {
printf("vetor[%d]= ", i+1);
scanf("%f", &v[i]);
//putchar('\n');
}
}
void imprimeVetor(float v[], int n) {
int i;
printf("Imprimindo %d valores...\n", n);
for(i=0;i<n;i++)
printf("%2d: %0.3f ", i+1, v[i]);
putchar('\n');
}
int remove_dup(float v[], int n) {
float temp;
int i;
int dup = 0;
int tam;
float v_temp[n]; // vetor temporario
tam = n;
temp = v[0]; // guarda ultimo valor lido
v_temp[0] = temp; // guarda valor nao repetido
// guarda somente valores nao repetidos em v_temp
for(i=1;i<n;i++) {
if(v[i]!=temp) { // valor atual é diferente do guardado
v_temp[i]=v[i]; // transfere valor para v_temp
temp=v[i]; // atualiza temp
}
else
{
temp=v[i]; // atualiza temp
tam--; // v_temp ficará menor
dup++; // quantidade de duplicatas aumenta
}
}
// atualiza vetor sem as repetições
MAX = tam;
for(i=0;i<n;i++)
v[i]=v_temp[i];
return dup;
}
void ordenaVetor(float v[], int n) {
float temp;
int i;
int j;
printf("Ordenando vetor...\n", n);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(v[i]>v[j]) {
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
printf("Vetor ordenado...\n", n);
}
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.