Ordenando valores
Publicado por Edson Jr 13/04/2009
[ Hits: 7.827 ]
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.
/* 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 * */
Contador de palavras, linhas e caracteres de um arquivo texto
Tabuada de um determinado número
funcsoma2.c - Soma 2 pontos flutuantes
Parte 4 - Sessão de estudo sobre VETORES
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Linux Mint nao reconhece segundo monitor. (1)
Copiar uma pasta 100% fiel a original? (6)