Ir ao conteúdo
  • Cadastre-se

C++ Código que organiza números de forma crescente


Posts recomendados

Bom, eu peguei a base deste codigo em um vidoe do youtube mas dei umas adaptadas, só n estou conseguindo fazer ele funcionar, gostaria de pegar no vetor "num[x]" a posição "i" mas ele entende que "num[i]" é um outro vetor que não foi declarado, gostaria de saber como resolvo isso

 

#include <iostream>
#include <cstdlib>

using namespace std;
int main (void)

{

	int x;
    int num[x], aux, i, j;

    setlocale(LC_ALL, "portuguese");


	cout<<"quantos números voce deseja inserir?\n";
	cin>>x;
	cout<<"escreva os números\n";
	for(i=0; i<x; i++){
		cin>>num[i];
  		cout<<endl;

	}

	for(i=0; i<x; i++){
		for(j=i+1; j<x; j++){
			if(num[1] > num[j])
			{aux = num[i];
			 num[i] = num[j];
			 num[j] = aux;
			}

		}

	}

cout<< endl;
for(i=0; i<x; i++){
	cout<<num[i] <<endl;

}

    system("pause");
    return (0);

}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Pablo Correa_06    essa variável  x foi criada mas não recebeu nenhum valor , assim o compilador finaliza a execução do programa , para não danificar nenhuma memória do pc ,  e um outro erro é que você colocou o número "1" no vetor dentro do loop for de ordenação e seria a letra "i" ,  assim :

 

#include <iostream>
#include <cstdlib>
#define cls system("cls||clear");
using namespace std;
int main (void)
{
  int x;
  cout << "quantos números voce deseja inserir ?";
  cin  >> x; /// pegar o valor de x primeiro
  int num[x] ;
  int aux = 0;
  int i   = 0;
  int j   = 0;
  setlocale(LC_ALL, "portuguese");
  cout<<"escreva os números\n";
  for( i=0; i<x; i++ )
  {
    cin  >> num[i];
  }
  for( i=0; i<x; i++ )
  {
    for( j=i+1; j<x; j++ )
    {
      if( num[i] > num[j] ) /// colocou nUmero 1 e era letra i
      {
        aux    = num[i];
        num[i] = num[j];
        num[j] =    aux;
      }
    }
  }
  cout << "nUmeros OrDenados:\n" << endl;
  for(i=0; i<x; i++)
  {
    cout << num[i] << endl;
  }
  system("pause");
  cls
  return 0;  
}

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

1 hora atrás, Pablo Correa_06 disse:
	int x;
    int num[x], aux, i, j;

 

Não existe num[x]. O tamanho de num deve ser conhecido em tempo de compilação. 

 

Sobre o "código base"

 

Esse é praticamente um programa C e em C também não existe isso do modo como está usando. E nem compila. leu as mensagens do compilador? Deve ter visto algo assim na declaração de num:
 

original.cpp(9,13): error C2131: expression did not evaluate to a constant

 

E é um programa ruim.

  • declare as variáveis de controle do loop DENTRO do for
  • evite esse tipo de for em C++
  • declare uma variável por linha
  • ao perguntar algo mantenha o cursor na MESMA linha
  • não use system(). NUNCA
  • não use "pause". Não ;e legal seu programa ficar parado depois que terminou. É muito chato. E se tiver um script para rodar seu programa e outros ele vai ficar lá parado. Programas não são criados para rodar no IDE e depois sumirem. Se o IDE não para ou configurou errado ou deve mudar de ambiente.

 

Se quer um vetor em C++ pode usar

 

#include <iostream>
#include <vector>
using namespace std;

int main(void)
{
    int x;
    cout << "quantos numeros voce deseja inserir?\n";
    cin >> x;
    cout << "escreva os numeros\n";

    vector<int> num(x);
    cout << "vetor tem " << num.size() << " elementos\n";
    return 0;
}

 

Que mostra

 

quantos numeros voce deseja inserir?
42
escreva os numeros
vetor tem 42 elementos

 

Mas entenda que pode nem precisar disso: em C++ os vetores tem tamanho dinâmico e pode ir inserindo enquanto precisar.

Não tem razão para usar stdlib --- de C --- aqui nesse programa.

  • Obrigado 2
Link para o comentário
Compartilhar em outros sites

muito obrigado @arfneto e @devair1010

@arfneto eu apenas estava seguindo o que meu professor do técnico ensinou, mas obrigado pelas dicas e pela ajuda.

 

alias, sobre as "mensagens do compilador" o programa que eu uso (dev c++) parou de mostrar essas mensagens, e não sei como ativa-las novamente, se souber, poderia me dizer como faço isso?

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...