Обновить main.cpp
Не работает флаг, не сделана проверка буква в 1
This commit is contained in:
143
main.cpp
143
main.cpp
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user