Ordenando valores
Publicado por Edson Jr 13/04/2009
[ Hits: 8.047 ]
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
*
*/
A máquina nao perdoa (jogo da velha em c -arquivo correto, agora)
Algoritmo de ordenação: Inserction Sort
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Assinador JNLP do Site Portal da Nota Fiscal Eletrônica (4)
Warcraft II Remastered no Linux? (3)









