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

Gurzi

[Resolvido] is digit ?

5 mensagens neste tópico

#include <stdio.h>
#include <stdlib.h>

int x_isdigit(char ch)
{
  return (ch >='0' && ch <= '9');

}

main()
{
  char c;
  while(1)
  {
    c=getchar();
    if (!x_isdigit(c))
      putchar(c);
  }
  system("PAUSE");
}

alguem me explica isto ? não consigo perceber como funciona nem o que faz o while(1) // o Damas diz que Termina com CTRL-C , fiquei na mesma

pág 182 luis Damas C

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esta é fácil de explicar. Então vamos lá tentar explicar isto por blocos:

int x_isdigit(char ch)
{
return (ch >='0' && ch <= '9');
}

Ora, isto é uma função que é criada de forma a definir as "permissões" da posterior introdução de dados. O programa só irá aceitar números entre 0 e 9, como sendo dígitos (is_digit). Daí vem a instrução "return(ch>='0' && ch<='9')".

main()
{
char c;

A variável c aceitará caracteres e servirá para armazenar o caracter introduzido.

while(1)
{
  c=getchar();
  if (!x_isdigit(c))
  putchar(c);
  }

O while(1) é um ciclo infinito, isto é, enquanto fores introduzindo caracteres e a função for lendo esses caracteres conforme os parametros da função is_digit, vais voltar sempre ao início, até fechares o programa.

Como ali está escrito, o c vai servir para armazenar o caracter introduzido (getchar() ). Se o numero introduzido e armazenado em 'c' for um digito entre 0 e 9 ( if(!x_is_digit© ) o programa coloca no ecrã esse dígito.

O while (1) é uma condição criada para que surta um efeito de instrução infinita, até se fechar o programa á "bruta".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem visto, agora ja percebi.. ele so vai retomar se n for um digito de 0 a 9 devido ao if(!is_digit)

como poes a syntax de c aqui ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bem visto, agora ja percebi.. ele so vai retomar se n for um digito de 0 a 9 devido ao if(!is_digit)

como poes a syntax de c aqui ?

No próprio painel do bbcode quando estás a fazer um post, tem lá uma secção a dizer GeShi. Carregas aí e escolhes as linguagens. Podes fazer manualmente através dos comandos "['code='linguagem]'[/ code]". (sem as plicas...)

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

observação : podes ver no damas...que existe uma função propria, numa das bibliotecas de C, para verificar se é um digito.... (nao importante neste caso... )  :P

0

Partilhar esta mensagem


Link 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