Ordenando valores
Publicado por Edson Jr 13/04/2009
[ Hits: 7.817 ]
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 * */
Nenhum comentário foi encontrado.
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
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Vou voltar moderar conteúdos de Dicas e Artigos (3)
OpenVPN no MACBOOK conecta mas não pinga pastas de rede compartilhada ... (1)
Melhorando a precisão de valores flutuantes em python[AJUDA] (8)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta