Ordenando valores
Publicado por Edson Jr 13/04/2009
[ Hits: 8.083 ]
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
*
*/
Simulador de cronometro com 2 digitos - otimizado
Nenhum comentário foi encontrado.
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Trazendo de volta o Serviços em Segundo Plano no Plasma6
É normal não gostar de KDE? (21)
Servidor para arquivos e banco de dados (4)
780 mil usuários do Janelas baIxaram Linux em um mês (4)
Atualizei meu ubuntu e desliguei e ele não inicia corretamente (12)









