Advertisement
MrGhost75

LAB8_VAR3

May 22nd, 2020
913
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.10 KB | None | 0 0
  1. //Лаб. №8, Вариант 3. ПС-19-1. Дьяченко Максим Артёмович.
  2.  
  3. #pragma warning(disable:4996)
  4. #include <iostream>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <conio.h>
  8. #include <windows.h>
  9.  
  10. using namespace std;
  11.  
  12. int main() {
  13.  
  14.     setlocale(LC_ALL, "Rus");
  15.  
  16.     //Объявим входной текст(строку) как массив чаров.
  17.     char line[150], numbers[] = "0123456789";
  18.    
  19.  
  20.     //Запрашиваем ввод текста, длиной не более 100 символов.
  21.     //Если ввели текст больше 100 символов, повторим процедуру выше.
  22.     do {
  23.         printf("Введите текст (не более 100 символов) на английском языке: \n");
  24.         printf("Цену в вашем тексте Вы указываете в таком формате : ХХ - Х.УУ, где вместо X и Y у Вас любая цифра.\n");
  25.         gets_s(line);
  26.     } while (strlen(line) >= 100);
  27.  
  28.     //Объявим указатели, которые будем использовать для доступа к элементам массива line.
  29.     //Присвоим указателям адреса первого и последнего символов массива line.
  30.     char* position, * position1, * position2;
  31.     position2 = (line + strlen(line));
  32.     position1 = line;   position = line;
  33.     if (*position1 == '.') position1++;
  34.     position = strchr(position1, '.');
  35.  
  36.     //Цикл, в котором мы будем каждый набор символов XX-X.YY
  37.     //менять на XX-X грн.YY коп., где X и Y - элементы массива numbers.
  38.     while (position) {
  39.         //Присвоим указателям адреса символов до '.' и после '.'
  40.         position1 = position;
  41.         position--; position1++;
  42.  
  43.         //Проверяем, являются ли 2 символа после '.', а также символ до '.'
  44.         //элементами массива numbers, т.е. числами. Также проверяем, не стоит
  45.         //ли после точки Enter, или же конец строки.
  46.         if (strchr(numbers, *position1++) && strchr(numbers, *position1) && strchr(numbers, *position) && (*position1 != '\0')) {
  47.             position1 += 2;
  48.  
  49.             //Сдвигаем наш текст вправо, добавляя недостающие слова "грн" и "коп".
  50.             memmove(position1, ++position, strlen(position) + 1);
  51.             strcpy(position, " грн");
  52.             *position1 = '.';
  53.             position = position1 + 3;
  54.             position1 = position + 5;
  55.  
  56.             memmove(position1, position, strlen(position) + 1);
  57.             strcpy(position, " коп");
  58.             *(--position1) = '.';
  59.             position1++;
  60.             position2 += 9;
  61.         }
  62.         position = strchr(position1, '.');
  63.     }
  64.  
  65.     //Добавим в конец отредактированного текста символ конца строки.
  66.     *position2 = '\0';
  67.  
  68.     //Выводим отредактированный текст.
  69.     printf("Ваш текст после редактирования:\n");
  70.     printf("%s \n", line);
  71.     system("pause");
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement