Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
JoaoNascimento

[Resolvido] Vector que só leia 8 inteiros

Recommended Posts

Localhost

char str[1024];
int k = 0;
for(k = 0; k < 500; k++) {
  fgets(str,1023,stdin);
  if(strlen(str) - 1 > 8) puts("Errado\n");
}

Algo como isto? Para este tipo de coisas tens de usar strings.

Depois até podes converter com a função atoi.


here since 2009

Share this post


Link to post
Share on other sites
JoaoNascimento

Pois, mas como é um enucniado dum teste não posso fazer, pois o professor pede para usar apenas inteiros...

Estive a pensar em fazer um genero de matriz bidimensional....

Mas para isso teria de guarda cada "caracer" inteiro numa posição ao do vector

Share this post


Link to post
Share on other sites
Localhost

Divides por 10 9 vezes e verificas se é menor do que 1. Com isto perdes eficiência (em termos de rapidez).

int K = 0;
int k = 0;
for(k = 0; k < 500; k++) {
  scanf("%i", &K);
  if(Divide(K) < 1) puts("Errado\n");
}


here since 2009

Share this post


Link to post
Share on other sites
Baderous

char str[1024];
int k = 0;
for(k = 0; k < 500; k++) {
  fgets(str,1023,stdin);
  if(strlen(str) - 1 > 8) puts("Errado\n");
}

Algo como isto? Para este tipo de coisas tens de usar strings.

Depois até podes converter com a função atoi.

Nesse código não precisas de colocar 1023 porque o fgets já reserva espaço para o '\0'.

Share this post


Link to post
Share on other sites
Localhost

Nesse código não precisas de colocar 1023 porque o fgets já reserva espaço para o '\0'.

Não sabia, obrigado pela dica.  :P

Acho que estou a complicar o que parece simples

Pois, isso é natural, principalmente quando te estás a iniciar.

Anyway, percebeste o código?


here since 2009

Share this post


Link to post
Share on other sites
JoaoNascimento

Fiz de outra maneira.

Não é a mais correcta mas resulta...

Dentro da estrutura de repetição coloquei uma instrução de validação (if) que me valida o numero introduzido, e como sabemos que o numero maximo introduzido com 8 caracteres é 99999999 então fica a validar se for maior que isso pede de novo...

Basicamente o codigo fica assim:

for (i=0; i<N; i++)
{
	printf("Introduza as coordenadas relativa a estação de serviço: ");
	scanf("%d",&cod[i]);

	if (cod[i]>99999999)
	{
		while (cod[i]>99999999)
		{
			printf("\nA coordenada inserida e maior que o maximo permitido\n: ");
			printf("Volte a inserir a coordenada correspondente\n: ");
			scanf("%d",&cod[i]);
		}
	}

Obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.