Cin.clear(); //помилка, очистити статус помилки

cin.ignore(10,'\n');

cout <<"Nepravylno vvedeni dujmy\n";

}

}

//////////////////////////

int isFeet(string str)

{int slen=str.size(); //одержати довжину

if(slen==0||slen>5) //не було даних або забагато

return 0;

for(int j=0;j<slen;j++)

if((str[j]<'0'||str[j]>'9')&&str[j]!='-')

return 0;

double n=atof(str.c_str());

if(n<-999.0||n>999.0)

return 0;

return 1;

}

//////////////////

int main()

{ Distance d;

char ans;

do

{d.getdist();

cout<<"\nVidstan=";

d.showdist();

cout<<"\nWe raz (y/n)?";

cin>>ans;

cin.ignore(10,'\n');

 

} while (ans!='n');

return 0;

}

Програма 26.1

 

Програма дуже проста за винятком того, що метод getdist() розширений і спрямований на підтримку обробки помилок. Частково ця програма використовує підхід, показаний у раніше приведеному коді. Крім того, введений вираз, який слідкує за тим, щоб користувач не вводив фути у форматі чисел з плаваючою комою. Це дійсно важливо, оскільки дюйми можуть мати дробову частину, а фути – ні, і це може заплутати користувача.

Звичайно, очікуючи вводу цілочисельних значень, оператор видобування просто припиняє свою роботу, побачивши десяткову крапку. При цьому повідомлення про помилку не видається. Ми ж хочемо дізнатися про виявлену помилку, тому будемо зчитувати значення числа футів у вигляді рядка. Потім ми перевіряємо введений рядок за допомогою створеної нами функції isfeet(), що повертає true, якщо число футів введене коректно. Для схвалення нашою функцією число повинне містити лише цифри і його значення повинне лежати в межах від -999 до 999. Якщо з введеними футами все гаразд, ми конвертуємо рядок в int за допомогою стандартної бібліотечної функції atoi(). Натомість число дюймів може бути дробовим, ми перевіряємо тільки їх значення, яке повинне знаходитися в межах від 0 до 12,0.

В програмі використовується ще одна хитрість: прапор помилки встановлюється вручну. Тим самим ми перевірили, чи входять введені дюйми в діапазон допустимих значень. Якщо ні, ми встановлюємо failbit за допомогою








Дата добавления: 2015-08-26; просмотров: 1046;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.003 сек.