IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Манипуляторы С++
сообщение
Сообщение #1


Ночной волк
**

Группа: Пользователи
Сообщений: 103
Пол: Мужской

Репутация: -  1  +


Пытаюсь разобраться с манипуляторами на примере этой задачи

1. Написать программу - посчитать длину окружности. Входные данные поступают с
клавиатуры. Установить ширину поля 10 символов, установить точность 4 цифры,
заполнить вместо пробелов символом / с помощью функций и
манипуляторов.Предусмотреть обработку ошибок. Результат выводится на экран в
десятичной, шестнадцатеричной и восьмеричной системе.
2. Проверить какие флаги потока вывода установлены и заменить попарно на
десятичные на шестнадцатиричные (и наоборот) левое выравнивание на правое
выравнивание (и наоборот) Проверить результат. Добавить в программу два своих
манипулятора. Один выводит сообщение, другой устанавливает
шестнадцатеричный вывод и символ заполнения $.


# include <iostream.h>
# include <iomanip.h>
const float pi=3.14;

int main() {
float l;
float r;

// number ONE
cout.width(10);
cout.precision(4);
cout.fill('/');
cout << "radius pls";;
// for (float r=0; cin.rdstate != '_good'; ++i);
cin >> r;
if (cin.rdstate != "_good") {
cout << " Input Error"
}
l=2*pi*r;
cout << "leghth of circle is";
cout << dec << l << /n;
cout << oct << l << /n;
cout << hex << l << endl;

// NUMBER TWO

long fl;
fl= cout.flags();
cout << "Now flag position: "<< fl<<"\n";

ostream& privet(ostream &stream)
{
stream << 'privet';
return stream;
}

ostream& hexdollar(ostream &stream)
{
stream.setf(ios::hex);
stream << fill('$');
return stream;
}

cout << privet << /n;
cout << hexdollar << 17 << endl;
return 0;
}


Помогите исправить


--------------------
Не думай о белой обезьяне.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ты "перемешал" оба задания в одну кашу... Отдели одно от другого. Вот так выглядит первое:
# include <iostream.h>
# include <iomanip.h>
const float pi = 3.14;

int main() {

float r;
// number ONE
cout.fill('/');
cout << "radius pls ";
cin >> r;
if (!cin.good()) {
cout << " Input Error"; return -1;
}

float l = 2 * pi * r;
cout << "appr. length of circle is ";
cout << setw(10) << dec << (int)l << "\n"; // dec/oct/hex влияют только на целые числа
cout << setw(10) << oct << (int)l << "\n";
cout << setw(10) << hex << (int)l << endl;
return 0;
}

(на GCC работает)

Аналогично сделай и второе.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Спасибо, Volvo
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.05.2024 1:37
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name