Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Дан текст, среди символов которого имеется пробел. Группа символов, предшествующая первому пробелу, представляет собой русское слово—
- //существительное мужского рода, оканчивающееся на -ок; после первого пробела идет одна из букв и, р, д, в, т, п, указывающая падеж //(именительный, родительный, дательный, винительный, творительный, предложный). Получить данное слово в указанном падеже.
- #include "stdafx.h"
- #include <iostream>
- #include <stdio.h>
- #include <cctype>
- #include <windows.h>
- using namespace std;
- void obnul(char*str) {
- for (int i = 0; str[i] != '\0'; i++)
- str[i] = 0;
- }
- void give_padej(char padej,char *ok_padej) {
- if (padej == 'и') { ok_padej[0] = 'о'; ok_padej[1] = 'к'; }
- else if (padej == 'р') { ok_padej[0] = 'к'; ok_padej[1] = 'а'; }
- else if (padej == 'д') { ok_padej[0] = 'к'; ok_padej[1] = 'у'; }
- else if (padej == 'в') { ok_padej[0] = 'к'; ok_padej[1] = 'а'; }
- else if (padej == 'т') { ok_padej[0] = 'к'; ok_padej[1] = 'о'; ok_padej[2] = 'м'; }
- else if (padej == 'п') { ok_padej[0] = 'к'; ok_padej[1] = 'е'; }
- }
- void print_this_to_index(char *str, int index) {
- cout << "Программа вернула: ";
- for (int i = 0; i < index; i++) {
- cout << str[i];}
- cout << endl;
- }
- bool iskluchenie(char *str) {//Проверка на исключение
- int j = 0;
- for (int i = 0; str[i] != '\0'; i++) {
- if (str[i - 1] == 'о'&&str[i] == 'к' && (str[i - 2] == 'р' || str[i - 2] == 'к' || str[i - 2] == 'л' || str[i - 2] == 'т')) {
- j = 1;
- }
- }
- return j;
- }
- int transf_isklych(char*str, char *ok_padej, int size,bool is) {//Трансформация
- int j = 0,
- z = 0;//Чтобы входило после.
- for (int i = 0; i <size; ++i)
- {
- if (!is&&str[i] == 'о') {
- str[i] = str[i+1];
- z++;
- }
- if ((str[i - 1] == 'о'&&str[i] == 'к'&&str[i+1] == '\0')||z>=1) {
- if (str[i - 1] == ok_padej[j]) {
- j++;
- }
- else if (!(str[i - 1] == ok_padej[j])||!is)
- {
- str[i] = ok_padej[j]; j++;
- }
- z++;
- }
- }
- print_this_to_index(str, size);
- return 0;
- }
- void tranform_this(char *str, char *ok_padej) {//Передача на трансформацию в др. ф-и
- int size; char printstr;
- size = strlen(ok_padej)+strlen(str);
- if (strlen(str)==3) {
- cout << "Исключение: Существительное из трех букв\n";
- int is = 1;
- transf_isklych(str, ok_padej, size, is);}
- else if (strlen(str) > 3 && iskluchenie(str)) {
- cout << "Исключение: Существительное имеет кончание -рок/-кок/-лок/-ток\n";
- int is = 1;
- transf_isklych(str, ok_padej, size,is);
- }
- else {
- cout << "Слово не принадлежит к исключениям\n";
- int is = 0;
- transf_isklych(str, ok_padej, size,is);
- }
- }
- int main()
- {
- SetConsoleOutputCP(1251);
- SetConsoleCP(1251);
- char str[255],padej;
- obnul(str);//обнулить массив
- char ok_padej[2];
- obnul(ok_padej);//тоже обнулить
- for (int i = 0; i < 2; ++i) {
- if (i == 0) {
- cin >> str;
- cout << "Слово: " << str << endl;
- }
- else if (i == 1) {
- cin >> padej;
- cout << "Падеж: " << padej << endl;
- give_padej(padej, ok_padej);
- }
- }
- tranform_this(str, ok_padej);
- system("pause");
- return 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement