From 04e2b81674192986ce6354ea83691590c7c17b5b Mon Sep 17 00:00:00 2001 From: Damimani <41192030+Damimani@users.noreply.github.com> Date: Sun, 25 Oct 2026 08:47:08 +0100 Subject: [PATCH] v1 done --- .../IFPQYY_feladat3V1/IFPQYY_feladat3V1.zip | Bin 0 -> 3665 bytes feladat3/IFPQYY_feladat3V1/UnitTest1.cpp | 113 +++++++++ feladat3/IFPQYY_feladat3V1/feladat3.cpp | 221 ++++++++++++++++++ feladat3/IFPQYY_feladat3V1/feladat3.h | 15 ++ feladat3/IFPQYY_feladat3V1/main.cpp | 27 +++ feladat3/UnitTest1/UnitTest1.cpp | 113 +++++++++ feladat3/UnitTest1/UnitTest1.vcxproj | 192 +++++++++++++++ feladat3/UnitTest1/UnitTest1.vcxproj.filters | 30 +++ feladat3/UnitTest1/dataset/testin10.dat | Bin 0 -> 20 bytes feladat3/UnitTest1/dataset/testin10.dat.srt | Bin 0 -> 20 bytes feladat3/UnitTest1/dataset/testin100.dat | Bin 0 -> 200 bytes feladat3/UnitTest1/dataset/testin100.dat.srt | Bin 0 -> 200 bytes feladat3/UnitTest1/dataset/testin10000.dat | Bin 0 -> 20000 bytes .../UnitTest1/dataset/testin10000.dat.srt | Bin 0 -> 20000 bytes feladat3/UnitTest1/dataset/testin5.dat | 1 + feladat3/UnitTest1/dataset/testin5.dat.srt | 1 + feladat3/UnitTest1/dataset/testin50.dat | 1 + feladat3/UnitTest1/dataset/testin50.dat.srt | 1 + feladat3/UnitTest1/datasets.txt | 5 + feladat3/UnitTest1/empty.txt | 0 feladat3/UnitTest1/pch.cpp | 5 + feladat3/UnitTest1/pch.h | 12 + feladat3/UnitTest1/somedatasets.txt | 8 + feladat3/feladat3.slnx | 1 + feladat3/feladat3/dataset/testin10.dat.srt | Bin 0 -> 20 bytes feladat3/feladat3/dataset/testin100.dat.srt | Bin 0 -> 200 bytes feladat3/feladat3/dataset/testin10000.dat.srt | 0 feladat3/feladat3/dataset/testin5.dat.srt | 1 + feladat3/feladat3/dataset/testin50.dat.srt | 1 + feladat3/feladat3/datasets.txt | 17 +- feladat3/feladat3/feladat3.cpp | 131 ++++++++++- feladat3/feladat3/main.cpp | 2 +- 32 files changed, 878 insertions(+), 20 deletions(-) create mode 100644 feladat3/IFPQYY_feladat3V1/IFPQYY_feladat3V1.zip create mode 100644 feladat3/IFPQYY_feladat3V1/UnitTest1.cpp create mode 100644 feladat3/IFPQYY_feladat3V1/feladat3.cpp create mode 100644 feladat3/IFPQYY_feladat3V1/feladat3.h create mode 100644 feladat3/IFPQYY_feladat3V1/main.cpp create mode 100644 feladat3/UnitTest1/UnitTest1.cpp create mode 100644 feladat3/UnitTest1/UnitTest1.vcxproj create mode 100644 feladat3/UnitTest1/UnitTest1.vcxproj.filters create mode 100644 feladat3/UnitTest1/dataset/testin10.dat create mode 100644 feladat3/UnitTest1/dataset/testin10.dat.srt create mode 100644 feladat3/UnitTest1/dataset/testin100.dat create mode 100644 feladat3/UnitTest1/dataset/testin100.dat.srt create mode 100644 feladat3/UnitTest1/dataset/testin10000.dat create mode 100644 feladat3/UnitTest1/dataset/testin10000.dat.srt create mode 100644 feladat3/UnitTest1/dataset/testin5.dat create mode 100644 feladat3/UnitTest1/dataset/testin5.dat.srt create mode 100644 feladat3/UnitTest1/dataset/testin50.dat create mode 100644 feladat3/UnitTest1/dataset/testin50.dat.srt create mode 100644 feladat3/UnitTest1/datasets.txt create mode 100644 feladat3/UnitTest1/empty.txt create mode 100644 feladat3/UnitTest1/pch.cpp create mode 100644 feladat3/UnitTest1/pch.h create mode 100644 feladat3/UnitTest1/somedatasets.txt create mode 100644 feladat3/feladat3/dataset/testin10.dat.srt create mode 100644 feladat3/feladat3/dataset/testin100.dat.srt create mode 100644 feladat3/feladat3/dataset/testin10000.dat.srt create mode 100644 feladat3/feladat3/dataset/testin5.dat.srt create mode 100644 feladat3/feladat3/dataset/testin50.dat.srt diff --git a/feladat3/IFPQYY_feladat3V1/IFPQYY_feladat3V1.zip b/feladat3/IFPQYY_feladat3V1/IFPQYY_feladat3V1.zip new file mode 100644 index 0000000000000000000000000000000000000000..abac7ed86d54810f45addee16efdbe59c6e76de2 GIT binary patch literal 3665 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 literal 0 HcmV?d00001 diff --git a/feladat3/IFPQYY_feladat3V1/UnitTest1.cpp b/feladat3/IFPQYY_feladat3V1/UnitTest1.cpp new file mode 100644 index 0000000..ddb15a0 --- /dev/null +++ b/feladat3/IFPQYY_feladat3V1/UnitTest1.cpp @@ -0,0 +1,113 @@ +// IFPQYY | Tóth Dániel Mátyás | V1 +#include "pch.h" +#include "CppUnitTest.h" +#include "feladat3.h" + +using namespace Microsoft::VisualStudio::CppUnitTestFramework; + +namespace UnitTest1 +{ + TEST_CLASS(UnitTest1) + { + public: + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + + + TEST_METHOD(InvalidFileParameter) + { + char* argv[] = { + "", + "doesntexist" + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), NOK); + } + TEST_METHOD(AllValidFileParameter) + { + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\datasets.txt" + //couldn't find the working directory :( + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), OK); + } + TEST_METHOD(NoFileParameter) + { + char* argv[] = { + "" + }; + Assert::AreEqual(GetFilenames(1, argv, infn, outfn), NOK); + } + TEST_METHOD(EmptyFile) + { + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\empty.txt" + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), NOK); + } + TEST_METHOD(InvalidFile) + { + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\bad.txt" + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), NOK); + } + TEST_METHOD(SortSomeMoodleFiles) + { + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\somedatasets.txt" + }; + GetFilenames(2, argv, infn, outfn); //valid files, too lazyto write in by hand + for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) + { + Assert::AreEqual(SortFile(infn[n], outfn[n], buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), OK); + } + } + TEST_METHOD(SortAllMoodleFiles) + { + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\datasets.txt" + }; + GetFilenames(2, argv, infn, outfn); //also valid files + for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) + { + Assert::AreEqual(SortFile(infn[n], outfn[n], buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), OK); + } + } + TEST_METHOD(NullPtrs) + { + for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) + { + Assert::AreEqual(SortFile(nullptr, nullptr, nullptr, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), NOK); + } + } + TEST_METHOD(InvalidFileNames) + { + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + Assert::AreEqual(SortFile("bad", "morebad", buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), NOK); + } + TEST_METHOD(BadBufferSize) + { + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[2]; + unsigned short minv, maxv, avgv, nv; + Assert::AreEqual(SortFile(infn[0], outfn[0], buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), NOK); + } + }; +} diff --git a/feladat3/IFPQYY_feladat3V1/feladat3.cpp b/feladat3/IFPQYY_feladat3V1/feladat3.cpp new file mode 100644 index 0000000..e7b5b8b --- /dev/null +++ b/feladat3/IFPQYY_feladat3V1/feladat3.cpp @@ -0,0 +1,221 @@ +// IFPQYY | Tóth Dániel Mátyás | V1 +#include +#include +#include +#include "feladat3.h" +using namespace std; + +static int CopyStr(char* dest, const char* src, const char* concat = "\0"); +static void BubbleSort(unsigned char* arr, int len); + +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()) + { + CopyStr(infilenames[i], buf); + CopyStr(outfilenames[i], buf, ".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"; + } + while (i < 5) { + infilenames[i][0] = '\0'; + outfilenames[i][0] = '\0'; + i++; + } + cout << "*DONE\n"; + return status; +} + +static int CopyStr(char* dest, const char* src, const char* concat) { + if (dest == nullptr || src == nullptr) { + return NOK; + } + int i = 0; + while (src[i] != '\0') + { + dest[i++] = src[i]; + } + int j = 0; + while (concat[j] != '\0') + { + dest[i++] = concat[j++]; + } + dest[i] = '\0'; + return OK; +} + +int SortFile(char* infn, char* outfn, unsigned char* buf, + unsigned short* pmin, unsigned short* pmax, + unsigned short* pavg, unsigned short* pn, + unsigned short bufsize, bool test) { + 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 != MYBUFSIZE) // I guess? + { + return NOK; + } + + ifstream readifs(infn, ios_base::binary); + ofstream outofs(outfn, ios_base::binary); + if (!readifs.is_open() || outofs.bad()) + { + return NOK; + } + unsigned short files[16][MYBUFSIZE/2]; //this is probably a terrible solution. too bad! + int filesizes[16] = { 0 }; + int ptrshifts[16] = { 0 }; + + *pmin = MYMAXVALUE; + *pmax = 0; + *pavg = 0; + *pn = filesystem::file_size(infn)/2; // this can't be more than MYMAXVALUE anyways, so warning dully ignored + + if (test) + { + cout << "\nSTART: " << infn << " ----> " << outfn << "\n"; + cout << "*READ\n"; + } + + unsigned short n; + int i = 0; + int j = 0; + int usedfilescnt = 0; + while (readifs.read((char*)&n, sizeof(n))) { + if (*pmax < n) { + *pmax = n; + } + if (*pmin > n) { + *pmin = n; + } + *pavg += n; + buf[(i * 2) % (MYBUFSIZE)] = n; + buf[((i * 2)+1) % (MYBUFSIZE)] = n >> 8; + if (test) + { + cout << i << ".\t" << n << "\n"; + } + i++; + if (i % (MYBUFSIZE / 2) == 0) + { + BubbleSort(buf, MYBUFSIZE); + while (j < MYBUFSIZE/2) + { + files[usedfilescnt][j] = buf[j * 2] + buf[(j * 2) + 1] * 256; + j++; + } + filesizes[usedfilescnt] = MYBUFSIZE / 2; + usedfilescnt++; + j = 0; + } + } + readifs.close(); + + int size = (*pn * 2) % MYBUFSIZE; + BubbleSort(buf, size); + while (j < size / 2) + { + files[usedfilescnt][j] = buf[j * 2] + buf[(j * 2) + 1] * 256; + j++; + } + filesizes[usedfilescnt] = size/2; + usedfilescnt++; + + if (test) + { + cout << "\n*SORT, WRITE\n"; + } + + i = 0; + while (i < *pn) + { + int savedJ = 0; + unsigned short smallest = MYMAXVALUE; + for (j = 0; j < usedfilescnt; j++) + { + if (ptrshifts[j] >= filesizes[j]) + { + continue; + } + if (files[j][ptrshifts[j]] < smallest) + { + smallest = files[j][ptrshifts[j]]; + savedJ = j; + } + } + if (test) + { + cout << i << ".\t" << smallest << "\n"; + } + outofs.write((char *)&smallest, sizeof(smallest)); + ptrshifts[savedJ]++; + i++; + } + + + *pavg = *pavg / *pn; + + if (test) + { + cout << "\n*DONE\n"; + } + return OK; +} + +static void BubbleSort(unsigned char* arr, int len) { //note: this is a char*. you need to sort unsigned short*. kill 7 billion people + for (int i = 0; i < len / 2; i++) + { + for (int j = 0; j < (len / 2) - i - 1; j++) + { + unsigned short first = arr[j * 2] + arr[j * 2 + 1] * 256; + unsigned short second = arr[(j + 1) * 2] + arr[(j + 1) * 2 + 1] * 256; + if (first > second) + { + unsigned char temp = arr[j * 2]; + arr[j * 2] = arr[(j + 1) * 2]; + arr[(j + 1) * 2] = temp; + + temp = arr[j * 2 + 1]; + arr[j * 2 + 1] = arr[(j + 1) * 2 + 1]; + arr[(j + 1) * 2 + 1] = temp; + } + } + } +} \ No newline at end of file diff --git a/feladat3/IFPQYY_feladat3V1/feladat3.h b/feladat3/IFPQYY_feladat3V1/feladat3.h new file mode 100644 index 0000000..97f28e5 --- /dev/null +++ b/feladat3/IFPQYY_feladat3V1/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/IFPQYY_feladat3V1/main.cpp b/feladat3/IFPQYY_feladat3V1/main.cpp new file mode 100644 index 0000000..7e388de --- /dev/null +++ b/feladat3/IFPQYY_feladat3V1/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, MYBUFSIZE, true) == 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 diff --git a/feladat3/UnitTest1/UnitTest1.cpp b/feladat3/UnitTest1/UnitTest1.cpp new file mode 100644 index 0000000..ddb15a0 --- /dev/null +++ b/feladat3/UnitTest1/UnitTest1.cpp @@ -0,0 +1,113 @@ +// IFPQYY | Tóth Dániel Mátyás | V1 +#include "pch.h" +#include "CppUnitTest.h" +#include "feladat3.h" + +using namespace Microsoft::VisualStudio::CppUnitTestFramework; + +namespace UnitTest1 +{ + TEST_CLASS(UnitTest1) + { + public: + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + + + TEST_METHOD(InvalidFileParameter) + { + char* argv[] = { + "", + "doesntexist" + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), NOK); + } + TEST_METHOD(AllValidFileParameter) + { + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\datasets.txt" + //couldn't find the working directory :( + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), OK); + } + TEST_METHOD(NoFileParameter) + { + char* argv[] = { + "" + }; + Assert::AreEqual(GetFilenames(1, argv, infn, outfn), NOK); + } + TEST_METHOD(EmptyFile) + { + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\empty.txt" + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), NOK); + } + TEST_METHOD(InvalidFile) + { + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\bad.txt" + }; + Assert::AreEqual(GetFilenames(2, argv, infn, outfn), NOK); + } + TEST_METHOD(SortSomeMoodleFiles) + { + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\somedatasets.txt" + }; + GetFilenames(2, argv, infn, outfn); //valid files, too lazyto write in by hand + for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) + { + Assert::AreEqual(SortFile(infn[n], outfn[n], buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), OK); + } + } + TEST_METHOD(SortAllMoodleFiles) + { + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + char* argv[] = { + "", + "C:\\Users\\danit\\Desktop\\2026-27-cpp-homework\\feladat3\\UnitTest1\\datasets.txt" + }; + GetFilenames(2, argv, infn, outfn); //also valid files + for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) + { + Assert::AreEqual(SortFile(infn[n], outfn[n], buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), OK); + } + } + TEST_METHOD(NullPtrs) + { + for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) + { + Assert::AreEqual(SortFile(nullptr, nullptr, nullptr, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), NOK); + } + } + TEST_METHOD(InvalidFileNames) + { + static unsigned char buf[MYBUFSIZE]; + unsigned short minv, maxv, avgv, nv; + Assert::AreEqual(SortFile("bad", "morebad", buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), NOK); + } + TEST_METHOD(BadBufferSize) + { + char infn[MYMAXFILES][MYMAXFN] = {}; + char outfn[MYMAXFILES][MYMAXFN] = {}; + static unsigned char buf[2]; + unsigned short minv, maxv, avgv, nv; + Assert::AreEqual(SortFile(infn[0], outfn[0], buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true), NOK); + } + }; +} diff --git a/feladat3/UnitTest1/UnitTest1.vcxproj b/feladat3/UnitTest1/UnitTest1.vcxproj new file mode 100644 index 0000000..f463d0f --- /dev/null +++ b/feladat3/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\2026-27-cpp-homework\feladat3\feladat3;$(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\2026-27-cpp-homework\feladat3\feladat3\x64\Debug;$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories) + feladat3;%(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 + + + + + + + + + {05ad42de-8f96-4351-b07d-784a20d752bd} + + + + + + \ No newline at end of file diff --git a/feladat3/UnitTest1/UnitTest1.vcxproj.filters b/feladat3/UnitTest1/UnitTest1.vcxproj.filters new file mode 100644 index 0000000..f041cae --- /dev/null +++ b/feladat3/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/feladat3/UnitTest1/dataset/testin10.dat b/feladat3/UnitTest1/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/UnitTest1/dataset/testin10.dat.srt b/feladat3/UnitTest1/dataset/testin10.dat.srt new file mode 100644 index 0000000000000000000000000000000000000000..3dc756c4063d85b9d8a3a1d8dd411c990acfc8bf GIT binary patch literal 20 bcmd;3^44Y4v8}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/UnitTest1/dataset/testin100.dat.srt b/feladat3/UnitTest1/dataset/testin100.dat.srt new file mode 100644 index 0000000000000000000000000000000000000000..daf0768d2e81ca753fc9c7603065d935d689717e GIT binary patch literal 200 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 literal 0 HcmV?d00001 diff --git a/feladat3/UnitTest1/dataset/testin10000.dat.srt b/feladat3/UnitTest1/dataset/testin10000.dat.srt new file mode 100644 index 0000000000000000000000000000000000000000..7d01a707895049412e6df6ad472c188bfbe886bd GIT binary patch literal 20000 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 EAN6uKr2qf` literal 0 HcmV?d00001 diff --git a/feladat3/UnitTest1/dataset/testin5.dat b/feladat3/UnitTest1/dataset/testin5.dat new file mode 100644 index 0000000..0bea184 --- /dev/null +++ b/feladat3/UnitTest1/dataset/testin5.dat @@ -0,0 +1 @@ +”kÜ~:#q/# \ No newline at end of file diff --git a/feladat3/UnitTest1/dataset/testin5.dat.srt b/feladat3/UnitTest1/dataset/testin5.dat.srt new file mode 100644 index 0000000..bf81402 --- /dev/null +++ b/feladat3/UnitTest1/dataset/testin5.dat.srt @@ -0,0 +1 @@ +#:#q/”kÜ~ \ No newline at end of file diff --git a/feladat3/UnitTest1/dataset/testin50.dat b/feladat3/UnitTest1/dataset/testin50.dat new file mode 100644 index 0000000..abd7b60 --- /dev/null +++ b/feladat3/UnitTest1/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/UnitTest1/dataset/testin50.dat.srt b/feladat3/UnitTest1/dataset/testin50.dat.srt new file mode 100644 index 0000000..c079bf6 --- /dev/null +++ b/feladat3/UnitTest1/dataset/testin50.dat.srt @@ -0,0 +1 @@ +ÆËßµ r*û+D-â.c0 7Î8(<9™?ŽCDFH‰HŸHíLPM€OP9SƒUXYr]t^riëi ko±pÓpøpßuÄyézù} \ No newline at end of file diff --git a/feladat3/UnitTest1/datasets.txt b/feladat3/UnitTest1/datasets.txt new file mode 100644 index 0000000..05bd48a --- /dev/null +++ b/feladat3/UnitTest1/datasets.txt @@ -0,0 +1,5 @@ +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin5.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin10.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin50.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin100.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin10000.dat \ No newline at end of file diff --git a/feladat3/UnitTest1/empty.txt b/feladat3/UnitTest1/empty.txt new file mode 100644 index 0000000..e69de29 diff --git a/feladat3/UnitTest1/pch.cpp b/feladat3/UnitTest1/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/feladat3/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/feladat3/UnitTest1/pch.h b/feladat3/UnitTest1/pch.h new file mode 100644 index 0000000..9d715b0 --- /dev/null +++ b/feladat3/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/feladat3/UnitTest1/somedatasets.txt b/feladat3/UnitTest1/somedatasets.txt new file mode 100644 index 0000000..bec27e2 --- /dev/null +++ b/feladat3/UnitTest1/somedatasets.txt @@ -0,0 +1,8 @@ +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin5.dat +no +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin10.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin50.dat + + +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin100.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin10000.dat \ No newline at end of file diff --git a/feladat3/feladat3.slnx b/feladat3/feladat3.slnx index 353f8ac..24585b8 100644 --- a/feladat3/feladat3.slnx +++ b/feladat3/feladat3.slnx @@ -4,4 +4,5 @@ + diff --git a/feladat3/feladat3/dataset/testin10.dat.srt b/feladat3/feladat3/dataset/testin10.dat.srt new file mode 100644 index 0000000000000000000000000000000000000000..3dc756c4063d85b9d8a3a1d8dd411c990acfc8bf GIT binary patch literal 20 bcmd;3^44Y4*û+D-â.c0 7Î8(<9™?ŽCDFH‰HŸHíLPM€OP9SƒUXYr]t^riëi ko±pÓpøpßuÄyézù} \ No newline at end of file diff --git a/feladat3/feladat3/datasets.txt b/feladat3/feladat3/datasets.txt index 339ae98..05bd48a 100644 --- a/feladat3/feladat3/datasets.txt +++ b/feladat3/feladat3/datasets.txt @@ -1,12 +1,5 @@ -dataset\testin5.dat - - -C:\nonexistent.dum -dataset\testin10.dat - -dataset\testin50.dat -dataset\testin100.dat - -dataset\testin10000.dat - - +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin5.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin10.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin50.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin100.dat +C:\Users\danit\Desktop\2026-27-cpp-homework\feladat3\UnitTest1\dataset\testin10000.dat \ No newline at end of file diff --git a/feladat3/feladat3/feladat3.cpp b/feladat3/feladat3/feladat3.cpp index b65a098..e7b5b8b 100644 --- a/feladat3/feladat3/feladat3.cpp +++ b/feladat3/feladat3/feladat3.cpp @@ -6,6 +6,7 @@ using namespace std; static int CopyStr(char* dest, const char* src, const char* concat = "\0"); +static void BubbleSort(unsigned char* arr, int len); int GetFilenames(int argc, char* argv[], char infilenames[MYMAXFILES][MYMAXFN], @@ -44,7 +45,7 @@ int GetFilenames(int argc, char* argv[], } argifs.close(); int status = OK; - if (readAmount == 0) + if (i == 0) { status = NOK; cout << "Ures\tNOK\n"; @@ -57,6 +58,7 @@ int GetFilenames(int argc, char* argv[], cout << "*DONE\n"; return status; } + static int CopyStr(char* dest, const char* src, const char* concat) { if (dest == nullptr || src == nullptr) { return NOK; @@ -74,6 +76,7 @@ static int CopyStr(char* dest, const char* src, const char* concat) { dest[i] = '\0'; return OK; } + int SortFile(char* infn, char* outfn, unsigned char* buf, unsigned short* pmin, unsigned short* pmax, unsigned short* pavg, unsigned short* pn, @@ -85,20 +88,134 @@ int SortFile(char* infn, char* outfn, unsigned char* buf, { return NOK; } - if (bufsize != MYBUFSIZE) //I guess? + if (bufsize != MYBUFSIZE) // I guess? { return NOK; } - ifstream argifs(infn, ios_base::binary); - if (!argifs.is_open()) + ifstream readifs(infn, ios_base::binary); + ofstream outofs(outfn, ios_base::binary); + if (!readifs.is_open() || outofs.bad()) { return NOK; } + unsigned short files[16][MYBUFSIZE/2]; //this is probably a terrible solution. too bad! + int filesizes[16] = { 0 }; + int ptrshifts[16] = { 0 }; - int size = filesystem::file_size(infn); - cout << size; - short* allVals[MYMAXVALUE]; + *pmin = MYMAXVALUE; + *pmax = 0; + *pavg = 0; + *pn = filesystem::file_size(infn)/2; // this can't be more than MYMAXVALUE anyways, so warning dully ignored + if (test) + { + cout << "\nSTART: " << infn << " ----> " << outfn << "\n"; + cout << "*READ\n"; + } + + unsigned short n; + int i = 0; + int j = 0; + int usedfilescnt = 0; + while (readifs.read((char*)&n, sizeof(n))) { + if (*pmax < n) { + *pmax = n; + } + if (*pmin > n) { + *pmin = n; + } + *pavg += n; + buf[(i * 2) % (MYBUFSIZE)] = n; + buf[((i * 2)+1) % (MYBUFSIZE)] = n >> 8; + if (test) + { + cout << i << ".\t" << n << "\n"; + } + i++; + if (i % (MYBUFSIZE / 2) == 0) + { + BubbleSort(buf, MYBUFSIZE); + while (j < MYBUFSIZE/2) + { + files[usedfilescnt][j] = buf[j * 2] + buf[(j * 2) + 1] * 256; + j++; + } + filesizes[usedfilescnt] = MYBUFSIZE / 2; + usedfilescnt++; + j = 0; + } + } + readifs.close(); + + int size = (*pn * 2) % MYBUFSIZE; + BubbleSort(buf, size); + while (j < size / 2) + { + files[usedfilescnt][j] = buf[j * 2] + buf[(j * 2) + 1] * 256; + j++; + } + filesizes[usedfilescnt] = size/2; + usedfilescnt++; + + if (test) + { + cout << "\n*SORT, WRITE\n"; + } + + i = 0; + while (i < *pn) + { + int savedJ = 0; + unsigned short smallest = MYMAXVALUE; + for (j = 0; j < usedfilescnt; j++) + { + if (ptrshifts[j] >= filesizes[j]) + { + continue; + } + if (files[j][ptrshifts[j]] < smallest) + { + smallest = files[j][ptrshifts[j]]; + savedJ = j; + } + } + if (test) + { + cout << i << ".\t" << smallest << "\n"; + } + outofs.write((char *)&smallest, sizeof(smallest)); + ptrshifts[savedJ]++; + i++; + } + + + *pavg = *pavg / *pn; + + if (test) + { + cout << "\n*DONE\n"; + } return OK; +} + +static void BubbleSort(unsigned char* arr, int len) { //note: this is a char*. you need to sort unsigned short*. kill 7 billion people + for (int i = 0; i < len / 2; i++) + { + for (int j = 0; j < (len / 2) - i - 1; j++) + { + unsigned short first = arr[j * 2] + arr[j * 2 + 1] * 256; + unsigned short second = arr[(j + 1) * 2] + arr[(j + 1) * 2 + 1] * 256; + if (first > second) + { + unsigned char temp = arr[j * 2]; + arr[j * 2] = arr[(j + 1) * 2]; + arr[(j + 1) * 2] = temp; + + temp = arr[j * 2 + 1]; + arr[j * 2 + 1] = arr[(j + 1) * 2 + 1]; + arr[(j + 1) * 2 + 1] = temp; + } + } + } } \ No newline at end of file diff --git a/feladat3/feladat3/main.cpp b/feladat3/feladat3/main.cpp index d041184..7e388de 100644 --- a/feladat3/feladat3/main.cpp +++ b/feladat3/feladat3/main.cpp @@ -14,7 +14,7 @@ int main(int argc, char* argv[]) { } for (int n = 0; (n < MYMAXFILES) && (infn[n][0] != '\0'); n++) { - if (SortFile(infn[n], outfn[n], buf, &minv, &maxv, &avgv, &nv) == NOK) + if (SortFile(infn[n], outfn[n], buf, &minv, &maxv, &avgv, &nv, MYBUFSIZE, true) == NOK) return(NOK); } /*cout << argc;