Usuários online

sexta-feira, 21 de outubro de 2011

Solução do exercício proposto Tutorial Dev-C++ 014 4-d


// 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.

LinkWithin

Related Posts Plugin for WordPress, Blogger...

NOSSO OBJETIVO

OBJETIVO

Este blog será usado para divulgação de minhas ideias, notícias sobre tecnologia, disponibilização de links para download de materiais diversos (incluindo materiais didáticos -- que poderão ser usados em minhas aulas e/ou cursos). Gostaria de DEIXAR BEM CLARO que quaisquer materiais disponibilizados através deste blog são, tão somente, para acompanhamento de aulas e/ou cursos, e não constituem de modo algum, aulas na modalidade "ensino à distância" (EAD). Alunos têm total acesso aos materiais disponíveis, mas somente como tutoriais passo a passo. Apostilas disponibilizadas através deste blog não são materiais obrigatórios em disciplinas cursadas ou cursos ministrados.

RESPONSABILIDADE

O autor deste blog não é responsável pelo mau uso, intencional ou não, de qualquer código de programa disponibilizado aqui. Os códigos de programas disponíveis neste blog para download é e serão sempre, e tão somente, para uso didático durante o aprendizado. Seja bem-vindo.