From 67a2391619e72d82e98b11d9f0e257816211ffe7 Mon Sep 17 00:00:00 2001 From: Damimani <41192030+Damimani@users.noreply.github.com> Date: Sat, 24 Oct 2026 09:35:47 +0200 Subject: [PATCH] init --- .gitignore | 428 ++++++++++++++++++ 1003/1003.slnx | 8 + 1003/1003/1003.vcxproj | 151 ++++++ 1003/1003/1003.vcxproj.filters | 30 ++ 1003/1003/feladat1.cpp | 101 +++++ 1003/1003/feladat1.h | 6 + 1003/1003/main.cpp | 13 + 1003/UnitTest1/UnitTest1.cpp | 151 ++++++ 1003/UnitTest1/UnitTest1.vcxproj | 192 ++++++++ 1003/UnitTest1/UnitTest1.vcxproj.filters | 30 ++ 1003/UnitTest1/pch.cpp | 5 + 1003/UnitTest1/pch.h | 12 + feladat2/UnitTest1/UnitTest1.cpp | 156 +++++++ feladat2/UnitTest1/UnitTest1.vcxproj | 192 ++++++++ feladat2/UnitTest1/UnitTest1.vcxproj.filters | 30 ++ feladat2/UnitTest1/pch.cpp | 5 + feladat2/UnitTest1/pch.h | 12 + feladat2/feladat2.slnx | 8 + feladat2/feladat2/feladat2.cpp | 139 ++++++ feladat2/feladat2/feladat2.h | 13 + feladat2/feladat2/feladat2.vcxproj | 151 ++++++ feladat2/feladat2/feladat2.vcxproj.filters | 30 ++ feladat2/feladat2/feladat2/feladat2.vcxproj | 151 ++++++ .../feladat2/feladat2.vcxproj.filters | 30 ++ feladat2/feladat2/main.cpp | 27 ++ feladat3/feladat3.slnx | 7 + feladat3/feladat3/dataset/testin10.dat | Bin 0 -> 20 bytes feladat3/feladat3/dataset/testin100.dat | Bin 0 -> 200 bytes feladat3/feladat3/dataset/testin10000.dat | Bin 0 -> 20000 bytes feladat3/feladat3/dataset/testin5.dat | 1 + feladat3/feladat3/dataset/testin50.dat | 1 + feladat3/feladat3/datasets.txt | 12 + feladat3/feladat3/feladat3.cpp | 73 +++ feladat3/feladat3/feladat3.h | 15 + feladat3/feladat3/feladat3.vcxproj | 151 ++++++ feladat3/feladat3/feladat3.vcxproj.filters | 30 ++ feladat3/feladat3/main.cpp | 27 ++ 37 files changed, 2388 insertions(+) create mode 100644 .gitignore create mode 100644 1003/1003.slnx create mode 100644 1003/1003/1003.vcxproj create mode 100644 1003/1003/1003.vcxproj.filters create mode 100644 1003/1003/feladat1.cpp create mode 100644 1003/1003/feladat1.h create mode 100644 1003/1003/main.cpp create mode 100644 1003/UnitTest1/UnitTest1.cpp create mode 100644 1003/UnitTest1/UnitTest1.vcxproj create mode 100644 1003/UnitTest1/UnitTest1.vcxproj.filters create mode 100644 1003/UnitTest1/pch.cpp create mode 100644 1003/UnitTest1/pch.h create mode 100644 feladat2/UnitTest1/UnitTest1.cpp create mode 100644 feladat2/UnitTest1/UnitTest1.vcxproj create mode 100644 feladat2/UnitTest1/UnitTest1.vcxproj.filters create mode 100644 feladat2/UnitTest1/pch.cpp create mode 100644 feladat2/UnitTest1/pch.h create mode 100644 feladat2/feladat2.slnx create mode 100644 feladat2/feladat2/feladat2.cpp create mode 100644 feladat2/feladat2/feladat2.h create mode 100644 feladat2/feladat2/feladat2.vcxproj create mode 100644 feladat2/feladat2/feladat2.vcxproj.filters create mode 100644 feladat2/feladat2/feladat2/feladat2.vcxproj create mode 100644 feladat2/feladat2/feladat2/feladat2.vcxproj.filters create mode 100644 feladat2/feladat2/main.cpp create mode 100644 feladat3/feladat3.slnx create mode 100644 feladat3/feladat3/dataset/testin10.dat create mode 100644 feladat3/feladat3/dataset/testin100.dat create mode 100644 feladat3/feladat3/dataset/testin10000.dat create mode 100644 feladat3/feladat3/dataset/testin5.dat create mode 100644 feladat3/feladat3/dataset/testin50.dat create mode 100644 feladat3/feladat3/datasets.txt create mode 100644 feladat3/feladat3/feladat3.cpp create mode 100644 feladat3/feladat3/feladat3.h create mode 100644 feladat3/feladat3/feladat3.vcxproj create mode 100644 feladat3/feladat3/feladat3.vcxproj.filters create mode 100644 feladat3/feladat3/main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d5219a8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,428 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates +*.env + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ + +[Dd]ebug/x64/ +[Dd]ebugPublic/x64/ +[Rr]elease/x64/ +[Rr]eleases/x64/ +bin/x64/ +obj/x64/ + +[Dd]ebug/x86/ +[Dd]ebugPublic/x86/ +[Rr]elease/x86/ +[Rr]eleases/x86/ +bin/x86/ +obj/x86/ + +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +[Aa][Rr][Mm]64[Ee][Cc]/ +bld/ +[Oo]bj/ +[Oo]ut/ +[Ll]og/ +[Ll]ogs/ + +# Build results on 'Bin' directories +**/[Bb]in/* +# Uncomment if you have tasks that rely on *.refresh files to move binaries +# (https://github.com/github/gitignore/pull/3736) +#!**/[Bb]in/*.refresh + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* +*.trx + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Approval Tests result files +*.received.* + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ +.artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.idb +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +# but not Directory.Build.rsp, as it configures directory-level build defaults +!Directory.Build.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +**/.paket/paket.exe +paket-files/ + +# FAKE - F# Make +**/.fake/ + +# CodeRush personal settings +**/.cr/personal + +# Python Tools for Visual Studio (PTVS) +**/__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +#tools/** +#!tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog +MSBuild_Logs/ + +# AWS SAM Build and Temporary Artifacts folder +.aws-sam + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +**/.mfractor/ + +# Local History for Visual Studio +**/.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +**/.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +!.vscode/*.code-snippets + +# Local History for Visual Studio Code +.history/ + +# Built Visual Studio Code Extensions +*.vsix + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# Official VS Code C# Dev Kit Extension exclusion +#*.lscache diff --git a/1003/1003.slnx b/1003/1003.slnx new file mode 100644 index 0000000..52534d3 --- /dev/null +++ b/1003/1003.slnx @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/1003/1003/1003.vcxproj b/1003/1003/1003.vcxproj new file mode 100644 index 0000000..3ada692 --- /dev/null +++ b/1003/1003/1003.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 18.0 + Win32Proj + {2df8eb88-3a9a-4710-82c2-d18b1d5d4298} + My1003 + 10.0 + + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/1003/1003/1003.vcxproj.filters b/1003/1003/1003.vcxproj.filters new file mode 100644 index 0000000..4e6cec0 --- /dev/null +++ b/1003/1003/1003.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/1003/1003/feladat1.cpp b/1003/1003/feladat1.cpp new file mode 100644 index 0000000..da8aca3 --- /dev/null +++ b/1003/1003/feladat1.cpp @@ -0,0 +1,101 @@ +//Tóth Dániel Mátyás | IFPQYY | v1 + +double feladat1(const char* s) { + if (s == nullptr) + { + return 0; + } + bool neg = false; + bool valid = true; + int e = 0; + int stage = 0; + double w = 0; + double f = 0; + int i = 0; + + int n; //only exists here because it cries when its intialised in the switch + + while (valid && (s[i] != '\0')) { + switch (s[i]) { + case ' ': + case '\r': + case '\n': + case '\t': + case '\f': + case '\v': + if (stage > 0) { + valid = false; + } + break; + + case '+': + if (stage > 0) { + valid = false; + } else { + stage = 1; + } + break; + case '-': + if (stage > 0) { + valid = false; + } else { + stage = 1; + neg = true; + } + break; + + case '.': + if (stage > 1) { + valid = false; + } else { + stage = 2; + } + break; + + case 'e': + case 'E': + if (stage > 2) { + valid = false; + } else { + stage = 3; + } + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + n = s[i] - '0'; + if (stage < 2) { + stage = 1; + w = (w * 10) + n; + } else if (stage == 2) { + f = (f * 10) + n; + } else { + e = (e * 10) + n; + } + break; + default: + valid = false; + break; + } + i++; + } + while (f >= 1) + { + f = f / 10; + } + int pow = 1; + for (int j = 0; j < e; j++) + { + pow = pow * 10; + } + w = (w + f) * pow; + return neg ? -w : w; +} \ No newline at end of file diff --git a/1003/1003/feladat1.h b/1003/1003/feladat1.h new file mode 100644 index 0000000..221c4fb --- /dev/null +++ b/1003/1003/feladat1.h @@ -0,0 +1,6 @@ +#pragma once +#ifndef FELADAT1_H +double feladat1(const char* s); +#endif // !FELADAT1_H + +//Tóth Dániel Mátyás | IFPQYY | v1 \ No newline at end of file diff --git a/1003/1003/main.cpp b/1003/1003/main.cpp new file mode 100644 index 0000000..7d86e44 --- /dev/null +++ b/1003/1003/main.cpp @@ -0,0 +1,13 @@ +#include +#include +#include "feladat1.h" + +//Tóth Dániel Mátyás | IFPQYY | v1 +int main() { + double x; + const char* ert = ".5678"; + + x = feladat1(ert); + printf("\n%s -> %f", ert, x); + return 0; +} \ No newline at end of file diff --git a/1003/UnitTest1/UnitTest1.cpp b/1003/UnitTest1/UnitTest1.cpp new file mode 100644 index 0000000..1b9861b --- /dev/null +++ b/1003/UnitTest1/UnitTest1.cpp @@ -0,0 +1,151 @@ +#include "pch.h" +#include "CppUnitTest.h" +#include + +//Tóth Dániel Mátyás | IFPQYY | v1 + +using namespace Microsoft::VisualStudio::CppUnitTestFramework; + +namespace UnitTest1 +{ + TEST_CLASS(UnitTest1) + { + public: + + TEST_METHOD(FractionTest1) + { + Logger::WriteMessage("In feladat1"); + char* input = " \n\t\t-1234.5678"; + double exp = -1234.5678; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(FractionTest2) + { + Logger::WriteMessage("In feladat1"); + char* input = ".5678"; + double exp = 0.5678; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret, 1e-9); //1e-9 for tolerance, cause the two numbers are not *exactly* the same, theres a tiny difference in the millionth fraction somehwo + } + TEST_METHOD(FractionTest3) + { + Logger::WriteMessage("In feladat1"); + char* input = ".1234.5678"; + double exp = 0.1234; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret, 1e-9); + } + TEST_METHOD(OrderTest1) + { + Logger::WriteMessage("In feladat1"); + char* input = " -\n\t\t1234.5678"; + double exp = 0; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(OrderTest2) + { + Logger::WriteMessage("In feladat1"); + char* input = " \n\t\t1234-.5678"; + double exp = 1234; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(OrderTest3) + { + Logger::WriteMessage("In feladat1"); + char* input = " \n\t\t1234.56-78"; + double exp = 1234.56; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(OrderTest4) + { + Logger::WriteMessage("In feladat1"); + char* input = " + 1234.56-78"; + double exp = 0; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(NoNumTest1) + { + Logger::WriteMessage("In feladat1"); + char* input = " \n\t\t"; + double exp = 0; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(NoNumTest2) + { + Logger::WriteMessage("In feladat1"); + char* input = "kulturálatlanság"; + double exp = 0; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(ExponentTest1) + { + Logger::WriteMessage("In feladat1"); + char* input = "123e4"; + double exp = 1230000; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(ExponentTest2) + { + Logger::WriteMessage("In feladat1"); + char* input = ".123e4"; + double exp = 1230; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(ExponentTest3) + { + Logger::WriteMessage("In feladat1"); + char* input = "123.e4"; + double exp = 1230000; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(ExponentTest4) + { + Logger::WriteMessage("In feladat1"); + char* input = "123E4"; + double exp = 1230000; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(ExponentTest5) + { + Logger::WriteMessage("In feladat1"); + char* input = "123E.4"; + double exp = 123; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + TEST_METHOD(ExponentTest6) + { + Logger::WriteMessage("In feladat1"); + char* input = "12.3e4 "; + double exp = 123000; + double ret = feladat1(input); + + Assert::AreEqual(exp, ret); + } + }; +} diff --git a/1003/UnitTest1/UnitTest1.vcxproj b/1003/UnitTest1/UnitTest1.vcxproj new file mode 100644 index 0000000..277753f --- /dev/null +++ b/1003/UnitTest1/UnitTest1.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 18.0 + {5768658D-5753-57BE-9F55-89088097DC31} + Win32Proj + UnitTest1 + 10.0 + NativeUnitTestProject + + + + DynamicLibrary + true + v145 + Unicode + false + + + DynamicLibrary + false + v145 + true + Unicode + false + + + DynamicLibrary + true + v145 + Unicode + false + + + DynamicLibrary + false + v145 + true + Unicode + false + + + + + + + + + + + + + + + + + + + + + true + C:\Users\danit\Desktop\cpp\1003\1003;$(IncludePath) + + + true + + + false + + + false + + + + true + + + Use + Level3 + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + true + + + Use + Level3 + true + true + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + true + true + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + true + + + Use + Level3 + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + C:\Users\danit\Desktop\cpp\1003\1003\x64\Debug;$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + feladat1;%(AdditionalDependencies) + + + + + true + + + Use + Level3 + true + true + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + true + true + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + Create + Create + Create + Create + + + + + + + + + {2df8eb88-3a9a-4710-82c2-d18b1d5d4298} + + + + + + \ No newline at end of file diff --git a/1003/UnitTest1/UnitTest1.vcxproj.filters b/1003/UnitTest1/UnitTest1.vcxproj.filters new file mode 100644 index 0000000..f041cae --- /dev/null +++ b/1003/UnitTest1/UnitTest1.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/1003/UnitTest1/pch.cpp b/1003/UnitTest1/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/1003/UnitTest1/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/1003/UnitTest1/pch.h b/1003/UnitTest1/pch.h new file mode 100644 index 0000000..9d715b0 --- /dev/null +++ b/1003/UnitTest1/pch.h @@ -0,0 +1,12 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +// add headers that you want to pre-compile here + +#endif //PCH_H diff --git a/feladat2/UnitTest1/UnitTest1.cpp b/feladat2/UnitTest1/UnitTest1.cpp new file mode 100644 index 0000000..cccf769 --- /dev/null +++ b/feladat2/UnitTest1/UnitTest1.cpp @@ -0,0 +1,156 @@ +//Tóth Dániel Mátyás | IFPQYY | v2 +#include "pch.h" +#include "CppUnitTest.h" +#include "feladat2.h" + +using namespace Microsoft::VisualStudio::CppUnitTestFramework; + +namespace UnitTest1 +{ + TEST_CLASS(UnitTest1) + { + public: + + //Works weirdly, seems like the test methods are not isolated in themselves in this instance, will need to create and destroy in every + //seperate test to guarantee they will work as intended. If only these were in classes instead of being global..... + + TEST_METHOD(CreateTest1) + { + destroyfifo(); + Assert::AreEqual(OK, createfifo(10)); + destroyfifo(); + } + TEST_METHOD(CreateTest2) + { + createfifo(10); + Assert::AreEqual(NOK, createfifo(10)); + destroyfifo(); + } + TEST_METHOD(DestroyTest1) + { + createfifo(10); + Assert::AreEqual(OK, destroyfifo()); + } + TEST_METHOD(DestroyTest2) + { + destroyfifo(); + Assert::AreEqual(NOK, destroyfifo()); + } + + TEST_METHOD(PushTest1) + { + destroyfifo(); + createfifo(10); + Assert::AreEqual(OK, push('c')); + destroyfifo(); + } + TEST_METHOD(PopTest1) + { + destroyfifo(); + createfifo(10); + push('c'); + Assert::AreEqual('c', (char)pop()); + destroyfifo(); + } + TEST_METHOD(PopTest2) + { + destroyfifo(); + createfifo(10); + Assert::AreEqual(NOK, pop()); + destroyfifo(); + } + TEST_METHOD(PopTest3) + { + destroyfifo(); + createfifo(10); + push('c'); + Assert::AreEqual('c', (char)pop()); + Assert::AreEqual(NOK, pop()); + destroyfifo(); + } + TEST_METHOD(PeekTest1) + { + destroyfifo(); + createfifo(10); + push('c'); + Assert::AreEqual('c', (char)peek()); + Assert::AreEqual('c', (char)peek()); + destroyfifo(); + } + TEST_METHOD(PeekTest2) + { + destroyfifo(); + createfifo(10); + Assert::AreEqual(NOK, pop()); + destroyfifo(); + } + TEST_METHOD(FreespaceTest1) + { + destroyfifo(); + int s = 5; + createfifo(s); + for (int i = 0; i < s; i++) + { + push('t'); + } + Assert::AreEqual(0, freespace()); + destroyfifo(); + } + TEST_METHOD(FreespaceTest2) + { + destroyfifo(); + int s = 5; + createfifo(s); + for (int i = 0; i < s-1; i++) + { + push('t'); + } + Assert::AreEqual(1, freespace()); + destroyfifo(); + } + TEST_METHOD(CapacityTest1) + { + destroyfifo(); + int s = 5; + createfifo(s); + Assert::AreEqual(s, capacity()); + destroyfifo(); + } + TEST_METHOD(CapacityTest2) + { + destroyfifo(); + int s = 5; + createfifo(s); + push('c'); + Assert::AreEqual(s, capacity()); + destroyfifo(); + } + + TEST_METHOD(ClearTest1) + { + destroyfifo(); + createfifo(10); + push('c'); + Assert::AreEqual(OK, clearfifo()); + Assert::AreEqual(NOK, pop()); + Assert::AreEqual(NOK, peek()); + destroyfifo(); + } + TEST_METHOD(ClearTest2) + { + destroyfifo(); + Assert::AreEqual(NOK, clearfifo()); + } + TEST_METHOD(EnlargeTest) + { + destroyfifo(); + createfifo(2); //2 + push('c'); //1 + push('a'); //0 + push('d'); //doubles + Assert::AreEqual(4, capacity()); + + } + + }; +} diff --git a/feladat2/UnitTest1/UnitTest1.vcxproj b/feladat2/UnitTest1/UnitTest1.vcxproj new file mode 100644 index 0000000..9b9e950 --- /dev/null +++ b/feladat2/UnitTest1/UnitTest1.vcxproj @@ -0,0 +1,192 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 18.0 + {5768658D-5753-57BE-9F55-89088097DC31} + Win32Proj + UnitTest1 + 10.0 + NativeUnitTestProject + + + + DynamicLibrary + true + v145 + Unicode + false + + + DynamicLibrary + false + v145 + true + Unicode + false + + + DynamicLibrary + true + v145 + Unicode + false + + + DynamicLibrary + false + v145 + true + Unicode + false + + + + + + + + + + + + + + + + + + + + + true + C:\Users\danit\Desktop\cpp\feladat2\feladat2\feladat2;C:\Users\danit\Desktop\cpp\feladat2\feladat2;$(IncludePath) + + + true + + + false + + + false + + + + true + + + Use + Level3 + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + true + + + Use + Level3 + true + true + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + true + true + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + true + + + Use + Level3 + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + _DEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + C:\Users\danit\Desktop\cpp\feladat2\feladat2\feladat2\x64\Debug;$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + feladat2;%(AdditionalDependencies) + + + + + true + + + Use + Level3 + true + true + true + $(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories) + NDEBUG;%(PreprocessorDefinitions) + true + pch.h + + + Windows + true + true + $(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + + + + + Create + Create + Create + Create + + + + + + + + + {c0af2585-3697-4ad9-bd3a-67823343a675} + + + + + + \ No newline at end of file diff --git a/feladat2/UnitTest1/UnitTest1.vcxproj.filters b/feladat2/UnitTest1/UnitTest1.vcxproj.filters new file mode 100644 index 0000000..f041cae --- /dev/null +++ b/feladat2/UnitTest1/UnitTest1.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/feladat2/UnitTest1/pch.cpp b/feladat2/UnitTest1/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/feladat2/UnitTest1/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/feladat2/UnitTest1/pch.h b/feladat2/UnitTest1/pch.h new file mode 100644 index 0000000..9d715b0 --- /dev/null +++ b/feladat2/UnitTest1/pch.h @@ -0,0 +1,12 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +// add headers that you want to pre-compile here + +#endif //PCH_H diff --git a/feladat2/feladat2.slnx b/feladat2/feladat2.slnx new file mode 100644 index 0000000..9b2afb6 --- /dev/null +++ b/feladat2/feladat2.slnx @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/feladat2/feladat2/feladat2.cpp b/feladat2/feladat2/feladat2.cpp new file mode 100644 index 0000000..25b8523 --- /dev/null +++ b/feladat2/feladat2/feladat2.cpp @@ -0,0 +1,139 @@ +//Tóth Dániel Mátyás | IFPQYY | v2 +#include +#include +#include "feladat2.h" + +static unsigned char* fifo; +static bool activefifo = false; +static int head = 0; +static int tail = 0; +static int lngt = 0; +static bool full = false; + +int createfifo(int s) { + if (activefifo || s <= 0 || !(fifo = (unsigned char*)malloc(sizeof(char) * s))) + { + return NOK; + } + activefifo = true; + head = 0; + tail = 0; + lngt = s; + full = false; + return OK; +} + +int destroyfifo(void) { + if (!activefifo || fifo == nullptr) + { + return NOK; + } + free(fifo); + activefifo = false; + return OK; +} + +static int enlargefifo(void) { + if (fifo == nullptr) + { + return NOK; + } + unsigned char* temp = fifo; + activefifo = false; + int headtemp = head; + int tailtemp = tail; + int templngt = lngt; + if (createfifo(lngt * 2) == -1) + { + fifo = temp; + activefifo = true; + return NOK; + } + int i = 0; + while (headtemp != tailtemp) { + fifo[i++] = temp[tailtemp]; + tailtemp = (tailtemp + 1) % templngt; + } + head = templngt - 1; + return OK; +} + +int push(char c) { + if (!activefifo || fifo == nullptr) + { + return -1; + } + if (full) + { + if (enlargefifo() == NOK) { + return NOK; + } + } + fifo[head] = c; + head = (head + 1) % lngt; + if (head == tail) { + full = true; + } + return OK; +} + + +int pop(void) { + if (!activefifo || (head == tail && !full) || fifo == nullptr) + { + return NOK; + } + int ret = fifo[tail]; + tail = (tail + 1) % lngt; + return ret; +} + +int clearfifo(void) { + if (!activefifo) { + return NOK; + } + head = 0; + tail = 0; + full = false; + return OK; +} + +int freespace(void) { + if (!activefifo) { + return NOK; + } + if (full) { + return 0; + } + return lngt - ((head - tail + lngt) % lngt); +} + +int capacity(void) { + if (!activefifo) { + return NOK; + } + return lngt * sizeof(char); +} + +void debugfifo(void) { + if (!activefifo || fifo == nullptr) { + return; + } + for (int i = 0; i < lngt; ++i) { + if (full || (head < tail && (i > head || i <= tail)) || (i < head && i >= tail)) + { + printf("%d: %02x \n", i, fifo[i]); + } + else + { + printf("%d: URES \n", i); + } + } +} + +int peek(void) { + if (!activefifo || (head == tail && !full) || fifo == nullptr) { + return NOK; + } + return fifo[tail]; +} \ No newline at end of file diff --git a/feladat2/feladat2/feladat2.h b/feladat2/feladat2/feladat2.h new file mode 100644 index 0000000..85dcb1f --- /dev/null +++ b/feladat2/feladat2/feladat2.h @@ -0,0 +1,13 @@ +//Tóth Dániel Mátyás | IFPQYY | v2 +#pragma once +#define OK 0 +#define NOK -1 +int createfifo(int s); +int destroyfifo(void); +int push(char c); +int pop(void); +int clearfifo(void); +int freespace(void); +int capacity(void); +void debugfifo(void); +int peek(void); diff --git a/feladat2/feladat2/feladat2.vcxproj b/feladat2/feladat2/feladat2.vcxproj new file mode 100644 index 0000000..3511a80 --- /dev/null +++ b/feladat2/feladat2/feladat2.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + + + + + + + + 18.0 + Win32Proj + {a2f27c2b-a860-44db-b1ea-4fa4467bd633} + feladat2 + 10.0 + + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + + \ No newline at end of file diff --git a/feladat2/feladat2/feladat2.vcxproj.filters b/feladat2/feladat2/feladat2.vcxproj.filters new file mode 100644 index 0000000..1a781cd --- /dev/null +++ b/feladat2/feladat2/feladat2.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/feladat2/feladat2/feladat2/feladat2.vcxproj b/feladat2/feladat2/feladat2/feladat2.vcxproj new file mode 100644 index 0000000..5353666 --- /dev/null +++ b/feladat2/feladat2/feladat2/feladat2.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 18.0 + Win32Proj + {c0af2585-3697-4ad9-bd3a-67823343a675} + feladat2 + 10.0 + + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/feladat2/feladat2/feladat2/feladat2.vcxproj.filters b/feladat2/feladat2/feladat2/feladat2.vcxproj.filters new file mode 100644 index 0000000..b9045ce --- /dev/null +++ b/feladat2/feladat2/feladat2/feladat2.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/feladat2/feladat2/main.cpp b/feladat2/feladat2/main.cpp new file mode 100644 index 0000000..90f9f5f --- /dev/null +++ b/feladat2/feladat2/main.cpp @@ -0,0 +1,27 @@ +//Tóth Dániel Mátyás | IFPQYY | v2 +#include +#include "feladat2.h" + +int main() { + //things that are supposed to be reachable actually are + createfifo(10); + push('c'); + char c = pop(); + + printf("%c\n", c); + + //and things that are not supposed to be are not + //enlargefifo(); + + push('d'); + push('e'); + push('m'); + c = pop(); + debugfifo(); + + + + destroyfifo(); + + return 0; +} \ No newline at end of file diff --git a/feladat3/feladat3.slnx b/feladat3/feladat3.slnx new file mode 100644 index 0000000..6344232 --- /dev/null +++ b/feladat3/feladat3.slnx @@ -0,0 +1,7 @@ + + + + + + + diff --git a/feladat3/feladat3/dataset/testin10.dat b/feladat3/feladat3/dataset/testin10.dat new file mode 100644 index 0000000000000000000000000000000000000000..8ac7eca3788eaf3bce5d5ba9777d1c36ece5c6ac GIT binary patch literal 20 bcmZR`NzLF;iuRo!;;rjb`5}){kHZT9KWhdX literal 0 HcmV?d00001 diff --git a/feladat3/feladat3/dataset/testin100.dat b/feladat3/feladat3/dataset/testin100.dat new file mode 100644 index 0000000000000000000000000000000000000000..e5b3cb3ab71c1f21fa65c7ca9f1c984eb547793e GIT binary patch literal 200 zcmV;(05|`*Xen(3BwbTUD2*iA5*1>v8}L^!3)l}?V_8lCe}QpFKoB{5lT#ccK9HAGLvQ+egG2)9X3;nXx}0pUm6;) zML%lK57h}%E*DWoAh;72K+b7eR|_et6{A>VE17*n4@^o-Zg5jdf89Omf8sMz59}q3 zde1pcaq}e94JT3lF!gA~d#VqzIb~`bZ1M^#WJ40<3A9h$AczY^A46VU62wEDBUMnm CElDT< literal 0 HcmV?d00001 diff --git a/feladat3/feladat3/dataset/testin10000.dat b/feladat3/feladat3/dataset/testin10000.dat new file mode 100644 index 0000000000000000000000000000000000000000..43d52791c0e3944b64a6e29ad4d887a5c241c542 GIT binary patch literal 20000 zcmWL9heIKX0|4M8iKGaHC?z5xp)x9|Xow0ev^5mT4!OPF?RWd#-h1!8_a5)|-g}RC z^Y{DyjBj`sE21F!XRNNaGA6O`6#6r16JbX-J_QUq&>of(l$&6yrypwQ?M^Q&Fn@-q z;}wPrf*0z0(zUq9HDwVAIsdWZ^T+Zp_Z@7mj2a3XsI21g0d?{nxD_^i^D@S1$^N_! z&$YNf9s<%Yx*}yVYX)AM??>QUW(5^E4|u}R?XgW>5-2oLZ~QMcBWslZb!q{7CTf?h zx#GW+;U-)rF~U)*rXrRE>{LNR9#E6Njf(cj&@TQM1c9(P@4U zD+*BBUPQ?)J5ik3@0Y!FMwJ|Lelr+6${0UzP6&r~Jl55BvTHu?ewvI}R6QTI7hW0b zPN~47@ujem>iAE z5)kqO0j$1MvA!k1C`sL9I$0M8TSC8_25V~zxjxi%(tronYaeUl#hBAJUrm5Lf z&yWd8W$5!QXOqapW{6JzyH8zs*4I$k0Omp4qsfH%dBOR^**5x@DmyMZsjl#(dtS?v zYNl$P0+X%?Jq@1*(PCae$;LuObMXGw|F|I9%7L+A4`~0;(>1jNQw9Ctw@pfaYeHtG zBl@%_Y(R`WXV_Xh7rB-mDSb=$UUbCMyDQBA0AWB1T&oKK#&qDbD+hA3-tuQ%`bvv1F zf~G#w3=W%-CuR(9&UQR;v)Z)%;b{;2%*sQ;qjgVxn@OuOZ}a;~!8j-3ft}QQrf^@0 zPm@hSbqr45Xl#yg7k!Oil5nzbf7w0CGgP5_FX57NBt_cjO1(st1A~Hw;gaIn`QQE9 z?e*Z|(&coZWjB0LcW1@4q5};x^LC--o-bfc@fvovK0-3RZF=ICdX{QKa9CP>)kMox zRuFBVt;jjm*${DxQ_ootH#eJ6N}^rj?5TOJK9b&t_Vp53RN@B7+1{+^=WQPHU)8|= zW8luBHqllY1s&%h)HVWFc7AOdMVQlU6`As*pi}8+3<24gzP0-ZFH*bT$0^t!f^H58 zp6!jz9b>j2^Lw{q^Z6IqyL0D3_OU;4j@X=0%SC)-NrHsqEO)UEPKVI z`BJjC;V*!x`l(96_^JJscn~RXTo60b__@Se_dHk04FX%+0P6bS_~6l*v$AQWwCJ+z zSF8n;?diWk--&X|7_F@?7Ecu>8&^q6P=`fBIq6k#;tu0qsKLyPGKF!Lt_ty=aCG0$ zte242jd#71LZ>z{olEjx!}i+p**{3ulzWPZsM7j%VK)oKlo^F)#dC$NJ-X>i!J_cz zatF2pv&YxyO3oV>n;6w0xL16Q?1@@JekS@soohdra-TD?6BGYAi{onyTvh3dgs$De zv&&C{LW$<|$<4rW87w(g3_cgJ8|U_S@zJdPg((AV@Fgw@by?G9+RXVX ziqf1W^+u*uS`csjGpdS^dh|kSW7S*vY@M$|TX4dG3&V(p2M;zFJy;5)WMXz-RdN)_ z#;TJfPv{%Y+>rO78J<3oo>jV{TGj^Y+$4KsxZM3bZzV}bo}S$*W@#Asav#i$fOC7> z_3f}q*?uoNYbEaHK%4VegQbGufW$0oy@UMNyQgxq*2|C7pA!9JJBQ~ZQc_jT6Qbup zrLmQS(`>!`4uM_SCBVz#kY#n3RL>f2_TOc{!W-ezQZcj`&1jw%U*9_?zdOF$G(OC3 zzf`$iG1W-cZ_teo+=vQ7)n#H3pRwm_PWzfW`fLNKlP!1nm-R^4Gw9Qr>)3nFctem? znt89axc*Pp&&F%DqP)wNjV=ZWQ~n9NBX5tfI~(tY7cZ_aD5rxpg5&A`)!`#UiX!s< zHkJ3U$sONyt5{j9_TH#-f#tBW+RD-xPn5+lv0%n!$!8+zannIxqf`UKQ1KPlBi#*8R2!oN ze1+|RUX00L4@JDfT>+8vj}hbg#gWG`wwhfsUt3)7@ZPyy$9ePG!f9kgde9n49&ov~ zUo)k1j2x1286g+zg}+^|xwY{+<;pCYH!1rd!>VM(6)FKhh;waz zL-`d(XdRp~uQfI-!FvxkO8-~MVD+Vp)e#L)f8z%C?ZnLm5cL{RN%da_E9e8bu&O^Y z*Y|-?tXtA*$oh^DI-Xksc4*SOsyf&1_Q%S1%6D1blGYjz(~p^!7}T6?x;{IG!|2uk@_}@r+!p33?JEZvzSB~TEH}S$v%`^ip$8@K}}ZS27V$B_oKsV z==Hh^VT@f}Mz zLzw?WZm0{U6$HW|gV3&m0noWjh7Bfdv);5W*Dq?>8@!V~7Q5L#CAMBZ*#5WrH=v}! zV#)^$6TTyb!d?&snIYyb4ld)OIkc?En1E$D@07Eo3JJ&NY22IzL=TcUjd|TsO(TGb z@%eoM!LEX3C1VotQOSrw_AlY==6DL*sw}Nd;I^8JCu;snAP+u5H6~Ic)!ByBMceXQbJOE_tE3LkkCqfRqV8wC z3$r)H-ZrPpNqs`<<8P|k(h^zqZ!?=RIG$KNTy!e`mjGn^U5dgld}1KQjI7`)oBQTD7B_83 z{nEZ8i-9iZbw%zC;x|%N0{o!r1-abhIjq+Do#N#c!lv8!sS(5a=VYPFW2Af0pDK&= z6x4@0mv~m;nMOtT7AT+0jb0H-uXKf-7yjo%lzY3bik}7dhd=7t1D)M?Emx))BIqWR z*#?jn`cQ2P&|p3dxloSeEio@?NG<&4SY|ke9?#q9yN9@)S=4q%c_D<`7>rqxb)GR_2dn<+&rbcDaFv*!bOJH~ zO(2I=eN8?Z=xuAN1&2UxR&FSnsPPrS3xkz^yN-%i%U`=f011k#=HJ0;_pQzw zsgv>`)qAOKAR{HloRQ{omf`|HBc01lO(44RUaB#Z|=04}ZyHFK-~N!g#eiPT;(jyRfi zFjbsT(sI4kF7#&{H$PQ;EoG~7oY=ajq)5?O2euZKFP60XQ^_L=IbAOb_FDHczxw|w z%>(C>XSRAnGsOz-HPhkd@sQ7;_yRkT5u(8FDE=injg^>h;li4J7u9J!ty>Eh4lD?i z+uZ|KJokdjbQ6LW#tbj&C%$X@ud|Xj%d@Ugqgd2IF&s_CEZ-sBbEKU{L8*m<1&!?AJ9?cq}-LZa(Kq6rax-icg5EZGKxxOkSIPjhB-T zRnFil1j91NjvE!mKpbG;CIEal!xi_vM*z(`6smdoVhi}i36gTi1*}7`1JVGWJ3|c zTvo3|**P(F)DV$*z9y&YeN@xHlccer=h|p8BmHVMq4Js1NEaf1*SCSrp%=yBLuG_L zTz%AH#<`N;nsV?v=8=?>If?10ygf0W>6>MMUy1=FDAvr8*e zkH8EaYoZo9#^stJtLhHecP4(e%@0UG#v*0^tk}+S9HkGtvoV@hQ#-)}YnT%?;0{j$ z@m4f#Nt;fAbl-B!ELoeeTTU#3sDca8Nm|ZLN=wn^5WDk?>OqAAu%&lzGGAUekVqg} z8|2)&`mRO5(IuzTCYOpMIL!-CimC}FI&UEb8FQ}RM{CKu443lBEsGP@SE6F~BzM3@?&)b6VSk>4j1E!oyBoMT+Rq|5rn z#j-u#?p@dp9U|>sHBojcA*LVI_6E=tz9})Yd=+FNesjlZIXuze#fOJ=`@Y+$TyyxlO0c%~qTX%h`%%&gCiGb*k@a%dxRx!}{WV=Bxk zdf>~hxrL<4ZREqa*^Cp32;&b+u`0$l8?s5l@UIPKp>B}!V6ehu9TGFCp?82;Hl^Ga za=|3T5tIHDy)|El&te~8FcLRor=`v@)J1;c&nGr@#dYG&>-q(gHa z7+(ya$11}GIT%O#gi?p-VyioUXvAIcAJ#`MGW`p6QR1PJ8fr)XK4m2&Cnzs)i(cM0 zojr*VX&zpDSbN4-QIBiP=+D+tV<#aft#kT^bZ>R!H9qWUNsft+RvgZJ4<_i+tX$$c z)}LAz=zs;#uA{HWHzjzfj)KoAhUlw3fV6eJH{t)paX6@m7mX__W~Vhd7e?I)A&R$n zo2xf#7BoP-nELhF%LM?hjxo8u4D5&dom*Ldaeh}1vT9)8_;G#Qk}tHO*(7yaMlV(5 z-W%igY_T%6kE1F)Bc+cxL(}_A=CFxnQ+(p`DvPQ{sn9hRhi|aVAvWUHI{RGbjmu3o z#+a7v;U*uR^AC7-_Grj*)?ckvniQgk6D7{_JdR%yQPG}n`Pz_Ig)_8>u4exxhGsqt z6jB=nJ6(oWl{Sj%#XN4F#(eIe(YkTtt+Qlf3~bnWPEY-WlGjBp3Z8pSR#AC^`FOyC z++fD_-0S@l`00CHI|;tl{W?*fvI7x;85Y>(?rT~C-3s&&y(&;7Q|Xli zGIW9+!CPHhb47t;sKc^^0{_4f&Jk@N^@1e5XbeiCDMI%QpkjAVmcWJ<4Zu{?vcU z1c2XQ2=@5S1SlM<&o_GOQitd)N}8+_IIispKi~K?;)jOb2=s5e1R#GPOjP?&u}GS9Z6FsV?m{h5izs%ein<+Vsdy`tq3sk-vSU`9m zGM@hv9aTr~9NnyqZI0AZ?(2SJu8a9bm~BlC)EDne>y<4eZ3q;og$$ejJ}bDg!WUwC z7k9!uvP;!Zk7uU-Yqh~Ip@d1-*^I(jwIzzZtP#Y`E$5QHQ#WQ@(e6rJS* ze~E|{j)WGbV8|aqxFo&zAEBuFN0^4hrvDD>Fx+9DiQSp7wRehF%=$yPn2oZHtDYY8 zUbVS%89I#Ho|K)q*s~J+h22%MS$RpbCgBa#5)#?=E&EX1PVMG|sGbk>?bz=3XH1^1r8>VpiiUC&kQu8#!+T^uhzIHtt;0vJ*uZElQ z)#fgsa4CPJY)2cq;EE8Oq)ID~a61OHuOOF5<;hF)z7>|`ElH~MMT?g=ou{eTH^s6n zxTgRvty-uwbY22J4(j*qF|Q%Dbxh1H#ytsct-Q@RQPm^=AwQ1?VYcV!da2Tj$QXFC z_G!N$<62Bg->1fLisi5?upHJySia7z3J6896lf+tocLPWS4&Rw3|vnd2ykJVoT=F} zfa9WSpc*nCBBIW5okgdSj1@G$ylZK~*y>VKs|^x95ZZ#7CM^|Mb=O)>M^wNfh4T@E zf@(`IVj{8SUH9VF$V~A^4d<*|x>%GoFcRanaF(O63}8CO{(_qb%5l9dA`A@b;AvYL zS8~*Gpf*jx$GXun2@1%3TYE6~8{#WG3~cHle*>>)HX1Y6EnZM{~{*wR0@1O zk3FLQKV)6PZtWLVHPsmjr2HM$<=BgVmiR1ganVZ4OwZQjGwu!89NFD;P4^?*5ZiNx zKBA+eAS~dS*CYoomJ8*rOojilFpVuU?;wG!qsz~?e<)Q4PVmo$g(OM>cT+O#F&ck0 zq^1G)famEg6dDS{u>abA5kd9`XhOnsPmU>&xITmfnQwj04ia2)Njq1j1G);)7ljkz zZ;I+0?w750KlGbg1{>$gPr%j+kZPpmdGZ|13A6%sDXA}Yc9Xn2%au1UK64@bhGSHn zZ6K)srpMli%lX;k z(?8O|7E76<@?lSzY-99;(r)1EzC8nS{?nj4)qhFah|7#*#>J=+RSV=bQl!dL$uc{! zr`q?X9|{4L_+Xce1+)O9#;~aWW#UN4u)Z-Cb{jaahObqLV=g3gSB6$EWPOod>@9Jx zuB%EgN!P-;gopg0F>>xVC=OH#++w=SK9fDEp2m9a87TOgsbMNrn*?&Gk7mD_xB@(V$=sv1IldJf@FLCBF=s% zvGH=d3G=2fH(_;=CrJte7S&M?Y1c;4f$tNDlt7TW zPIG@Q{)RaTTb0NkaUGrERnw%bw zH+H^|=W96?3Kf{N+&;SI7T`Ug8a`P!HtihfZsXNxW4zzjX!xAerI>9#qS&M9D_EV| zLfJ#OK?yi^dOgZmdY$=3%Q04h5@K86R+#6|7nRak`>Z`@19bB&uPKwx2JehHz+l*TUtKzJeDEdm<0QC}nIRAG~bKHm8 zz2r-c)rqg_JcfIOEv2Iy4z*Ww$^l7rb++@ibJPWfS1H}9?xg#Qztg{RU-r-H*dB8}C1>5?ex$bMZf-iMT82pBhO-h9{}oAXf7EH-0q3b& z4B%X=6tu^+CvUNk75gaRvvEg1IwP}rfqseZKnl51p1z1n?TzI1wC~lrV%^?m)C5$P z$x!@lH{ZHkBJbP+aB*0P}^7%aboU ze+Y*)T&kF>m_&l~P*a!1l!iRDEo+R6u24Rv9Hs28_|-kHeV*h3=nZLA28DbPd%u4q z78oPzl9eKfyR20uM+~ooR^AHk%<2r%H1;T4rL)ld7_U&$O2+w~qo1eFPMHJV@A?~8 zBPX`+%+LXI6uOW{+Gu}EOG#k0=L>(2V;Kph2@?($9YtPmO2dA0eh@z?n9)`wo7>sM zePrx37`Qdvdi8bc?wDCPLVjw9$#d5=vo|h>X+0U*N6JFR6ikHw8%AvqXy+UKozDxo zSz-BW@h9ZLjupLcObnN@yq&D!y+-8{U`bi(KKTgrLE-BokV7sEx&)O61+naA? z?L>|j?*$AajR$i+c}1-Ns! z`q=$V^$U~LiiqgvbuS=juE0{7p=g+%@;P`mAKjveeWRI4m?!KqEJ$5ss0IRTk3eD0 zM}aQ%Zr(89yxOM@hqs())VTGgBMKVpfuWY1hRL6WbhT zdVbU9a<$NF;C-eH|b>4A6f_g z4L8jFjLU>+gfBRS2z8g$O>Y7q9%DE3U5JSl?e0ORrvX<(ipn19w5&0R*{T1}?Mh~H z0}tP3!d%G>J1#cu%tD0U{eV~-RBDD5dN&zCatUO}6wRW&?+t!xbDF=nc# zM>DfyP0I}26jNf^$HK|*uY!%88`H{qu+xkz z)VN8qYSSOspVEU3PvrNqw&)V<<4YdoeUof#0Qw63L;Ak-4D}$mpx#P}Xn>Gn3cE?& zOrBk^y|cDTijH0hG}0YlN)s|YqP4vDW2h@WQ-NmmYb>^Re4R}C1hDF;whH!wV@O8>$Tk+>H-x;037Sn;M`7~YOCIKTAXM|ncl zXbvw%9Q`YwwEsC-AHQIN||nb;BkeF3ZsE%9<`ZrCQ8SsYsMg zbbYbyN&if_6hTxDWNos2hdb?2*^g8l$?fuzENcIy+E1yfKx+Oh+KlXhxboP|kv1^G z^tY9&o@kmSof)w=^0OAJ8>${mj^Pw*DiC`I>KZ209f4l$G3 zkLlxM527E6T8%AeMcQ9^=W15x+)X@8JPIb-SLJ0Wb70n*XCW1-c=>wQ^2id~9`

HgA@z0*EP*|GHa_cR;BIBzMa&={zO4^P8M$pzeJm!afW?O zoq*aM8{jQ1E>-T%5NGtrGG%_pDo;gLZl6EyS(g_F>FjR-g>7hhUUe4tIO3adS*}X_ zxOgw7F6fT`8)S`dD|@2ooOgcVMu46jT67q8qa@hqLoTa*C2G$N7?Vd9ec9vL}+@83%xk_ z3M!&819qr&XYa+rvycmf;l2?K{$L!@KC275h?!h+M*6_9?ktzqPd1vncst=;ovm@%ZlbrsS4c?RKjfa5uq+ zIVRrLa#uo+_>gru@-+u#$>!4fSCJl8elFW*JeL-tozY0CT42rZ83q9U6Sruc93i{sE z!|Y8Pg_J92>K{X0^0O#)Bcg}IAA@F_N0nZ#ZD|MAb>&J0dz{wR23wLKuIBF`7k5F% z6!A=nuDzu01a)b&-~F+k(BEmhCLPJ&M!j3}PJ=>R(v1Wa5+Z^O4UW3t4n%UAcAbBg zaHFHrZE`25`00lWE+l^9RT`#cEd(VNQ~I7oEwat?abpsl6!C-VLzD>>r@LF4lL`NU zi2j<&Z1X_p#lF@K1#TxNRYM4)$eW68IvPETWu-=DpRMFC+dw)wo=o`>@vt^BrxN%= z^3Jlh=R!?s?V-}eZe-9QCb#IJq>y`{NS(2RI48X`Xe8|>tyI#X+yVbVOlXd**{$D^ z*-=pKJ?ze9iomaANMTp@jiSjhr5JXK)cBUaCjB-t*uEm>VT?vSF16i$7_p!|p?-Yp zN2D<%wiRh=)$0o8;KsG%2ZF^z<>LvN;7LsxMeJ0jq|o@iK~HFLY*6f|Kd+|Nc$rTM zi8(*mp_0C2UgVMTUD4~}!t~^h)0DB|w)k`pH8)Xvy2ljWp*gQx*WR5i);B#w8uRjyebyDVyht6ak?^wjWj zI3YJ&vclm_j3Q|@T*Rc#2gnoPPD{5zc#1J9Asuui@(dx4{2Vz-4l0`k92)y7ceRNd zaHywtH z%@+3@pDA1ue=Bwz`=j8f=2iG#u2rpva?WOKtn$WL@#E@j6@lvW%wAR~q9*Q>2~Zqq z_yCAO8D`Y+NX2)RVgKBBEL**+l>L?1AbL7nsQUIuXa-t5!>VuSFDJA+xew)7l9P+*!K@O{4m8nxSQODY*6Ri1u>cA>sk?TUll)kt1FBlVK1;!M?&02rb4Cp%eebAMnn6~g{ zJ8Y(7ruiw33ei=KrE4R&{tppQ3C*gADTRobSPZ2A0GsN#8@Z6t3=q2iMM(QHkT0ud z4anOf^dYe#<-)q+q??v2eak}bM{BX)Q@5e}qpihR+2b*RXprIx;0^U_PdI5)+FsrU z)%G^2eXVC_Q?ub>*Yl#>{(AiVD2}X1__*kAS$9^u4;zFW$+G&F6d4(wj^{CB@SxTg+&AdGxzD9w!C=qGSQ+j|<)-)$ z;B`)KMoi}^`m^S$Xjjqsj8*uf{?Wp7POVVssJ31SE0u;Bm&*5ufWRAR?}A5>ld^PD zVDK?T9(GGCtqW*8nZG#pTR+IMF0F^qi)m%s;IeO1`-psWRco-Ncw2WC z1)OqY0MQH4@iLd2?+MbiQZc8`OU5G3rFZ1U6Pj65JfA9F(kbo{l2YI422alv?FsvF zLMzn;@2`1=U#q-Vxw54uZ(gE5cV~QJ-@i0B`Xu8{axEXF^$ELkt14bqJ!URMF6isy z$z3-EXaWndHmwo7nb?E;P<=3XyLwl{+888cu4uF>-2Jj-xNa*ND-bAK``)%vm<+_o zuqP%{GP!(gv@A3|K@+|){Y_*Rbt1M#y_T!7=U2SQ1IwC3HQL>_q2T|#PoX5^H1yT@ zeB}Jh*v@60AwH0bM)*{B&(c{|jU0t`Wo+bc4;-vUlW#%(jb1NJE*aXKlEG?SS)Exw zg7mmfS(ZYdS20Y!ru1g{GDu_w$>v7=q|8(YrCvw;9VIbN?_L7i=c;Uf6ya$uuDVME zw5@W03vLA6l;5qi@c&hgiA(go!|lYrkNg%kmfee3W=$W+OjJ=c5+> zl8%hq#XJIhoO4*yXFNq2W)YyD!!Uj4AyG6_@t=WgTb$FJ;S^5m`HtnL6!d;~2Q$us zVj6$-XRBF?8I{0<0>(#dRWIk8Lejma|`=HVu!98%IE7dCz*mSc`| zxUi9R-2sh{E6c6YOFk&o^#9PYUP;MROJ^U2#xry;MUsUNhWmVht#Lcqt(Cb1~F-!Q*8^&KJbQk9*LwF zS<@lML(17SRi-p=MO$(H!wO>F#PmA#3G0Z^M}@zG^2^h^ABYNS-Z{^<>$0yGi~_ne zyUO&48nTIV*Cegkhk3-qzy$QI@W$N1&LmC{1PbGcKhha=sv%2?LHVlo19H0<%39hg zy|%5JSI)=!u64hZtdq`=f`Y~;ZipBJia|VwE-&`h?*qQ6y=%1qu&r;w^E)3w^Pq`A zrF1Rgyeb65XsFIJv8#jr5I@tmXhayVrb3bs&Y=uOq(|yuaWO@uJy3qi1Wv4cBh-$0 zlkh5MM)%cNr>Czxkw1lIvX6|O!+jqt#Of2&MUlzbDc=>(BgKjIH_fAd#Zo-`VifTZr!?WI_Frb1An2&%kx&wY(kMH4ggZ$myJ=r&6r2M zO-?Kc6C}4!)mSqhYj-d-MWd0ygrkx<$c2Fv;LPX=(BBQT*pJEu^u?xUmL~+iHQWB7 z_W*a$NX3 z{buGl()NU)e1xikv6Mx?%L9c_830&oSBQBxAr~rtMD}D~Pm6GQk;m$v0FK2SsGc8H zAA2dRHROBFacFJVQqp_f3qneuOL)F`1b_;AXarWH9XS#{=LqU=+afHFxIBH7lwCL0 z@Rq$o5>EMy+X1{zYf2B`w<;^d{>X6b5uB3;(M%yZtKMLUXx%2uO_13Q&J#Az)n zGE@6F<;mg{{@yaQXM!cE<_u89%^+CpgB+VW{w+0^O@tn=5CC81SM&}tJjbfZRo%mr z8C}4v(V@emZn)W5^H|MUH*L{uPB_dqzsf2oB$LSBTJGl_gSDl?phfZDJ4dQhvStVd zf`%EtvjMmR_^hluc|zc0;AHh41|b*TaxV5SdU$n<53CzTzy$888jWA|4?_eX4b&iO zjmxw2#~er)Q~uudJe|saqVDb8SFU260zQ>|>pW4pC$8T63pR$@T6)F1rTe2w0e;iM zK>0~i2Rh7V&_oVLce8m8dzNNUZkN&0d|JD@wv&vMe~p>0@8|*YCyKq&k2PznXo^RW zIofsxq4Q;PtKlrvE36XL!-d~gp$(LZ{`T+xTgTKlt~2>3+0_3oa-WqL0|cWlplfg zE|{C;jdOrV^kilJlrEi^mEW$Ll^`OL@`rIQJG!_sMPYwV_Z1^I@`0lRUR6KAH^ab# zHx=i`a+FIEQw;jJOw1td7f)3(rZ>F!G-#G7U6GYw>TOS*E#N6qOLv-Av(lT@Vx(h= zLy-|(dyCsFinl(!P!!0jCSfO(_4P}0^Fe4{qQ=y@ zR-Y5>LP`?f=ePN6xZDyW={pWp>oP7WKW0`?X;5l#Q~#8j<3<}~Vj`?|uj{k!VCgzh zB<^{2F6$;~17dhyf0d`iAZVu4rwwtQq{PT(I`1W3rtidz@x3eB5HC&rqgb9d0t1h_ zqPmE9nQ^T^-lK4{6Q6ofLDKBS<#GI#2pD)o`AIK4=S15@CM|vtsV-Mv2hSg-cj#}( zZH6C^tey_g`FKsPH-Kpl>wasEE3x-fg>Q)Sa%XGksKx|ny*4E*^C5mBHLv1?K^c8B zdu+-G+hRvR-K)J13=S3`zrn^P^!FqMb<}(gKP%P-cC&th_B!Ul^OD7+slk^Tb_WTA z3mR55F7{2U18}z)ALn8se`*|%kf0j$2+F#Q;lyp(MCAG;A0)4}SJ#;IuBNYjm!;91 zP-QM+j zxLro72?vyt@>Q8dUPy#_ZYN_0@U4>QIe@xUuX~Hoie>ARatMbcc%~UyI2)Za=S*P{1Z)+S7lxWZbJ-* z?1NTN3h4=ALr}B#Q^F}NJZ!G-hIA5WDs{JX5daqYoVYXSceWt(y66tOHtrqydg$h! zGYo#%*{D64*%9;Prz&-po7H0h(2QvLX;i2|Z`gy1Ee=n)86KbADnFE!tZu2l>TGr# zz)n){fVQ*ln(+;9;u6W&vYSnFGiK*sV}J81_0!2CIBG@-b*D5TV|Uc5B0=1-VwuVs zf00{Y8)O*%dm%KvGr5G}D;(K!^lq)5os3n$@ z@!h4z49xoKR8310fn%yD|0vG4?Tn>#{21Vceq^MSyP{6V7-PdDHsL+`HnA&l1MY4u zADWl@!0=o(D4`{Dn;1l;p%yo9V%s~g?51)!++04Xk)5%=^+eG^^36~Uij4ge0v-@6 z$M%ZD8Q5XfB}rv4HDL($Y8<1kHDGSqgLp0Tco>WyoPV1#TFxa$m-NKW6H`2^wYx!~ zEpbw3=|~SPh8Y=!A4bhe#KJNYPbzmgW{b|So`%kV{nOb52+=#~QgCAZoQyWXFU17P zmz0}b6C{9cLfqkAcKfwRcm*sl%UQ?U*0nwIFk_i!HFBEOQS;dqk~4^vkw3LC!#TjX z0sh5L>gx^u?)e_2W|GaRKzkGx{ZGLm>k#vTFoRWwy-x-SUl**1JKokRyGkmC{%d)P z{aU{!>5TJYen*}p;n@E>d9o)M zdKsv1x>GdUz9h)uI{|vpJkRpTd^!9(Fcxu;v`jq2uwPmPTLKJjeV1F7@s2arzNdUt zd2YnP*xp)xfZRN^mf-tm;8oZ7zH#{ZWsf=<8g6)I=KL&fj-3PfRJ5wcmv+J>jIjy# zBrJCA>K`iI==63fA`U~~4qMB*mV*3h#LygkTwM7UZG+~8W;<|i;5M8H{1i|F`eiS< zEZ&RudibPhpjhA20~a(8jZ}uYNuQ{toy$uKlQ@MO=cB};CX)uvBNhxUzyw(cW14LB zU!nIbt2F$%rIo!z9bbxKK=o zIx;4O5HAy{Zy5ipBnKTR9h_Cf&o&<5De)Z{$ANp>WI?gGWAIW=Vrz1UD`^2W9Ti@9 zpunJiFD?oilfQ`Yt1*w7PA8R#5~sU3a7W*XW{?gVBo6({eLJ^Beu2s-y-Cj1YYp>q zfg~AfcFwElAl`E|+XIXpK(x5YP-)QC24b(3JD-|Esfzuq)mKGHyoDU>MoKj4z zTu>T9hxq5lHqccG=le$ch?4XA`r44d4E>|x+wxHi7XDM@tN8TPmD*}1FS@SJ;CilK z*EcKvVlgX$n)o`zgL((2^_`>Cr@j#nDG!5?K|WujEHMiJdXu@-t}^bcdktzr_4+ed zM{sF*qhnt8AC0~xSt9SvyaZ?gzZJ=fg@$QnRjkcAwy-_XIWX0Kus~_l!Hen+r>;R? z5nbuU2~Cn>*M>?G@T3UMKMNS0HMQV@`5<>m^RTLG`4mJ6JCg7P{k(Wg>MO}p>)zT5 zFp&O_<-YGq{XGK?qYBDOFRC44d>=&gU1iM9dZRr_-juna^=F+1=|>)LDH|Wi7NHH4 zw4^^#pQQm-sBTY2BLu`6A6FirG7bpQ= z6U!CwHfwja>~S~+G?o3ZRnIr52h2~B2S)|kI|6mW^^SR}E9qlH7e$Phz07%RbCNTI zkLQJzk~l*0hwfB<6ssAV*&PStB%TJ`&bZ^UQ<7qIDbff;1`hj$V>Bh2nI)frD&!qt z5j`wApK!8$pret$gP&us(Ivz;gjWdS42S%WjcclhilveNr7sR=>2S2th}Rx)bz1u^ z*Z!XM1v?AAb~Z3`Vxzp`#%fMvX|%5tetqC3`4et^s`;@uR244sAbS+#Y(pJlB8c6j7gzZ^Ddz%LPA*7{_%fc2N>fb~WHB#OC z(q6=mzWdGWJ)jY&h5*?%SMW0?V`uE5_J2iB1=6hYT2hO0SS@ z&}4X6#o+3Ej0#X$wz4OyUMsVd|KZrH)*#Pk{%+fX&j~9v6TGhwaqR{pqWB8`rR%Rc zW-%i(HK!}N!|}Ln5&d}L3N*g3LL^NdL_bFxgmn{fUHJu*Yy539p@zC z(uMZbF_xCa)KQt_*z7u%T@-rDsBXAeGTd36RKPn3OTw?hrDBxfat97)Y5Ie`V&{h9 z2$=Byf;S`;$8|O5S@YmS2)leM@FKx&n37ppgUAYDoQRL=XAnNN9S!@?PY$0?XmWAd z9pzi;a=#=~=s#vp30_`yw8c+LBCoK^T=PgKG>g_q2J~~yc?HZ2rrbm+Y6zfc**QoX zq67V{$%NO{%&NFkF}9{j`pbrj@1PITt!-OhNyp;#blZ@pd}CW|5VbJSEiHk?P2;P=}R?o6D zr}V|_4sQX#$^Qg4ax^UaZEUy{xC*Wd>OQZF}r zjxj+OnQ|&4BdH>zC$h4kBY#BmmxMal&~jXA^#2;R6NV%Vh5^8Gi2@!VDtG{b7vu?| zf+!-F+^C=^hkzhrfQoXfbnNYJv-{r4j&;3lwv}_$>~7uVI@YnSRqI^6tyXPT-}n5F zhyEFR{;gOio@2`u?m}k>w|UpY2N*KaGTeCwl5{7pkIk^1N|-z+xVJIqsU3Znh&~k$Km?D(2|U&A)5B8E-PU$klQ{MSf@W{#pAA$C!?xL zuJx`mq%?g2#x!jvcK0FV*sM$DTeXALsK{sT65=$)V8XS;E9fn;app14(#VxLoj#cQ zm$q#U(WN*^X55KlXNEMesY3bk9q;Yt4M9$1^%A49Eps35!X_O&wHf;y3Q$rWMvA z;;B_)Q_`KU8&-OqW1N z=di;_nI4*|PcXnAR{}z`FyAl4U`t#5WUr;c! z46P4BR=2%~I2;u@;I1g4U9>D<)w-`Z8=DdM8I95U*Eo0uHT(*F+@C#lW8u-R+N{@+ z`{Ls&AJw_Z3v~OtRmq2(XSyF+4Hzx!Y$rzh7?94Y3@%qJG$3Ig@{feSm7K6V@T{;D zy1!`Jt&#ZY*_R+|s!C-Oh(BmsQ`grm@ciEJ&VM_*-5Kp(ulTcCo!uzU05}B1hKahj z4OgW*c;#(&OmZ%%7F%PI-4R=jk9{@x(SC8gBeq@fS%(*maGa9Wm^`L;HUD28m>$GR z)oK4l%KVClQfK=Rh*|%EMvVMevmM_>)r9-;hs&NpG~}f|Px7bU1n_@&r_;%R&yk7T zsp*A2MpSIkUd}eq_nKppBKX(N`S?-zO3mByS|qH0v3R0mp`Q_ysrSJ7pg#3*Vp;uJ zHX;0%ZZ$k8dYY)i+gWGgzIMx^F95&ABj6#?io~0!5zp(vE49XG$e;mojb56=%3Pk+ zUY5`@T6n_#G-<@fbdgI@qW%1^kkoKP6-uS~dUa2o^GfHm<;RYRjRm7HM#LGz0W!(% zcJ3dbICiRT$G7J5F){viX}&-it&;z#+842f4XHsPzr^S9J}-*ZO4|foHoJhe%6Xya zYS(T=7}(_$_3jkkMy>5l@?UD2C7ao@#Q$6WF-%bUd(Y|i_vXAhIPX1Yyoskg+FM@L zE7}eJ8L?6u!Jv{B4q!lajZnl(_#AC8$KD+5b`|}sdJ_AdhANpVziQdhcd>R#`)*N> zvQu@|@v;z;v@SWa3za`xAD#V6@gDw9uHz7TMKF(S7}rkrK9KLiASmdjD(ov^A4Frx zA`ZgfrW=SlWdRHBnNhZpvr~Py8QdgI7>d8!!gatvcyR@Iy*s05aw@1B%U%$i-fHo# zb`8bVB&X9;@;_yrjBiTt=L^ZA?rE)m;!@j}0SbT>>|v4DegWWe1C)Ck-l|ltJ)~&< zm9m3vfWSe)fq~APK>93gGj5Umt8PYz6m^T}t^Q7c@4nYt2oKOJaC3Mo$=!T_#;cJR zE}|BNyZevm7}yc%r0xgP#=7r2y`g`LBXI38QeuPeSI7y);=w~@MfulNM&5NnmU;JE}CPp#iJ<-9q)LLZ0hJLSzF6ckR&WyRiU zzf^*YJ%A-5Qv0U4E((V#!08v5ot1S#=afr>x9PhOamZx;EanP8zxhbnx~bhQ3$=X4 zPfeZa%fT~%W}(P3f=;aCij(F4WDP=Jpp}LX>e2F1(!J#Ou_@i&(j>LK$=63fZh%`k zd)$kNfA@&nuKx*9#_z~*9n)LE4=5pV6Zk~&w%0>awf3muKNxwUnrFPneW3R@cyZqN2?Pn^m2 zoG$}5BLcl9CEf*U+*&)@aWrH~eilqs{GB;T9xEUvMFyH-r`_VNtegY+PxGD$|>+_Am4qUUCTOLxiek#ffh@%>W06FWbZK=Q|g@*?ygQqfdq#?6qCHQQ6z z$Sn~kU+?PnY5Kqw=}<}c2H7D#O$ zOB||e)m@Tkj;^jJu%{>laYHVt9$>h@R^*8FM$&T;m16SznzTPs;a%8p51Nsv1?~0k zL*29u(@bEmey;B%L0xP08RD*>c2&GJ|K7$iH1@rt0~;XxW07AOUBGL(T(G-K!Em{7 z<(huK_c~*lQ&#pf3Zw>N@6}&7eX06aH$fESEzMtQj`AE*!3qwt)ASM2{|;{ScBeeo zy!VeY&D1%Lq=Z{#w*tpJ!s-p0aZ^I$G~af`3Cg)P6!S%$0vA9opvn{DYfrI{ckwOj zwSS;N%!jhk2B+X3A=3vLKi$0hH3G>2ziO)P96{)J8%0vy?fc!ef

3T**%OYlRBzmBk!(c1i*YS%haxL#%ze7Id@dmLPQ>B?=M{8Yk(C&x^6@cL{ z;bco{bd6O#XL4VW59a?zdA-isccq{lgH!J(Z)#sbeoj9Ht9EadbKG7LtaCqcUc^yl zfV{S_DX@_LEPg!HNVprhi|b|vq85W(WeqN2=%ZnRy@vS0fG>}53Ua&R{?;wxSS&Dn zrmju;(!Zj03GWeqTdAJ5vTu6L6ATgasX$vwLw{62rQ)#CD(PcwKE!u$@e4o#_xhpboBBjEy^j$d*LFwKVKWi0+w1D8t)ASEroj*f|dZ3+bzDS0lDcSaI#CWdHoB^Bs$#+TDos zxq5f#U19`k19^u3P(i8NmvY%upNUS3C83NN>A%3gfG$^l?&{|^Pkmke7aJfOre2IV z(qU~c?zrFN^9IFfwj{zP-mZ5rD4&z4J{Apt9ka?Fh zM>}rA$Gp$THK}-uiVV64*}0$;Cdt@KO|pkEOCaZ1+hAFd%s2w~Jo8)JTgN!<2WL=h zj@pd2QKzSVR`gVDZ>$85x6wQITSuVRV@r}QRyvSx92MS4yURPA)KUnDUCak&@5_q~ zozncFlB3QSwy2-*=k#0@eJF_&f`z}?ADXtO<$yMFKchs}Kbx|%`x}hKPWKdwC6L|G70y*bfOMEXtm}?0#LlR3mawb^osT>p z2(N{m(28zD;$~sD7{^HLUuB=3V5~ekH7%Q0`nGDO_+HM0P0}^0x*HO;u3_O3{Yrsg zR9rT2xn;B!hDLE)!DQ`A%IbJ|9$dK~Po2*ZIBfEwJ_em# zIgbehKdrlMZKYLbzYe@n-k@p2fg zi7DOBN%v7P_^0@LzF(PX^{4Cu%5@Rd6*Zu3{=Wz5o?pybhg^OHzIzbtDbObb#%e=6 zB5z6BOxAi-7Z!*TiF|KtYMa# zq)zG)oUKk1eow5!gv||Jr^wVgBXdjE%FesE51MsV_3|C90jG-!+AeeF}v>IoR?PGAJ{3zX^%H=C*GUFCG zGj|K_Y7{zM=dG+f*)^TY;u}qH08$fUqa<0PxYEW<1yE17WIgNJZTViOD-+41qc-th zX}~lN#whY#O zW$?byBb!~a(FCsfZeWM|DfoYCDcj68yM{XM+FHZL!E|JTNJo962ch>fE=wnJ!!V}O qr1n>Ls~ci4SwjT^*dSq{;D7CR!n2#_@y;Zc6*pR<%rw^~+W!IM(>J96 literal 0 HcmV?d00001 diff --git a/feladat3/feladat3/dataset/testin5.dat b/feladat3/feladat3/dataset/testin5.dat new file mode 100644 index 0000000..0bea184 --- /dev/null +++ b/feladat3/feladat3/dataset/testin5.dat @@ -0,0 +1 @@ +”kÜ~:#q/# \ No newline at end of file diff --git a/feladat3/feladat3/dataset/testin50.dat b/feladat3/feladat3/dataset/testin50.dat new file mode 100644 index 0000000..abd7b60 --- /dev/null +++ b/feladat3/feladat3/dataset/testin50.dat @@ -0,0 +1 @@ + krc0ŽCÆâ.ri‰HŸH9S*9< 7s)oPMíLHYµ D-Äy*&øp€O>*r]DFt^PßuXû+á!Ëëißù}±pƒUÎ8™?a'Óp(< \ No newline at end of file diff --git a/feladat3/feladat3/datasets.txt b/feladat3/feladat3/datasets.txt new file mode 100644 index 0000000..9f323d6 --- /dev/null +++ b/feladat3/feladat3/datasets.txt @@ -0,0 +1,12 @@ +C:\Users\danit\Desktop\cpp\feladat3\feladat3\dataset\testin5.dat + + +C:\nonexistent.dum +C:\Users\danit\Desktop\cpp\feladat3\feladat3\dataset\testin10.dat + +C:\Users\danit\Desktop\cpp\feladat3\feladat3\dataset\testin50.dat +C:\Users\danit\Desktop\cpp\feladat3\feladat3\dataset\testin100.dat + +C:\Users\danit\Desktop\cpp\feladat3\feladat3\dataset\testin10000.dat + + diff --git a/feladat3/feladat3/feladat3.cpp b/feladat3/feladat3/feladat3.cpp new file mode 100644 index 0000000..bb1d1b7 --- /dev/null +++ b/feladat3/feladat3/feladat3.cpp @@ -0,0 +1,73 @@ +// IFPQYY | Tóth Dániel Mátyás | V1 +#include +#include +#include "feladat3.h" +using namespace std; + +int GetFilenames(int argc, char* argv[], + char infilenames[MYMAXFILES][MYMAXFN], + char outfilenames[MYMAXFILES][MYMAXFN]) { + if (argc != 2 || argv == nullptr || infilenames == nullptr + || outfilenames == nullptr) { + return NOK; + } + + cout << "Parameter allomany:\n" << argv[1] << '\n'; + ifstream argifs(argv[1]); + if (!argifs.is_open()) + { + cout << "Nem lehet megnyitni a " << argv[1] << " nevu allomanyt\n"; + return NOK; + } + int readAmount = 0; + int i = 0; + char buf[MYMAXFN-1]; + cout << "Feldolgozando allomanyok:\n"; + while (readAmount < 5 && argifs.getline(buf, MYMAXFN-1)) + { + readAmount++; + ifstream inputfile(buf); + if (!inputfile.fail()) + { + strncpy_s(infilenames[i], buf, strlen(buf)); //if these are not allowed I'm gonna blow up + strncpy_s(outfilenames[i], buf, strlen(buf)); + strcat_s(outfilenames[i], ".srt"); + cout << infilenames[i] << " " << outfilenames[i] << "\tOK\n"; + i++; + } + else + { + cout << "<" << buf << ">" << "\tNOK\n"; + } + } + argifs.close(); + int status = OK; + if (i == 0) + { + status = NOK; + cout << "Ures\tNOK\n"; + } + cout << "*DONE\n"; + return status; +} +int SortFile(char* infn, char* outfn, unsigned char* buf, + unsigned short* pmin, unsigned short* pmax, + unsigned short* pavg, unsigned short* pn, + unsigned short bufsize = MYBUFSIZE, bool test = false) { + + if (infn == nullptr || outfn == nullptr + || buf == nullptr || pmin == nullptr + || pmax == nullptr || pavg == nullptr + || pn == nullptr) // there has to be a better way than this + { + return NOK; + } + if (bufsize != 8192) //I guess? + { + return NOK; + } +} + +static int ReadFile(char* filename, int bufsize) { + +} \ No newline at end of file diff --git a/feladat3/feladat3/feladat3.h b/feladat3/feladat3/feladat3.h new file mode 100644 index 0000000..97f28e5 --- /dev/null +++ b/feladat3/feladat3/feladat3.h @@ -0,0 +1,15 @@ +// IFPQYY | Tóth Dániel Mátyás | V1 +#pragma once +#define MYBUFSIZE 8192 +#define MYMAXVALUE 65535 +#define MYMAXFILES 5 +#define MYMAXFN 128 +#define OK 0 +#define NOK (-1) +int GetFilenames(int argc, char* argv[], + char infilenames[MYMAXFILES][MYMAXFN], + char outfilenames[MYMAXFILES][MYMAXFN]); +int SortFile(char* infn, char* outfn, unsigned char* buf, + unsigned short* pmin, unsigned short* pmax, + unsigned short* pavg, unsigned short* pn, + unsigned short bufsize = MYBUFSIZE, bool test = false); diff --git a/feladat3/feladat3/feladat3.vcxproj b/feladat3/feladat3/feladat3.vcxproj new file mode 100644 index 0000000..f37945e --- /dev/null +++ b/feladat3/feladat3/feladat3.vcxproj @@ -0,0 +1,151 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 18.0 + Win32Proj + {05ad42de-8f96-4351-b07d-784a20d752bd} + feladat3 + 10.0 + + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + Application + true + v145 + Unicode + + + Application + false + v145 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + stdcpp20 + + + Console + true + + + true + + + + + + + + + + + + + \ No newline at end of file diff --git a/feladat3/feladat3/feladat3.vcxproj.filters b/feladat3/feladat3/feladat3.vcxproj.filters new file mode 100644 index 0000000..fc823c4 --- /dev/null +++ b/feladat3/feladat3/feladat3.vcxproj.filters @@ -0,0 +1,30 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Source Files + + + Source Files + + + + + Header Files + + + \ No newline at end of file diff --git a/feladat3/feladat3/main.cpp b/feladat3/feladat3/main.cpp new file mode 100644 index 0000000..02deaee --- /dev/null +++ b/feladat3/feladat3/main.cpp @@ -0,0 +1,27 @@ +// IFPQYY | Tóth Dániel Mátyás | V1 +#include "feladat3.h" +#include +using namespace std; + +int main(int argc, char* argv[]) { + char infn[MYMAXFILES][MYMAXFN]; + char outfn[MYMAXFILES][MYMAXFN]; + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + if (GetFilenames(argc, argv, infn, outfn) == NOK) + { + return(NOK); + } + /*for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) + { + if (SortFile(infn[n], outfn[n], buf, &minv, &maxv, &avgv, &nv) == NOK) + return(NOK); + }*/ + /*cout << argc; + for (size_t i = 0; i < argc; i++) + { + cout << '\n'; + cout << argv[i]; + }*/ + return(OK); +} \ No newline at end of file