ВУЗ:
Составители:
Рубрика:
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
В том же формате будет осуществляться и ввод данных из потока.
Разделителем между двумя дробными числами, записанными в файле,
будет являться символ табуляции ('\t') или символ конца строки
('\n'). Данные из входного потока считываются в строку, а затем
производится разделение на составные части числа – знак, целую часть,
числитель и знаменатель.
// операция ввода рациональной дроби
istream& operator >>(istream& fin, Fraction& a)
{
char buf[30];
// считывается число в строку
// если считывание происходит из файла,
// строка вводится до разделителя
if(typeid(ifstream) == typeid(fin))
fin.getline(buf, 29, '\t');
else
fin.getline(buf, 29);
// находим первое вхождение символа '/' в строку
char* ps = strchr(buf, '/');
// если символ не найден,
// т.е. число - без дробной части
if(ps == NULL)
{
// из строки выделяем целую часть
sscanf(buf, "%d", &a.intPart);
a.numerator = 0;
a.denominator = 1;
//знак числа определяется по знаку целой части
if(a.intPart >= 0)
a.sign = 1;
else
{
a.sign = -1;
a.intPart = -a.intPart;
}
return fin;
}
// если число без целой части
if(strchr(buf, ' ')==NULL)
{
a.intPart = 0;
// считываем из строки числитель и знаменатель
sscanf(buf, "%d/%d",
&a.numerator, &a.denominator);
//знак числа определяется по знаку числителя
130
Андрианова А.А., Исмагилов Л.Н., Мухтарова Т.М.
В том же формате будет осуществляться и ввод данных из потока.
Разделителем между двумя дробными числами, записанными в файле,
будет являться символ табуляции ('\t') или символ конца строки
('\n'). Данные из входного потока считываются в строку, а затем
производится разделение на составные части числа – знак, целую часть,
числитель и знаменатель.
// операция ввода рациональной дроби
istream& operator >>(istream& fin, Fraction& a)
{
char buf[30];
// считывается число в строку
// если считывание происходит из файла,
// строка вводится до разделителя
if(typeid(ifstream) == typeid(fin))
fin.getline(buf, 29, '\t');
else
fin.getline(buf, 29);
// находим первое вхождение символа '/' в строку
char* ps = strchr(buf, '/');
// если символ не найден,
// т.е. число - без дробной части
if(ps == NULL)
{
// из строки выделяем целую часть
sscanf(buf, "%d", &a.intPart);
a.numerator = 0;
a.denominator = 1;
//знак числа определяется по знаку целой части
if(a.intPart >= 0)
a.sign = 1;
else
{
a.sign = -1;
a.intPart = -a.intPart;
}
return fin;
}
// если число без целой части
if(strchr(buf, ' ')==NULL)
{
a.intPart = 0;
// считываем из строки числитель и знаменатель
sscanf(buf, "%d/%d",
&a.numerator, &a.denominator);
//знак числа определяется по знаку числителя
130
Страницы
- « первая
- ‹ предыдущая
- …
- 128
- 129
- 130
- 131
- 132
- …
- следующая ›
- последняя »
