Ir para conteúdo
Fórum Script Brasil
  • 0

Comparação


Grec

Pergunta

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 huh.gif ...

Se alguém tiver uma idéia de como pelo menos fazer ele devolver o maior e o menor agradeço....

falou... tongue.gif

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

//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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...