Программирование


Download 110 Kb.
Sana20.12.2022
Hajmi110 Kb.
#1035235
TuriПрактическая работа
Bog'liq
include


ТАШКЕНТСКИЙ УНИВЕРСИТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ ИМЕНИ МУХАММАДА АЛЬ-ХОРЕЗМИ


ИНФОКОММУНИЦИОННЫЙ ИНЖИНИРИНГ





ПРОГРАММИРОВАНИЕ

Практическая работа 6


Выполнила: Ахмаджанова Назима
(группа 205-4)
Проверила: Д. Динара Наримановна

Tashkent 2022
Вариант №5
Задание №1. Организуйте ввод времени в формате – «чч.мм.сс PM» с проверкой на правильность и соответствие данному формату.

Решение:
#include


#include
#include
#include
#include
using namespace std;
class Time {
string time;
friend istream& operator>>(istream& inp, Time& t) {
do {
cout << "Input time: ";
getline(inp, t.time);
} while (!t.check());
return inp;
}
friend ostream& operator<<(ostream& out, const Time& t) {
return out << t.time;
}
vector tokens(const string& str, const string& signs) {
const regex re{ signs };
const sregex_token_iterator iter{ str.begin(), str.end(), re, -1 };
return { iter, {} };
}
bool check() {
static const string box[]{
"AM", "PM", "am", "pm", "Am", "Pm", "aM", "pM"
};
const string re(R"([ .]+)");
auto result = tokens(time, re);
if (result.size() != 4) return false;
if (find(begin(box), end(box), result.back()) == end(box)) {
return false;
}
constexpr size_t n = 3;
unsigned tmp[n]{};
for (size_t i = 0; i < n; ++i) {
try {
tmp[i] = stoul(result[i]);
} catch (...) {
return false;
}
}
static constexpr auto _10 = 10U;
static constexpr auto _12 = 12U;
static constexpr auto _59 = 59U;
if (tmp[0] > _12) return false;
if (tmp[1] > _59 || tmp[2] > _59) return false;
string str;
if (tmp[0] < _10) str = "0";
str += to_string(tmp[0]) + '.';
if (tmp[1] < _10) str += '0';
str += to_string(tmp[1]) + '.';
if (tmp[2] < _10) str += '0';
str += to_string(tmp[2]) + ' ';
if (toupper(result.back()[0]) == 'A') str += box[0];
else str += box[1];
time = str;
return true;
}
};
int main() {
Time time;
cin >> time;
cout << "Output time: " << time << '\n';
}

Результат:



Задание №2.


Дана строка:
«Алиева Нигора Азаматовна»
Надо:

  1. Определить количество символов.

  2. Выделит из предложения все слова в отдельные строки.

  3. Во втором и третьем оставить первую букву и добавить символ «.».

  4. Соединить вновь созданные строки и вывести на печать.

Решение:
#include


#include
#include
using namespace std;
class Person {
public:
Person() = default;
Person(const string& fio) {
split(fio);
}
string fullname()const {
return surname + ' ' + name + ' ' + patronymic;
}
string shortname()const {
return surname + ' ' + name.front() + ". " + patronymic.front() + '.';
}
private:
string surname;
string name;
string patronymic;
void split(const string& line) {
istringstream iss(line);
iss >> surname >> name >> patronymic;
}
};
int main() {
system("chcp 1251 > nul");
cout << "Ф.И.О.: ";
string fio;
getline(cin, fio);
Person person(fio);
cout << person.shortname() << '\n';
system("pause > nul");
}
Результат:

Задание №3. Дан символьный файл f. Записать в файл g компоненты файла f в обратном порядке


Решение:
#include
#include
#include
#include
#include
#include
using namespace std;
typedef istream_iterator input;
typedef ostream_iterator output;
int main()
{
ifstream fin("f.txt", ios::in);
ofstream fout("g.txt", ios::out);
if (!fin)
{
cerr << "error: couldn't open file.\n";
exit(1);
}
vector str((input(fin)), input());
copy(str.rbegin(), str.rend(), output(fout, " "));
fin.close();
fout.close();
cout << "The data is successfully written!\n\n";
return 0;
}

Результат:



Download 110 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling