Добавил:
надеюсь это добро кому-то поможет Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 сем лаба 1 Обращение к полям структуры. Массивы структур. Понятие класса и его реализация в языке С++..docx
Скачиваний:
1
Добавлен:
09.07.2025
Размер:
457.17 Кб
Скачать

Версия 2.1. Полная программа

#include <iostream>

#include <fstream>

using namespace std;

const unsigned N = 100;

class StrM {

char A[N]; char Mark; int kol; char symbol; int L; int count; int t = 0; int flag = 0; int LL;

public:

void SetL(unsigned t) {L = t;}

int GetL() {return L;}

void SetMark(ifstream &f, char &s) {f >> s;Mark = s;}

char GetMark() {return Mark;}

void SetKol(ifstream& f, int s) {f >> s;kol = s;}

int GetKol() {return kol;}

void SetSymb(ifstream& f, char s) {f >> s;symbol = s;}

char GetSymb() {return symbol;}

char GetA(unsigned i) {return A[i];}

int ReadMark1(ifstream& f, ofstream& out)

{

setlocale(LC_ALL, "ru");char s, MM;

SetMark(f, s); MM = GetMark();

if (f.eof()) {cout << "Проблема, файл пуст!";out << "Проблема, файл пуст!";flag = 1;}

else

{SetSymb(f, s);symbol = GetSymb();

cout << "Символ, который ищется в строке: " << symbol << "\n";

out << "Символ, который ищется в строке: " << symbol << "\n";

if (f.eof()) {

cout << "не достаточно данных для выполнения";

out << "не достаточно данных для выполнения";

flag = 1;return 0;

}

SetKol(f, s);kol = GetKol();

if ((GetKol() > 0) && (GetKol() <= N)) {

cout << "Количество таких символов: " << kol << "\n";

out << "Количество таких символов: " << kol << "\n";

if (f.eof()) {

cout << "\nтекст состоит из пустой строки";

out << "\nтекст состоит из пустой строки";

flag = 1;return 0;

}

else {

int i = 0;f.unsetf(ios::skipws);cout << "\nстрока: ";

while (1) {

f >> s; if (s == MM) break; if (f.eof()) break;A[i] = s;cout << GetA(i);

i++;t++;if (i > N) break;

}}}

else {cout << "Символ не является числом, он отрицателен или символов не хватает, программа не выполняется дальше\n";out << "Символ не является числом, он отрицатален или символов не хватает, программа не выполняется дальше\n";

flag = 1; return 0; }}

SetL(t); LL = GetL();}

void outMark(ofstream& out)

{int i = 0; setlocale(LC_ALL, "RUS");out << "\nСчитаная строка:";cout << "\nСчитаная строка:";

for (i = 0; i < LL; i++) {

out << GetA(i); cout << GetA(i); }

out << "\n";}

void ProcessMark(ofstream& out)

{if (flag == 0) {for (int i = 0; i < LL; i++) {

if (GetA(i) == symbol) count++;

if ((count == kol)) break ;

if ((GetA(i) == ' ') || (GetA(i) != symbol)) count = 0; }

if (count == kol) {cout << "\nкомбинация существует";}

else {cout << "\nкомбинации не существует";}}}

void OutMark(ofstream& out)

{if (flag == 0) {if (kol == count) out << "\nДанная комбинация существует";

else out << "\nДанной комбинации не существует";}}};

void main()

{setlocale(LC_ALL, "ru");StrM a1; ifstream f("inM.txt", ios::in);

if (!f.is_open())

{cout << "Ошибка открытия исходного файла" << "\n";}

ofstream out("out.txt", ios::out);

if (!out.is_open())

{cout << "Ошибка открытия файла записи" << "\n";}

a1.ReadMark1(f, out); a1.outMark(out); a1.ProcessMark(out); a1.OutMark(out);f.close();out.close();}