Ir ao conteúdo

C++ preciso armazenar números em uma variavel


Ir à solução Resolvido por .if,

Posts recomendados

Postado

estou fazendo um trabalho que é como se fosse uma entrevista e no final eu tiro dados sobre ela, e uma das perguntas é justamente a idade, mas a cada idade de uma pessoa a outra é substituida, pensei em usar vetores mas pelo que estudei o vetor deve ser definido antes, porém nesse trabalho o usuário deve colocar o numero de entrevistados, logo se eu definir idade[6] e o usuario entrevistar 10 pessoas, não vai dar, pensei também em usar a variavel de entrevistados 'x' que o usuario colocar para ser o tamanho do vetor (idade[x]) mas o compilador bloqueou.

#include <iostream>
using namespace std;

int main()
{
	float x, z = 1,idade,media;
	
	cout<<"Quantas pessoas participaram da entrevista?";
	cin>>x;
	
	while (z<=x)
	{
		
		cout<<z<<" Pessoa"<<endl;
		cout<<"Idade:";
		cin>>idade;
	
		z++;
    }     
	
	return 0;
}

 

  • Obrigado 1
  • Membro VIP
  • Solução
Postado

Não há problema em definir um numero maior de idades. P.ex. coloque idade[1000] ou apenas idade[ ];

Outra dica: não precisa ser float... pode ser unsigned int (max 65535) ou até mesmo unsigned char (max 255)

  • Obrigado 1
Postado
2 minutos atrás, .if disse:

Não há problema em definir um numero maior de idades. P.ex. coloque idade[1000] ou apenas idade[ ];

Entendo, mas no caso de idade[1000] isso n pode ser considerado má gestão de memória?

  • Curtir 1
  • Membro VIP
Postado

Bem pensado. Mas geralmente a gente tem noção da capacidade do sistema portanto não se faz nada sem pensar: escolhe-se um valor coerente e não comprometedor. Mas isso seria mais conhecimento empírico com um certo nível de domínio do hw.

12 minutos atrás, LucasrodriguesP disse:

gestão de memória

Se não se sente a vontade com este nível baixo, pesquise por alocação dinâmica... nível acima do meu 😁

http://linguagemc.com.br/alocacao-dinamica-de-memória-em-c/

  • Curtir 1
  • Obrigado 1
Postado

@LucasrodriguesP    você postou no tópico de C++ , mas esse seu código não tem Quase nada de C++ , e tem mesmo tudo de C ,  em C++ seria como bem disse @Flávio Pedroza   e  em C você pode usar a alocação dinâmica com o uso de malloc e realloc ,  e seu código modificado poderia ser assim  :

#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
  int* vet;
  vet = (int*) malloc ( 1 * sizeof(int) );
  int x, z = 0,idade,media,cont=0,i;
  cout<<"Quantas pessoas participaram da entrevista?";
  cin >> x;
  while( z < x )
  {
    cout << z << " Pessoa" << endl;
    cout<<"Idade:";
    cin >> idade;
    z++;
    vet[cont] = idade;
    cont++;
    vet = ( int* ) realloc ( vet , 1 );
  }
  for(i=0; i<cont; i++)
  {
    cout << "Idade Na PosiCAo " << i << "   " << vet[i] << endl;
  }
  free(vet);
  return 0;
}

 

  • Obrigado 1
Postado

Consegui fazer desse jeito!!

#include <iostream>
using namespace std;

int main()
{
	unsigned int x, z = 0,idade[z];
	float media,soma=0;
	cout<<"Quantas pessoas participaram da entrevista?";
	cin>>x;
	
	
	
	while (z<x)
	{
		cout<<z<<" Pessoa"<<endl;
		cout<<"Idade:";
		cin>>idade[z];
	
		z++;
    }     
	

	for(z=0;z<x;z++)
	{
			
	 soma=soma+idade[z];
	 
    }
	 media=soma/(x);
	 cout<<media;
	
	return 0;
}

 

  • Amei 1
Postado

Sua solução está incorreta. você está escrevendo em áreas de memória não previamente alocada, provocando erros de segmentação.

Como o C++, infelizmente, não faz verificações desse tipo em tempo de compilação, o programa até compila e em casos até roda aparentemente de forma normal.

Teste com 10 ou mais participantes e veja o que acontece.

  • Curtir 1
Postado
2 horas atrás, LucasrodriguesP disse:
unsigned int x, z = 0,idade[z];
	float media,soma=0;
	cout<<"Quantas pessoas participaram da entrevista?";
	cin>>x;

Se quer usar uma variável para definir o tamanho do vetor, a declaração do vetor deve aparecer depois, p.ex,

int tamanho;

cout << "Tamanho: ";

cin >> tamanho;

int idade[tamanho];

 

  • Curtir 1
Postado

@LucasrodriguesP     usar malloc e realoc  não tem nenhuma dificuldade ,  eles são apenas comandos normais da linguagem  C .e dará certo ,   e essas outras táticas de criar vetor maior que o necessário  se tornam complicadas e o código fica mais extenso  .

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