Advertisement
JewishCat

labs5

Apr 10th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.11 KB | None | 0 0
  1. // labs.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <string>
  6. #include <iostream>
  7.  
  8. //Вариант 16
  9. //Ввести строку, в которую могут входить только цифры и буквы.Распечатать те
  10. //группы букв, в которых буква А встречается не менее двух раз.
  11. //(Группа букв - это последовательность букв, обрамленная цифрами).
  12. #pragma warning(disable : 4996) // Отключение предупреждения компилятора. Ругается на то, что функция strncpy может зайти за границу массива, хотя тут все границы ясные.
  13. using namespace std;
  14. int main()
  15. {
  16.     setlocale(LC_ALL, "");
  17.     char *str = new char[128];
  18.     char bykva = 'A';
  19.     cout << "Vvedite stroky(ne bol`we 128 simvolov): ";
  20.     gets_s(str,128);
  21.     cout << "Vvedite bykvy: ";
  22.     cin >> bykva;
  23.     if (!isalpha(bykva)) {
  24.         cout << "Вы ввели не букву!";
  25.         return 0;
  26.     }
  27.     int nom = strlen(str), last = 0, buffer = 0;
  28.     for (int i = 0; i < nom;i++) {
  29.         if (isdigit(str[i])) {
  30.             if (buffer != i) {
  31.                 char *buf = new char[i - buffer - 1]; // создаем динамический массив
  32.                 strncpy(buf, str + buffer + 1, i - buffer - 1); //Копируем строку в буферную строку для работы с ней
  33.                 buf[i - buffer - 1] = 0; //на конце динамического массива ставил 0, для указания конца массива, иначе в консоле будет мусор
  34.                 int temp = 0;
  35.                 for (int a = 0; a < i - buffer; a++) {
  36.                     if (buf[a] == bykva) {
  37.                         temp++; //подсчёт кол-во искаемых букв в слове.
  38.                     }
  39.                 }
  40.                 if (temp >= 2) {
  41.                     cout << "Stroka " << buf << " soder)I(ut >= 2 bykv " << bykva << endl;
  42.                 }
  43.                 buffer = i;
  44.             }
  45.             else {
  46.                 buffer = i;
  47.             }
  48.         }
  49.     }
  50.  
  51.     system("pause");
  52.  
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement