Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

JoaoNascimento

[Resolvido] Vector que só leia 8 inteiros

Mensagens Recomendadas

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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'.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.