Grec Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 Tava fazendo um programa que você dá a quantidade de números a ser comparados e os números... E ele os devolve em ordem crescente....Aí tentei bastante mas toda hr caia em um erro diferente ...Se alguém tiver uma idéia de como pelo menos fazer ele devolver o maior e o menor agradeço....falou... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 == Douplus == Postado Maio 18, 2004 Denunciar Share Postado Maio 18, 2004 //Bom, eu criei um programa para tentar explicar... #include <iostream> #include <cstdlib> using namespace std; void organizar(int *, const int); // Protótipo de função. int main() // Função principal. { int qnt = 0; /* Espaco de memoria reservado para armazenar a quantidade de números. */ cout<<"Digite a quantidade de numeros que deseja: "; cin>>qnt; // Armazena a quantidade de números em qnt. cout<<"\n"<<endl; int nums[qnt]; // Inicializa uma array com a quantidade de números desejada. /* PEGA OS NUMEROS. */ for (int i = 0; i < qnt; i++) { cout<<"Digite um dos numeros :"; cin>>nums[i]; } cout<<"\n\n Números em ordem crescente :"<<endl; organizar(nums, qnt); // Chama a função de organizar. /* MOSTRA O ARRAY. */ for (int i = 0; i < qnt; i++) cout<<" "<<nums[i]; /* TERMINA O PROGRAMA. */ cout<<"\n"<<endl; system("PAUSE"); return 0; } // FUNCAO ORGANIZAR. void organizar(int *array, const int tam) //Chamada por referência. { long int aux = 0; // Variável para ajudar na organização. /* O R G A N I Z A O A R R A Y. */ for (int pass = 0; pass < (tam - 1); pass++) for (int i = 0; i < (tam - 1); i++) { if (array[i] > (array[i + 1])) { // Se o número for maior que o seguinte... aux = array[i]; // aux = número... array[i] = (array[i + 1]); // Posição do número = numero seguinte... (array[i + 1]) = aux; // Posição do número seguinte = aux. } } } /* FIM DO CODIGO */ Agora tentarei explicar melhor o programa... Ele começa com uma variável: int qnt = 0; /* Espaco de memoria reservado para armazenar a quantidade de números. */ que serve para posteriormente armazenar a quantidade de números desejada. Depois o programa pede ao usuário para que introduza a quantidade de números e armazena na variável inteira: qnt. O programa agora inicia um array com a quantidade de números introduzida: int nums[qnt]; // Inicializa uma array com a quantidade de números desejada. Com um laço de repetição, o programa vai armazenando os numeros para organizar, um por um: int nums[qnt]; // Inicializa uma array com a quantidade de números desejada. /* PEGA OS NUMEROS. */ for (int i = 0; i < qnt; i++) { cout<<"Digite um dos numeros :"; cin>>nums[i]; } Em seguida é chamada a função "organizar(int *, const int)": cout<<"\n\n Números em ordem crescente :"<<endl; organizar(nums, qnt); // Chama a função de organizar. que organiza o array da seguinte forma: // FUNCAO ORGANIZAR. void organizar(int *array, const int tam) //Chamada por referência. { long int aux = 0; // Variável para ajudar na organização. /* O R G A N I Z A O A R R A Y. */ for (int pass = 0; pass < (tam - 1); pass++) for (int i = 0; i < (tam - 1); i++) { if (array[i] > (array[i + 1])) { // Se o número for maior que o seguinte... aux = array[i]; // aux = número... array[i] = (array[i + 1]); // Posição do número = numero seguinte... (array[i + 1]) = aux; // Posição do número seguinte = aux. } } } Por ser uma chamada de função por referência, ao modificarmos "array[]", automáicamente modificamos "nums[]". Agora, com dois laços de repetição, o programa vai verificando se na posição atual de "array" (nums) tiver um número maior do que o número na posição seguinte: a váriável aux = "posição atual" "posição atual" = "posição seguinte" "posição seguinte" = aux Na função "main()", já é hora de mostrar o array em ordem crescente: /* MOSTRA O ARRAY. */ for (int i = 0; i < qnt; i++) cout<<" "<<nums[i]; Agora são mostrados todos os números de "nums[]", o elemento do array que será mostrado está indicado por "i", que vai sendo incrementado cada vez que as instruções forem repetidas. O programa termina com: /* TERMINA O PROGRAMA. */ cout<<"\n"<<endl; system("PAUSE"); return 0; } "cout<<"\n"<<endl;" posiciona o cursor duas linhas para baixo; "system("PAUSE");" para o programa até o usuário pressionar qualquer tecla (com algumas exeções), isto serve para a pessoa conseguir ler o que apareceu em sua tela; "return 0;" retorna o valor '0'; "}" termina "main()". Por favor me corrijam se fiz ou escrevi alguma besteira. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Grec
Tava fazendo um programa que você dá a quantidade de números a ser comparados e os números... E ele os devolve em ordem crescente....
Aí tentei bastante mas toda hr caia em um erro diferente ...
Se alguém tiver uma idéia de como pelo menos fazer ele devolver o maior e o menor agradeço....
falou...
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.