Добрый вечер необходимо написать программу которая считает факториал, Пользователем вводится точность E которая не должна превышать диапазон 0.1<= E<=0.0001, и x, где x действительное число x>0.5. Саму программу для подсчета факториала я написал, проблема возникла с проверками на вводе, т.е нужно чтобы пользователь не мог ввести число не выходящее за диапазон, и чтобы не был введен символ. Раньше писал программы на pascal там все реализовавалось достаточно просто с помощью IOResult и обычного цикла. Заранее благодарю за помощь.
#include <math.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
int main ()
{
int i;
float sum,chisl,znam,x,e;
char ch;
clrscr();
do
{
printf ("Vvedite x: ",'/n');
scanf ("%f",&x);
}
while (x>0.5);
printf ("Vvedite e: ",'/n');
scanf ("%f",&e);
i=0;
sum=0;
do
{
i++;
chisl = pow ((x-i),i);
znam = i*(pow (x,i));
sum = sum + (chisl/znam);
}
while (e<sum);
printf ("%02f",sum);
getch();
return 0;
}
int main(int argc, char **argv)Это для примера щас сделал . Вот http://netcode.ru/cpp/?lang=&katID=3&skatID=22&artID=247 можешь посмотреть, готовые фунции по преобразованию строк в числа
{
char a[80];
gets(a);
bool q = true;
for (int i=0; a[i]; i++){
if ( !isdigit(a[i]) ) {
q=false;
break;
}
}
cout <<q;
return 0;
}
Ну, и к чему эта самодеятельность, если все вышеприведенное прекрасно решается встроенными средствами С?
doИ попробуй ввести нечисловое значение или число, не попадающее в заданный интервал...
{
printf ("Vvedite x: \n");
if(!scanf("%f",&x))
{
printf("error...\n");
fflush(stdin);
}
}
while (x <= 0.5);
do
{
printf ("Vvedite e: \n");
if(!scanf("%f",&e))
{
printf("error...\n");
fflush(stdin);
}
}
while(e < 0.0001 || e > 0.1);
Владимир, спасибо, я только начал изучать этот язык, столько тонкостей глаза разбегаются....
P.S Посоветуйте какуй-нибудь книжку, или автора, Спасибо.
Добавлено через 13 мин.
int main(int argc, char **argv)Это для примера щас сделал . Вот http://netcode.ru/cpp/?lang=&katID=3&skatID=22&artID=247 можешь посмотреть, готовые фунции по преобразованию строк в числа
{
char a[80];
gets(a);
bool q = true;
for (int i=0; a[i]; i++){
if ( !isdigit(a[i]) ) {
q=false;
break;
}
}
cout <<q;
return 0;
}