Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h> //printf(); scanf();
- #include <cstdlib> //atoi();
- #include <clocale> //setlocale(LC_ALL, "Russian");
- #include <conio.h> //_getch();
- #include <windows.h> //HANDLE COORD SetConsoleCursorPosition();
- #include <ctime> //stime(time(0));
- int Write_int(){
- char arr[10];
- int value;
- while(true){
- scanf("%s", arr);
- value = (atoi(arr))? atoi(arr) : 0;
- if (value > 0)
- break;
- else
- printf("Введите значение n > 0: ");
- }
- return value;
- }
- void Input_Str(char* &str, int &Size){
- system("cls");
- HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
- COORD pos;
- char* cloneStr;
- pos.Y = 2;
- pos.X = 0;
- printf("[Ввод строки]\nСтрока:\n");
- while(true){
- int symbol = _getch();
- //создаем клона, который отличается от основного
- //копируем основной массив в клона
- //расширяем основной
- //копируем клона в основной
- //Начало магии
- cloneStr = new char[pos.X + 1];
- for (int i = 0; i < pos.X; i++)
- if (str[i] != '\0')
- cloneStr[i] = str[i];
- str = new char[pos.X + 1];
- for (int i = 0; i < pos.X; i++)
- str[i] = cloneStr[i];
- //Конец магии
- //(symbol >= 48 && symbol <=79)
- if ((symbol >= 97 && symbol <= 122) || (symbol == 32)){
- str[pos.X] = symbol;
- printf("%c", str[pos.X]);
- pos.X++;
- }
- if (symbol == 8 && pos.X > 0){
- str[pos.X] = ' ';
- printf("%c", ' ');
- pos.X--;
- }
- SetConsoleCursorPosition(hConsole, pos);
- if (symbol == 13)
- break;
- }
- delete[] cloneStr;
- Size = pos.X;
- printf("\nНажмите любую клавишу для продолжения...\n");
- _getch();
- }
- void Rand_Str(char* &str, int &Size){
- system("cls");
- printf("[Рандомное заполнение строки]\nВведите длину строки: ");
- Size = Write_int();
- str = new char[Size];
- srand(time(0));
- for (int i = 0; i < Size; i++){
- str[i] = 97 + rand() % 26; //97-122
- }
- printf("%s", str);
- printf("\nНажмите любую клавишу для продолжения...\n");
- _getch();
- }
- void Obr_Str(char* &str, int Size, char vowel[]){
- system("cls");
- int vowelCount, aCount;
- vowelCount = aCount = 0;
- for (int i = 0; i < Size; i++){
- if (str[i] == 'a')
- aCount++;
- for (int j = 0; j < 6; j++){
- if (str[i] == vowel[j])
- vowelCount++;
- }
- }
- printf("[Обработка строки]\nКол-во гласных: %d\nКол-во букв 'а': %d\n", vowelCount, aCount);
- printf("Нажмите любую клавишу для продолжения...\n");
- _getch();
- }
- void Output_Str(char* str){
- system("cls");
- printf("[Вывод строки]\nСтрока:\n%s\n", str);
- printf("Нажмите любую клавишу для продолжения...\n");
- _getch();
- }
- void Author(){
- system("cls");
- printf("[Автор]:\nИмя: Усов Максим Андреевич\nКонтакты:\nE-mail: usow.maxim2016@yandex.ru\nVK: vk.com/merykov\n");
- printf("Нажмите любую клавишу для продолжения...\n");
- _getch();
- }
- bool Exit(){
- system("cls");
- printf("[Выход]\n");
- return false;
- }
- int main()
- {
- SetConsoleCP(65001);
- SetConsoleOutputCP(65001);
- char* str;
- str = new char[16];
- int Size;
- char vowel[] = "aeiouy";
- bool RUN = true;
- bool f = false;
- while(RUN){
- system("cls");
- printf("1.Ввод строки вручную\n2.Рандомное заполнение строки\n");
- if (f)
- printf("3.Обработка строки\n4.Вывод строки\n");
- printf("5.Автор\n6.Выход\n");
- switch(_getch()){
- case '1':
- {
- Input_Str(str, Size);
- f = true;
- break;
- }
- case '2':
- {
- Rand_Str(str, Size);
- f = true;
- break;
- }
- case '3':
- {
- if (f)
- Obr_Str(str, Size, vowel);
- break;
- }
- case '4':
- if (f)
- Output_Str(str);
- break;
- case '5':
- Author();
- break;
- case '6':
- RUN = Exit();
- break;
- default:
- break;
- }
- }
- delete[] str;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement