
- •Пользовательские типы
- •Ограничение, условленное исполнением на компьютере
- •Организация интерфейса пользователя
- •Макеты ввода/вывода
- •Средства обеспечения ввода/вывода
- •Параметры функций
- •Блок-схемы. Алгоритм решения.
- •Функции Get, Set
- •Программа Версия 1. Функция ReadMark1
- •Версия 1.2 Полная программа
- •Версия 2.1. Полная программа
- •Версия 2.2. Отличающаяся часть от версии 2.1
Версия 2.2. Отличающаяся часть от версии 2.1
Сеттер и геттер для числового значения:
void SetKoll(ifstream& f, int s) {
f >> s; kolll = s;}
int GetKoll() {return kolll; }
Функции для версии 2.2
int ReadMark1(ifstream& f, ofstream& out)
{
setlocale(LC_ALL, "ru");
char s, MM;
int d;
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;
}
SetKoll(f, s);
LLL = GetKoll();
if (f.eof()) {cout << "не достаточно данных для выполнения";
out << "не достаточно данных для выполнения";
flag = 1; return 0; }
if ((LLL <= 0) && (LLL > N)) {
cout << "Символ не является числом, программа не выполняется дальше\n";
out << "Символ не является числом, программа не выполняется дальше\n";
flag = 1; return 0; }
cout << "Настоящее количество символов в строке " << LLL << "\n";
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 > LLL) 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комбинации не существует";}}}
Результаты работы программы
Версия 1.1:
Версия 1.2:
Версия 2.1:
Версия 2.2:
Вывод
В процессе работы над программой были изучены структуры, обращение к их полям и массивы таких структур. Также изучены классы и работа с ними. Написанные программы работают корректно.