Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Проверка данных на вводе

Автор: ninja 16.02.2010 23:23

Добрый вечер необходимо написать программу которая считает факториал, Пользователем вводится точность 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;
}


Автор: Client 16.02.2010 23:41

int main(int argc, char **argv)
{
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;
}
Это для примера щас сделал smile.gif. Вот http://netcode.ru/cpp/?lang=&katID=3&skatID=22&artID=247 можешь посмотреть, готовые фунции по преобразованию строк в числа

Автор: volvo 16.02.2010 23:47

Ну, и к чему эта самодеятельность, если все вышеприведенное прекрасно решается встроенными средствами С? smile.gif

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);
И попробуй ввести нечисловое значение или число, не попадающее в заданный интервал...

Автор: ninja 16.02.2010 23:59

Владимир, спасибо, я только начал изучать этот язык, столько тонкостей глаза разбегаются....

P.S Посоветуйте какуй-нибудь книжку, или автора, Спасибо.

Добавлено через 13 мин.

Цитата(Client @ 16.02.2010 19:41) *

int main(int argc, char **argv)
{
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;
}
Это для примера щас сделал smile.gif. Вот http://netcode.ru/cpp/?lang=&katID=3&skatID=22&artID=247 можешь посмотреть, готовые фунции по преобразованию строк в числа


Спасибо огромное за ресурс интересные примеры.

Автор: volvo 17.02.2010 0:39

Цитата
Посоветуйте какуй-нибудь книжку, или автора

http://forum.pascal.net.ru/index.php?s=&showtopic=4304&view=findpost&p=119547