Помощь - Поиск - Пользователи - Календарь
Полная версия: Проверка данных на вводе
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
ninja
Добрый вечер необходимо написать программу которая считает факториал, Пользователем вводится точность 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
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. Вот тут можешь посмотреть, готовые фунции по преобразованию строк в числа
volvo
Ну, и к чему эта самодеятельность, если все вышеприведенное прекрасно решается встроенными средствами С? 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
Владимир, спасибо, я только начал изучать этот язык, столько тонкостей глаза разбегаются....

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. Вот тут можешь посмотреть, готовые фунции по преобразованию строк в числа


Спасибо огромное за ресурс интересные примеры.
volvo
Цитата
Посоветуйте какуй-нибудь книжку, или автора

ПОИСК КНИГ.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.