Обновить main.cpp

Не работает флаг, не сделана проверка буква в 1
This commit is contained in:
oltnd
2024-11-01 22:44:06 +03:00
parent f0236b4504
commit 8a578e5461

143
main.cpp
View File

@@ -4,28 +4,13 @@
#include <iostream>
#include <fstream>
#include <numeric>
#include <Windows.h>
#include <windows.h>
#define _USE_MATH_DEFINES
#include<cmath>
#include <cmath>
const double PI = 3.141592653589793238463;
// Функция для вычисления площади прямоугольника
double rectangleArea(double length, double width) {
return length * width;
}
// Функция для вычисления площади треугольника
double triangleArea(double base, double height) {
return 0.5 * base * height;
}
// Функция для вычисления площади круга
double circleArea(double radius) {
return PI * radius * radius;
}
using namespace std;
int sign(int x) {
int sign(double x) {
if (x > 0) {
return 1;
}
@@ -36,6 +21,28 @@ int sign(int x) {
return -1;
}
}
double rectangleArea(double length, double width) {
return length * width;
}
double triangleArea(double a, double b, double c) {
// Проверка на существование треугольника
if ((a + b > c) && (a + c > b) && (b + c > a)) {
// Формула Герона
double s = (a + b + c) / 2;
return sqrt(s * (s - a) * (s - b) * (s - c));
}
else {
cout << "Треугольник с такими сторонами не существует." << endl;
return 0;
}
}
double circleArea(double radius) {
const double PI = 3.14159;
return PI * radius * radius;
}
void z3() {
int choice;
cout << "Выберите фигуру для расчета площади:\n";
@@ -47,7 +54,6 @@ void z3() {
switch (choice) {
case 1: {
//3 стороны
double length, width;
cout << "Введите длину и ширину прямоугольника: ";
cin >> length >> width;
@@ -55,10 +61,13 @@ void z3() {
break;
}
case 2: {
double base, height;
cout << "Введите основание и высоту треугольника: ";
cin >> base >> height;
cout << "Площадь треугольника: " << triangleArea(base, height) << endl;
double a, b, c;
cout << "Введите три стороны треугольника: ";
cin >> a >> b >> c;
double area = triangleArea(a, b, c);
if (area > 0) {
cout << "Площадь треугольника: " << area << endl;
}
break;
}
case 3: {
@@ -72,27 +81,66 @@ void z3() {
cout << "Неверный выбор!" << endl;
}
}
void z4() {
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
//циклы
SetConsoleTextAttribute(hConsole, 240);
cout << " " << endl;
SetConsoleTextAttribute(hConsole, 16);
cout << " " << endl;
SetConsoleTextAttribute(hConsole, 64);
cout << " " << endl;
SetConsoleTextAttribute(hConsole, 0);
cout << endl;
SetConsoleTextAttribute(hConsole, 15);
cout << endl;
const int width = 20; // Ширина флага
const int height = 10; // Высота флага
const int circleRadius = 3; // Радиус круга
const int centerX = width / 2;
const int centerY = height / 2;
for (int y = 0; y < height; y++) {
for (int x = 0; x < width; x++) {
// Определяем, находится ли точка (x, y) внутри круга
int dx = x - centerX;
int dy = y - centerY;
if (dx * dx + dy * dy <= circleRadius * circleRadius) {
SetConsoleTextAttribute(hConsole, 4); // Красный цвет
}
else {
SetConsoleTextAttribute(hConsole, 15); // Белый цвет
}
cout << " "; // Два пробела для более широкого изображения
}
cout << endl;
}
SetConsoleTextAttribute(hConsole, 15); // Сбрасываем цвет на белый
}
bool isValidRoman(const string& roman) {
// Проверяем, соответствует ли строка правилам римских цифр
for (size_t i = 0; i < roman.size(); ++i) {
// Ограничиваем последовательности, которые могут предшествовать большим символам
if (roman[i] == 'I' && i + 1 < roman.size() && roman[i + 1] != 'V' && roman[i + 1] != 'X' && roman[i + 1] != 'I') {
return false;
}
if (roman[i] == 'X' && i + 1 < roman.size() && roman[i + 1] != 'L' && roman[i + 1] != 'C' && roman[i + 1] != 'X') {
return false;
}
if (roman[i] == 'C' && i + 1 < roman.size() && roman[i + 1] != 'D' && roman[i + 1] != 'M' && roman[i + 1] != 'C') {
return false;
}
}
// Проверка на недопустимые повторения (например, IIII, VV, LL и т.д.)
string invalidPatterns[] = { "IIII", "VV", "XXXX", "LL", "CCCC", "DD", "MMMM" };
for (const string& pattern : invalidPatterns) {
if (roman.find(pattern) != string::npos) {
return false;
}
}
return true;
}
void z6() {
string roman;
cout << "Введите римское число: ";
cin >> roman;
//правила
// Проверка на корректность римского числа
if (!isValidRoman(roman)) {
cerr << "Некорректное римское число." << endl;
return;
}
int result = 0; // Итоговое значение
int prevValue = 0; // Предыдущее значение для сравнения
@@ -128,8 +176,7 @@ void z6() {
cout << "Арабское число: " << result << endl;
}
void z2() {
int number;
//0.9
double number;
cout << "Введите число: ";
cin >> number;
@@ -139,7 +186,7 @@ void z2() {
}
int z1() {
// проверка букав
// проверка букав не пашет
ofstream outFile("numbers.txt"); // Открываем файл для записи
if (!outFile) {
@@ -148,12 +195,22 @@ int z1() {
}
int numbers[10]; // Массив для хранения 10 чисел
int a;
// Вводим 10 чисел и записываем их в файл через пробел
cout << "Введите 10 чисел: ";
for (int i = 0; i < 10; ++i) {
cin >> numbers[i];
outFile << numbers[i] << " ";
cin >> a;
if (int(a)) {
a >> numbers[i];
outFile << numbers[i] << " ";
}
else {
cout << "Давай тут без этого вот всего, нраписано 'числа'"<<endl;
cin.clear();
cin.ignore();
z1();
}
}
outFile.close(); // Закрываем файл после записи
@@ -236,6 +293,8 @@ void launchTasks() {
}
int main() {
setlocale(LC_ALL, "");
launchTasks();
return 0;
}