#include <iostream>
using namespace std;
template <typename _T>
class digitstream
{
protected:
_T m_value;
public:
digitstream(const _T& val) :
m_value(val)
{
}
class const_iterator
{
protected:
_T m_value;
unsigned int m_base;
unsigned int m_pos;
public:
const_iterator(const _T& val, unsigned int base) :
m_value(val),
m_base(base)
{
m_pos = 0;
if (m_base != 0) {
if (m_value < m_base)
return;
_T rest = m_value;
do {
rest = rest / m_base;
m_pos++;
}
while (rest >= m_base);
}
}
const_iterator(const const_iterator& src) :
m_value(src.m_value),
m_base(src.m_base),
m_pos(src.m_pos)
{
}
char operator * () const {
if (m_base != 0) {
_T rest = m_value;
for (int n = 0; n < m_pos; ++n)
rest = rest / m_base;
_T result = rest % m_base;
if (result > 9)
return 'A' + result - 10;
return '0' + result;
}
return '0';
}
const_iterator& operator ++() {
--m_pos;
return *this;
}
const_iterator& operator --() {
++m_pos;
return *this;
}
bool operator ==(const const_iterator& cmp) const {
if (cmp.m_value == 0 && cmp.m_base == 0 && m_pos == -1)
return true;
return false;
}
bool operator !=(const const_iterator& cmp) const {
return ! operator ==(cmp);
}
};
const_iterator begin(unsigned int base) const {
return const_iterator(m_value, base);
}
const_iterator end() const {
return const_iterator(0, 0);
}
class reverse_iterator
{
protected:
_T m_value;
unsigned int m_base;
unsigned int m_pos;
public:
reverse_iterator(const _T& val, unsigned int base) :
m_value(val),
m_base(base),
m_pos(0)
{
}
reverse_iterator(const reverse_iterator& src) :
m_value(src.m_value),
m_base(src.m_base),
m_pos(src.m_pos)
{
}
char operator * () const {
if (m_base != 0) {
_T rest = m_value;
for (int n = 0; n < m_pos; ++n)
rest = rest / m_base;
_T result = rest % m_base;
if (result > 9)
return 'A' + result - 10;
return '0' + result;
}
return '0';
}
reverse_iterator& operator ++() {
++m_pos;
return *this;
}
reverse_iterator& operator --() {
--m_pos;
return *this;
}
bool operator ==(const reverse_iterator& cmp) const {
if (cmp.m_value == 0 && cmp.m_base == 0 && m_base != 0) {
_T rest = m_value;
for (int n = 0; n < m_pos; ++n)
rest = rest / m_base;
if (rest == 0)
return true;
}
return false;
}
bool operator !=(const reverse_iterator& cmp) const {
return ! operator ==(cmp);
}
};
reverse_iterator rbegin(unsigned int base) const {
return reverse_iterator(m_value, base);
}
reverse_iterator rend() const {
return reverse_iterator(0, 0);
}
};
int main()
{
digitstream<int> ds(0xFADE372F);
for (digitstream<int>::const_iterator it = ds.begin(16); it != ds.end(); ++it)
cout << *it;
cout << endl;
for (digitstream<int>::reverse_iterator rit = ds.rbegin(16); rit != ds.rend(); ++rit)
cout << *rit;
cout << endl;
return 0;
}
byte key()
{
int val = analogRead(A0);
if (val < 480) return 99;
if (val < 500) return 11;
if (val < 525) return 0;
if (val < 555) return 10;
if (val < 585) return 9;
if (val < 620) return 8;
if (val < 660) return 7;
if (val < 705) return 6;
if (val < 760) return 5;
if (val < 820) return 4;
if (val < 890) return 3;
if (val < 976) return 2;
return 1;
}
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
// Структура для представления книги
struct Book {
string author;
string title;
string publisher;
int year;
double cost;
};
int count_o(const string& title)
{
int oCount = 0;
enum { NotO, PossiblyO } state = NotO;
for (char ch : title) {
switch (state) {
case NotO:
if (ch == 0xFFFFFFD0)
state = PossiblyO;
break;
case PossiblyO:
if (ch == 0xFFFFFFBE || ch == 0xFFFFFF9E) {
state = NotO;
oCount++;
}
break;
}
}
return oCount;
}
int main() {
setlocale(LC_ALL, "ru");
const int size = 1; // Задайте нужный размер массива книг
Book library[size];
// Ввод информации по книгам
for (int i = 0; i < size; ++i) {
cout << "Введите автора книги " << i + 1 << ": ";
getline(cin, library[i].author);
cout << "Введите название книги " << i + 1 << ": ";
getline(cin, library[i].title);
cout << "Введите издательство книги " << i + 1 << ": ";
getline(cin, library[i].publisher);
cout << "Введите год издания книги " << i + 1 << ": ";
cin >> library[i].year;
cout << "Введите стоимость книги " << i + 1 << ": ";
cin >> library[i].cost;
cin.ignore(); // Очищаем буфер после ввода чисел
}
// Подсчитываем количество книг с тремя буквами 'о' в названии
int countWithO = 0;
for (int i = 0; i < size; ++i) {
if (count_o(library[i].title) == 3) {
countWithO++;
}
}
// Создаем массив для книг с тремя буквами 'о' в названии
Book* booksWithO = new Book[countWithO];
int booksWithOCount = 0;
// Переписываем информацию только о книгах с тремя буквами 'о' в названии
for (int i = 0; i < size; ++i) {
if (count_o(library[i].title) == 3) {
booksWithO[booksWithOCount++] = library[i];
}
}
// Сортируем массив книг с тремя буквами 'о' в названии по названию издательства
for (int i = 0; i < booksWithOCount - 1; ++i) {
for (int j = 0; j < booksWithOCount - i - 1; ++j) {
if (booksWithO[j].publisher > booksWithO[j + 1].publisher) {
swap(booksWithO[j], booksWithO[j + 1]);
}
}
}
// Выводим информацию о книгах с тремя буквами 'о' в названии, отсортированную по названию издательства
cout << "Информация о книгах с тремя буквами 'о' в названии, отсортированная по названию издательства:" << endl;
for (int i = 0; i < booksWithOCount; ++i) {
cout << "Автор: " << booksWithO[i].author << endl;
cout << "Название: " << booksWithO[i].title << endl;
cout << "Издательство: " << booksWithO[i].publisher << endl;
cout << "Год издания: " << booksWithO[i].year << endl;
cout << "Стоимость: " << booksWithO[i].cost << endl << endl;
}
delete[] booksWithO;
return 0;
}
#include <iostream>
#include <string>
#include <locale>
using namespace std;
string to_bin(int n)
{
enum { Plus, Minus } sign = Plus;
if (n < 0) {
sign = Minus;
n = -n;
}
string result;
unsigned int mask = 0x80000000;
enum { Prefix, Value } state = Prefix;
while (mask != 0 && state == Prefix) {
if (n & mask) {
result += '1';
state = Value;
}
mask >>= 1;
}
while (mask != 0) {
result += (n & mask) ? '1' : '0';
mask >>= 1;
}
if (result.length() == 0)
result = '0';
if (sign == Minus)
result = '-' + result;
return result;
}
int main()
{
int n;
setlocale(LC_ALL, "");
cout << "Введите число:";
cin >> n;
cout << to_bin(n) << endl;
return 0;
}
bool is_integer(double val, double precision = 0.000005)
{
return abs(val - round(val)) < precision;
}
union
{
char charVal;
float floatVal;
} Value;
class Token
{
Value m_value;
public:
inline Value const* getValue() const {
return &m_value;
}
inline void setValue(Value const* pVal) {
::memcpy(&m_value, pVal, sizeof(Value));
}
};
class CharToken : public Token
{
public:
CharToken() {}
inline char getChar() const {
return m_value.charVal;
}
};
class FloatToken : public Token
{
public:
FloatToken() {}
inline float getFloatValue() const {
return m_value.floatValue;
}
};