Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // labs.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- #include <string>
- #include <iostream>
- //Вариант 16
- //Ввести строку, в которую могут входить только цифры и буквы.Распечатать те
- //группы букв, в которых буква А встречается не менее двух раз.
- //(Группа букв - это последовательность букв, обрамленная цифрами).
- #pragma warning(disable : 4996) // Отключение предупреждения компилятора. Ругается на то, что функция strncpy может зайти за границу массива, хотя тут все границы ясные.
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "");
- char *str = new char[128];
- char bykva = 'A';
- cout << "Vvedite stroky(ne bol`we 128 simvolov): ";
- gets_s(str,128);
- cout << "Vvedite bykvy: ";
- cin >> bykva;
- if (!isalpha(bykva)) {
- cout << "Вы ввели не букву!";
- return 0;
- }
- int nom = strlen(str), last = 0, buffer = 0;
- for (int i = 0; i < nom;i++) {
- if (isdigit(str[i])) {
- if (buffer != i) {
- char *buf = new char[i - buffer - 1]; // создаем динамический массив
- strncpy(buf, str + buffer + 1, i - buffer - 1); //Копируем строку в буферную строку для работы с ней
- buf[i - buffer - 1] = 0; //на конце динамического массива ставил 0, для указания конца массива, иначе в консоле будет мусор
- int temp = 0;
- for (int a = 0; a < i - buffer; a++) {
- if (buf[a] == bykva) {
- temp++; //подсчёт кол-во искаемых букв в слове.
- }
- }
- if (temp >= 2) {
- cout << "Stroka " << buf << " soder)I(ut >= 2 bykv " << bykva << endl;
- }
- buffer = i;
- }
- else {
- buffer = i;
- }
- }
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement