Добавил io

This commit is contained in:
2024-12-03 13:43:20 +03:00
parent ac9f397041
commit dea4067621
5 changed files with 122 additions and 15 deletions

91
lab1/io.cpp Normal file
View File

@@ -0,0 +1,91 @@
#include "io.h"
void clearBuffer() {
while ((getchar()) != '\n');
}
char* inputString(int maxLen)
{
char* result = new char[maxLen];
while (true)
{
if (scanf_s("%[^\n]", result, maxLen) != 1) {
clearBuffer();
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %d <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>.\n", maxLen - 1);
continue;
}
break;
}
clearBuffer();
return result;
}
int inputNumber(int minVal, int maxVal)
{
int result;
while (true)
{
if (scanf("%d", &result) != 1) {
clearBuffer();
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>.\n");
continue;
}
else if (result < minVal || result > maxVal) {
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> %d <20><> %d.\n", minVal, maxVal);
continue;
}
break;
}
clearBuffer();
return result;
}
int inputNumber(int minVal)
{
int result;
while (true)
{
if (scanf("%d", &result) != 1) {
clearBuffer();
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>.\n");
continue;
}
else if (result < minVal) {
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>! <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> %d.\n", minVal);
continue;
}
break;
}
clearBuffer();
return result;
}
bool userApprove()
{
while (true)
{
char* userInput = inputString(4);
if (std::strcmp(userInput, "yes") == 0 || std::strcmp(userInput, "y") == 0) {
return true;
}
else if (std::strcmp(userInput, "no") == 0 || std::strcmp(userInput, "n") == 0) {
return false;
}
else {
printf("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> yes (y) <20><><EFBFBD> no (n).\n");
}
}
return false;
}
void waitForEnter()
{
while ((getchar()) != '\n');
}

15
lab1/io.h Normal file
View File

@@ -0,0 +1,15 @@
#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
void clearBuffer();
char* inputString(int maxLen);
int inputNumber(int minVal, int maxVal);
int inputNumber(int minVal);
bool userApprove();
void waitForEnter();

View File

@@ -1,20 +1,9 @@
// lab1.cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы. #include <iostream>
// #include "io.h"
#include <iostream> using namespace std;
int main() int main()
{ {
std::cout << "Hello World!\n"; std::cout << "Hello World!\n";
} }
// Запуск программы: CTRL+F5 или меню "Отладка" > "Запуск без отладки"
// Отладка программы: F5 или меню "Отладка" > "Запустить отладку"
// Советы по началу работы
// 1. В окне обозревателя решений можно добавлять файлы и управлять ими.
// 2. В окне Team Explorer можно подключиться к системе управления версиями.
// 3. В окне "Выходные данные" можно просматривать выходные данные сборки и другие сообщения.
// 4. В окне "Список ошибок" можно просматривать ошибки.
// 5. Последовательно выберите пункты меню "Проект" > "Добавить новый элемент", чтобы создать файлы кода, или "Проект" > "Добавить существующий элемент", чтобы добавить в проект существующие файлы кода.
// 6. Чтобы снова открыть этот проект позже, выберите пункты меню "Файл" > "Открыть" > "Проект" и выберите SLN-файл.

View File

@@ -127,8 +127,12 @@
</Link> </Link>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="io.cpp" />
<ClCompile Include="lab1.cpp" /> <ClCompile Include="lab1.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<ClInclude Include="io.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets"> <ImportGroup Label="ExtensionTargets">
</ImportGroup> </ImportGroup>

View File

@@ -18,5 +18,13 @@
<ClCompile Include="lab1.cpp"> <ClCompile Include="lab1.cpp">
<Filter>Исходные файлы</Filter> <Filter>Исходные файлы</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="io.cpp">
<Filter>Исходные файлы</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="io.h">
<Filter>Файлы заголовков</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
</Project> </Project>