Add project files.

This commit is contained in:
07092023 2023-11-21 12:56:20 +01:00
parent 38faf4fa1c
commit 23bc0aaee9
4 changed files with 363 additions and 0 deletions

175
soustavy.cpp Normal file
View File

@ -0,0 +1,175 @@
// soustavy.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <iostream>
#include <vector>
#include <windows.h>
static HANDLE s_console;
#define COLOR_TEXT 0b0111
#define COLOR_ZERO 0b1000
#define COLOR_PIVOT_OK 0b1010
#define COLOR_PIVOT_BAD 0b1100
#define COLOR_OTHER 0b1111
#define COLOR_BVEC 0b0111
void Color(WORD color) {
SetConsoleTextAttribute(s_console, color);
}
class Matrix {
size_t m_m;
size_t m_n;
std::vector<float> m_data;
public:
Matrix(size_t m, size_t n) : m_m(m), m_n(n), m_data(m* n) {}
float& At(size_t i, size_t j) { return m_data[i * m_n + j]; }
void Print(const char* format) {
size_t min_pivot = 0;
for (size_t i = 0; i < m_m; ++i) {
size_t pivot = 0;
for (size_t j = 0; j < m_n; ++j) {
auto val = At(i, j);
WORD color = COLOR_OTHER;
if (j == m_n - 1) {
color = COLOR_BVEC;
}
else if (std::abs(val) < 0.00001f) {
if (pivot == j) ++pivot;
color = COLOR_ZERO;
}
else if (pivot == j) {
color = pivot >= min_pivot ? COLOR_PIVOT_OK : COLOR_PIVOT_BAD;
min_pivot = pivot + 1;
}
if (j == m_n - 1) {
Color(COLOR_TEXT);
printf(" |");
}
Color(color);
printf(format, val);
}
printf("\n");
}
Color(COLOR_TEXT);
}
};
template <class T>
T Input(const char* prompt) {
std::cout << prompt << " = ";
T a;
std::cin >> a;
return a;
}
int main() {
s_console = GetStdHandle(STD_OUTPUT_HANDLE);
Color(COLOR_TEXT);
auto m = Input<size_t>("m");
auto n = Input<size_t>("n");
std::vector<Matrix> history;
{
Matrix mat(m, n);
for (size_t i = 0; i < m; ++i) {
for (size_t j = 0; j < n; ++j) {
//mat.At(i, j) = 0.0f;
std::cin >> mat.At(i, j);
}
}
history.push_back(mat);
}
printf("\nupravy:\n s <i1> <i2> ....... prohodit radky i1 a i2\n m <i> <k> ......... vynasobit radek i konstantou k\n a <k> <i1> <i2> ... pricist k-nasobek i1 k i2\n f <format> ........ zmenit format vystupu\n u ................. undo\n");
std::string fmt("%4.0f");
while (true) {
history.push_back(history.back());
auto& mat = history.back();
printf("\n");
mat.Print(fmt.c_str());
printf("\n? ");
char op;
size_t i1, i2;
float k, temp;
std::cin >> op;
switch (op) {
case 's': {
std::cin >> i1 >> i2;
--i1; --i2;
for (size_t j = 0; j < n; ++j) {
temp = mat.At(i1, j);
mat.At(i1, j) = mat.At(i2, j);
mat.At(i2, j) = temp;
}
break;
}
case 'm': {
std::cin >> i1 >> k;
--i1;
for (size_t j = 0; j < n; ++j)
mat.At(i1, j) *= k;
break;
}
case 'a': {
std::cin >> k >> i1 >> i2;
--i1; --i2;
for (size_t j = 0; j < n; ++j)
mat.At(i2, j) += mat.At(i1, j) * k;
break;
}
case 'f':
std::cin >> fmt;
break;
case 'u':
if (history.size() > 2) {
history.pop_back();
history.pop_back();
}
break;
default:
break;
}
}
//printf("m(%u) n(%u)\n", m, n);
std::cout << "Hello World!\n";
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file

31
soustavy.sln Normal file
View File

@ -0,0 +1,31 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.7.34031.279
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "soustavy", "soustavy.vcxproj", "{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x64.ActiveCfg = Debug|x64
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x64.Build.0 = Debug|x64
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x86.ActiveCfg = Debug|Win32
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Debug|x86.Build.0 = Debug|Win32
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x64.ActiveCfg = Release|x64
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x64.Build.0 = Release|x64
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x86.ActiveCfg = Release|Win32
{00AD13BE-EEF1-47A4-96ED-EBF98C966EB3}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {5161ABFE-D95A-41AA-AF42-33EBF8D1224E}
EndGlobalSection
EndGlobal

135
soustavy.vcxproj Normal file
View File

@ -0,0 +1,135 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<VCProjectVersion>17.0</VCProjectVersion>
<Keyword>Win32Proj</Keyword>
<ProjectGuid>{00ad13be-eef1-47a4-96ed-ebf98c966eb3}</ProjectGuid>
<RootNamespace>soustavy</RootNamespace>
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="soustavy.cpp" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

22
soustavy.vcxproj.filters Normal file
View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="soustavy.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>