Ir ao conteúdo
  • Cadastre-se

corrigir erro(duvida).


yhhik

Posts recomendados

estou fazendo um agoritmo q tem o seguinte comando:

Faça um programa em C que leia um número N, o qual indicará quantos valores inteiros e positivos devem ser lidos a seguir. Para cada número lido, escreva seu valor e seu fatorial. Obs: Lembrando que 5! = 5 * 4 * 3 * 2 * 1*[/B]

meu codico fonte ficou asim:

#include <stdio.h>;
#include <conio.h>;

main(){
int i,a,y,b,fat,f;
printf("quantidade de numeros a SEREM LIDOS: ");
scanf("%d",&y);


for (i=1; i<=y;i++){
printf("\nNUMERO(%d)\n",i);
fat=1;
do{
printf("digite numero:");
scanf("%d",&a);
if(a<0)
printf("DIGITE NUMERO POSITIVO!\n");
}while(a <0);
b=a;
printf("%d",a);

while(b>1){
fat=fat*b;
b--;
printf("*%d",;
}
printf("=%d",fat);
printf("\nfatorial de %d=%d\n",a,fat);

}
getch();
}

porém se o usuário digitar um caracter ou um n° real ocorrerá erro,como posso corrogir esse erro?

caso esse erro ocorra quero que apareça uma msg de erro assim como fiz com numeros negativos.

Link para o comentário
Compartilhar em outros sites

O scanf retorna a quantidade de parametros que ele leu,só checar se bate com a quantidade esperada.

Att. regreth

regreth..

acho q não expliquei direito!!

o programa funciona normalmente!

mas no comando ele pede um número inteiro para tirar o fatorial,porém se o usuário digitar um caracter ou um número real ocorrerá erro.

para tirar esse erro eu quero colocar um if(entrada inválida).

e um do{}while.

a dúvida é...de que maneira eu posso fazer isso?como eu posso fazer com q meu programa identifique o número real ou um caracter,sendo que a variavel declarada é do tipo int?

Link para o comentário
Compartilhar em outros sites

A do número real,você teria que pegar como string e você mesmo fazer a checagem,mas não vejo razão disso.Seria algo como checar se o atof funciona na string,e se funcionar procurar na string o separador decimal (.),se não achar é porque é um inteiro,dai você dava um atoi e checava se era maior que 0.

As outras,só usar o método que eu te expliquei.Eis:


#include <stdio.h>

int main()
{
int numero;
printf("Digite um numero:");
if(scanf("%d", &numero) != 1 || numero < 0) /*reais > 0,ja que reais sofrem auto-casting para naturais no caso*/
puts("Numero inválido.");
scanf("%*c%*c");
return 0;
}

Att. regreth

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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