Ordenando valores

Publicado por Edson Jr 13/04/2009

[ Hits: 7.801 ]

Download order.rar




Este "pequeno" programa foi escrito para ajudar uma pessoa que pediu ajuda numa comunidade de C/C++ no orkut, mas como o número máximo de caracteres disponíveis para escrever o programa era insuficiente, resolvi postar ele aqui.

  



Esconder código-fonte

/* Este programa demonstra o uso de while e mais alguns tópicos de C++
 *Apesar de ser escrito em C++, ele pode ser "aplicado" em C. */

#include <iostream> //troque por stdio.h
using namespace std;  //não coloque essa linha em código C

void using_while_five(); //este protótip de função é para o primeiro exercício
void before_number(); //este protótipo de função é para o segundo exercício
void ten_mumber(); //este protótipo de função é para o terceior exercício
void zero_or_one(); //este protótipo de função é para o último exercício

/* Apesar de estar usando já o conceito de funções, você pode fazer executáveis
 *idependentes para cada uma das funções. Ao decorrer do código vou mostrar como */

int main()
{
    int opt; //esta variável será usada para selecionar qual função usar

    cout <<"Escolha uma das opcoes abaixo: \n";
    cout <<" [1] - Para o primeiro exercicio\n";
    cout <<" [2] - Para o segundo exercicio\n";
    cout <<" [3] - Para o terceiro exercicio\n";
    cout <<" [4] - Para o ultimo exercicio\n";
    cout <<"Escolha: "; cin >> opt;

       //troque cout por printf e cin por scanf
    switch(opt)
    {
        case 1: using_while_five(); break;
        case 2: before_number(); break;
        case 3: ten_mumber(); break;
        case 4: zero_or_one(); break;
        
    }

    /* Quando você selecionar uma das opções, será enviado para dentro da função
     *correspondente. Se por acaso escolher uma opção inexistente o programa
     *termina. Depois que todas as instruções dentro da função forem executados
     *ela retorna para a chamadora (main()). Com o uso de break e por não haver
     *nenhuma outra instrução abaixo do bloco de switch (tirando o return), o
     *programa encerra */

    return 0; //se quiser dar uma pequena pausa na saída do programa, escreva system("pause");
    
}



//definição das funções
void using_while_five()
{
    int num[5],x; 
    /* isto é um vetor. Um vetor é um conjunto de variáveis que compartilham o mesmo
     *identificador (nome). Importante: os vetores começam a contagem de zero */
    int cont = 0; //esté é o contador usado para controlar o laço do while.
                  //como o vetor começa do zero, será necessário colocar o contador
                  //inicializado como zero.

    while(cont < 5) //ele vai de zero a 4 na verdade
    {
        cout <<"Entre com o valor No " << cont+1 <<": "; cin >> num[cont]; cont++;  }

        /* Um vetor possui posições e essa são acessadas por um índice que é
         *justamente a variável de incremento.  */


    //agora vamos organizar o vetor, colocando os valores em ordem crescente.

    for(int i = 0;i < 5;i++)  // por via das dúvidas, inicializer i no começo do bloco
        for(int j = i+1;j < 5;j++)
            if(num[i]>num[j])
            {
                x = num[j];
                num[j] = num[i];
                num[i] = x;

            }

        /* O código acima serve para ordenar o vetor e será usado
         na função  3 - a dos 10 números*/

        cout <<"O maior valor lido e: " << num[4] <<"\n";
            
        

}

void before_number()
{
    unsigned num; //somente valores positivos - se você digitar negativo "dá erro"
    cout <<"Entre com um valor: "; cin >> num;

    /* vamos usar o for para controlar o laço
     * Você vai entrar com um valor e o laço vai interagir até um valor antes
     * daquele que vc digitou  */

    for(int i = 0; i < num;i++) //se queiser coloque o i como 1
        cout << i <<"\n";



}


void ten_mumber()
{
     int num[10],x;
   
    int cont = 0; 

    while(cont < 10) //ele vai de zero a 9 na verdade
    {
        cout <<"Entre com o valor No " << cont+1 <<": "; cin >> num[cont]; cont++;  }

     
    //agora vamos organizar o vetor, colocando os valores em ordem crescente.

    for(int i = 0;i < 10;i++)  // por via das dúvidas, inicialize i no começo do bloco
        for(int j = i+1;j < 10;j++) // por via das dúvidas, inicialize  j no começo do bloco
            if(num[i]>num[j])
            {
                x = num[j];
                num[j] = num[i];
                num[i] = x;

            }


        cout <<"O menor valor lido e: " << num[0] <<"\n";
        cout <<"O maior valor lido e: " << num[9] <<"\n";



}


void zero_or_one()
{
    int number; //numero que será digitado

    for(;;) //isto é um laço infinito, que será parado caso 0 ou 1 seja inserido
    {
        cout <<"Entre com um valor: "; cin >> number;
        if(number == 1 || number == 0) break; //isso faz com que o laço pare
        else{

            if(!(number % 5)) cout <<"Numero divisivel por 5 \n";
            else if(!(number % 7)) cout <<"Numero divisivel por 7\n";
            else if(!(number % 9)) cout <<"Numero divisivel por 9\n";
            else cout <<"\n"; //pula uma linha se todas as anteriores forem falsas
        }

    }

    /* O motivo de estar invetendo a lógica das expressões acima com o operador !
     *é que se ela for verdadeira o if não é executado. A mesma expressão pode ser
     *escrita dessa maneira: if(number % 5 == 0)   e as demais também */
}


/* Veja que usei funções para desempenhar cada um dos exercícos, mas caso queira
 *fazer cada exercíco com seu respectivo executável, basta colocar o código que
 *está dentro de cada função dentro da main(), deixando somente a instrução return 0;
 *
 * Para C:
 *          troque cout por printf;
 *          troque cin >> por scanf;
 *          não coloque a linha using namespace std;
 *          troque a iostream por stdio.h
 *
 */

Scripts recomendados

Verifica digito do rg de SP

Comando goto

C++ CGI

Pesquisa Binária

Validador de Cartão de Credito


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts