Ordenando valores

Publicado por Edson Jr 13/04/2009

[ Hits: 7.816 ]

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

Labirinto de Teseu

Números randômicos

Uma pequena "CALCULADORA" (apenas SOMA).

Soma de números através de strings

Verificador de senhas: Comparando palavras


  

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