минорные изменения

This commit is contained in:
Kaehvaman 2025-01-21 21:05:16 +04:00
parent 1b2ab06b3a
commit 8c2a9f885e
6 changed files with 934 additions and 872 deletions

View File

@ -44,6 +44,7 @@
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v143</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<EnableASAN>true</EnableASAN>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
@ -51,6 +52,7 @@
<PlatformToolset>v143</PlatformToolset> <PlatformToolset>v143</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
<EnableASAN>false</EnableASAN>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">

View File

@ -2,6 +2,10 @@
#include <stdio.h> #include <stdio.h>
#include <Windows.h> #include <Windows.h>
/*
* íå çàáóäü âêëþ÷èòü AddressSanitizer / ñàíèòàéçåð àäðåñîâ
*/
int N1; int N1;
int N2; int N2;
int M2; int M2;
@ -202,6 +206,51 @@ void task3() {
printf("> Âûïîëíåíî çàäàíèå 3\n"); printf("> Âûïîëíåíî çàäàíèå 3\n");
} }
int countRow(int* buf, int len, int target)
{
int count = 0;
for (int i = 0; i < len; i++) {
if (buf[i] == target) {
count += 1;
}
}
return 0;
}
int countColumn(int num, int column)
{
int count = 0;
for (int n = 0; n < N2; n++) {
if (A2[n][column] == num) {
count += 1;
}
}
return count;
}
// Óäàëèòü òå ñòîëáöû â êîòîðûõ âñòðå÷àåòñÿ õîòÿ áû äâà îäèíàêîâûõ ýëåìåíòà
void taskAnton()
{
for (int m = 0; m < M2; m++) {
for (int n = 0; n < N2; n++) {
if (countColumn(A2[n][m], m) > 1) {
deleteColumn(m);
m -= 1;
break;
}
}
}
printf("> Âûïîëíåíî çàäàíèå Àíòîíà\n");
}
void print1D(int* buf, int len)
{
for (int i = 0; i < len; i++) {
printf("%d ", buf[i]);
}
printf("\n");
}
int main() int main()
{ {
SetConsoleCP(1251); SetConsoleCP(1251);
@ -209,13 +258,19 @@ int main()
loadLists("test1.txt"); loadLists("test1.txt");
printLists(); printLists();
task2(); //task2();
task3(); //task3();
taskAnton();
printLists(); printLists();
//print1D(A2[1], M2);
saveLists("out.txt"); saveLists("out.txt");
while (1) {
}
return 0; return 0;
} }

View File

@ -1,5 +1,10 @@
6 6
1 2 104 106 7 8 1 2 4 6 7 8
2 4 7 2
6 4 5 1 -2 1
2 3 4 3 3 6
6 10
10 -11
9 3
2 -1
5 -8

View File

@ -1,10 +1,10 @@
6 6
1 2 4 6 7 8 1 2 4 6 7 8
7 4 7 4
-2 -1 0 1 -2 1 0 1
3 4 -5 6 3 8 -5 6
6 4 5 1 6 -4 5 10
10 -1 0 1 10 -1 0 -11
2 3 4 3 9 3 4 3
2 1 0 -1 2 1 0 -1
5 -6 7 -8 5 -6 7 -8

View File

@ -1,218 +1,218 @@
#include <stdio.h> #include <stdio.h>
#include <Windows.h> #include <Windows.h>
int index(int num, int arr[], int len) { int index(int num, int arr[], int len) {
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
if (arr[i] == num) return i; if (arr[i] == num) return i;
} }
return -1; return -1;
} }
int count(int num, int arr[], int len) { int count(int num, int arr[], int len) {
int count = 0; int count = 0;
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
if (arr[i] == num) count += 1; if (arr[i] == num) count += 1;
} }
return count; return count;
} }
int arrmax(int arr[], int len) { int arrmax(int arr[], int len) {
int max = arr[0]; int max = arr[0];
for (int i = 1; i < len; i++) { for (int i = 1; i < len; i++) {
if (arr[i] > max) max = arr[i]; if (arr[i] > max) max = arr[i];
} }
return max; return max;
} }
int arrmin(int arr[], int len) { int arrmin(int arr[], int len) {
int min = arr[0]; int min = arr[0];
for (int i = 1; i < len; i++) { for (int i = 1; i < len; i++) {
if (arr[i] < min) min = arr[i]; if (arr[i] < min) min = arr[i];
} }
return min; return min;
} }
void printarr(int arr[], int len) { void printarr(int arr[], int len) {
printf("["); printf("[");
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
printf("%d, ", arr[i]); printf("%d, ", arr[i]);
} }
printf("\b\b]\n"); printf("\b\b]\n");
} }
void deleteindex(int index, int arr[], int* len) { void deleteindex(int index, int arr[], int* len) {
arr[index] = 0; arr[index] = 0;
for (int i = index; i < *len - 1; i++) { for (int i = index; i < *len - 1; i++) {
arr[i] = arr[i + 1]; arr[i] = arr[i + 1];
} }
*len -= 1; *len -= 1;
} }
void insert(int num, int index, int arr[], int* len) { void insert(int num, int index, int arr[], int* len) {
for (int i = *len; i > index; i--) { for (int i = *len; i > index; i--) {
arr[i] = arr[i - 1]; arr[i] = arr[i - 1];
} }
*len += 1; *len += 1;
arr[index] = num; arr[index] = num;
} }
void deletemax3(int arr[], int* len) { exchange_max_chains(int A[], int B[], int* sA, int* sB) {
int max = arr[0]; int a = A[0], sa = 1, ai = 0;
int maxi = 0; int b = B[0], sb = 1, bi = 0;
for (int i = 1; i < *len; i++) { int ts = 1;
if (arr[i] > max && arr[i] % 3 == 0) { for (int i = 0; i < *sA - 1; i++) {
max = arr[i]; if (A[i] == A[i + 1]) {
maxi = i; ts += 1;
} }
} else if (ts > sa) {
deleteindex(maxi, arr, len); sa = ts;
} ai = i + 1 - sa;
ts = 1;
exchange_max_chains(int A[], int B[], int* sA, int* sB) { a = A[i];
int a = A[0], sa = 1, ai = 0; }
int b = B[0], sb = 1, bi = 0; }
int ts = 1; ts = 1;
for (int i = 0; i < *sA - 1; i++) { for (int i = 0; i < *sB - 1; i++) {
if (A[i] == A[i + 1]) { if (B[i] == B[i + 1]) {
ts += 1; ts += 1;
} }
else if (ts > sa) { else if (ts > sb) {
sa = ts; sb = ts;
ai = i + 1 - sa; bi = i + 1 - sb;
ts = 1; ts = 1;
a = A[i]; b = B[i];
} }
} }
ts = 1; for (int i = 0; i < sa; i++) {
for (int i = 0; i < *sB - 1; i++) { deleteindex(ai, A, sA);
if (B[i] == B[i + 1]) { }
ts += 1; for (int i = 0; i < sb; i++) {
} insert(b, ai, A, sA);
else if (ts > sb) { }
sb = ts; for (int i = 0; i < sb; i++) {
bi = i + 1 - sb; deleteindex(bi, B, sB);
ts = 1; }
b = B[i]; for (int i = 0; i < sa; i++) {
} insert(a, bi, B, sB);
} }
for (int i = 0; i < sa; i++) { printf("A: %d %d %d\n", a, sa, ai);
deleteindex(ai, A, sA); printf("B: %d %d %d\n", b, sb, bi);
} printf("A = ");
for (int i = 0; i < sb; i++) { printarr(A, *sA);
insert(b, ai, A, sA); printf("B = ");
} printarr(B, *sB);
for (int i = 0; i < sb; i++) { }
deleteindex(bi, B, sB);
} void deletemax3(int arr[], int* len) {
for (int i = 0; i < sa; i++) { int max = arr[0];
insert(a, bi, B, sB); int maxi = 0;
} for (int i = 1; i < *len; i++) {
printf("A: %d %d %d\n", a, sa, ai); if (arr[i] > max && arr[i] % 3 == 0) {
printf("B: %d %d %d\n", b, sb, bi); max = arr[i];
printf("A = "); maxi = i;
printarr(A, *sA); }
printf("B = "); }
printarr(B, *sB); deleteindex(maxi, arr, len);
} }
//#define ARRLEN 10 //#define ARRLEN 10
int main() { int main() {
SetConsoleCP(1251); SetConsoleCP(1251);
SetConsoleOutputCP(1251); SetConsoleOutputCP(1251);
int arr[20] = { 3, 7, 12, 3, 4, 8, -1, 6, 1, 7 }; int arr[20] = { 3, 7, 12, 3, 4, 8, -1, 6, 1, 7 };
int size = 10; int size = 10;
int A[20] = {3, 2, 2, 5, 2, 1, 1, 1, 3, 9}; int A[20] = {3, 2, 2, 5, 2, 1, 1, 1, 3, 9};
int sA = 10; int sA = 10;
int B[20] = {1, 2, 5, 5, 4, 8, 3, 3}; int B[20] = {1, 2, 5, 5, 4, 8, 3, 3};
int sB = 8; int sB = 8;
int id, val; int id, val;
int n = 0; int n = 0;
do { do {
puts("\n"); puts("\n");
printf("Ñîäåðæèìîå ìàññèâà : "); printf("Ñîäåðæèìîå ìàññèâà : ");
printarr(arr, size); printarr(arr, size);
puts("Âûáåðèòå ïðîãðàììó"); puts("Âûáåðèòå ïðîãðàììó");
puts("1) Óäàëèòü ýëåìåíò ïî èíäåêñó"); puts("1) Óäàëèòü ýëåìåíò ïî èíäåêñó");
puts("2) Âñòàâèòü ýëåìåíò ïî èíäåêñó"); puts("2) Âñòàâèòü ýëåìåíò ïî èíäåêñó");
puts("3) Óäàëèòü ìèíèìàëüíûé ýëåìåíò"); puts("3) Óäàëèòü ìèíèìàëüíûé ýëåìåíò");
puts("4) Ïåðåä ìèíèìàëüíûì ýëåìåíòîì âñòàâèòü 0"); puts("4) Ïåðåä ìèíèìàëüíûì ýëåìåíòîì âñòàâèòü 0");
puts("5) Óäàëèòü âñå ÷¸òíûå ýëåìåíòû"); puts("5) Óäàëèòü âñå ÷¸òíûå ýëåìåíòû");
puts("6) Äóáëèðîâàòü âñå ÷¸òíûå ýëåìåíòû"); puts("6) Äóáëèðîâàòü âñå ÷¸òíûå ýëåìåíòû");
puts("7) Äîáàâèòü â íà÷àëî ýëåìåíò, ðàâíûé ìèíèìàëüíîìó"); puts("7) Äîáàâèòü â íà÷àëî ýëåìåíò, ðàâíûé ìèíèìàëüíîìó");
puts("99) Óäàëèòü ìàêñèìàëüíûé ýëåìåíò êðàòíûé òð¸ì"); puts("99) Óäàëèòü ìàêñèìàëüíûé ýëåìåíò êðàòíûé òð¸ì");
puts("10) Óäàëèòü ýëåìåíòû, âñòðå÷àþùèåñÿ â ìàññèâå òîëüêî îäèí ðàç"); puts("10) Óäàëèòü ýëåìåíòû, âñòðå÷àþùèåñÿ â ìàññèâå òîëüêî îäèí ðàç");
puts("11) Ìåæäó ìàññèâàìè A è B îáìåíÿòü èõ ñàìûå äëèííûå öåïî÷êè èç îäèíàêîâûõ ýëåìåíòîâ"); puts("11) Ìåæäó ìàññèâàìè A è B îáìåíÿòü èõ ñàìûå äëèííûå öåïî÷êè èç îäèíàêîâûõ ýëåìåíòîâ");
puts(""); puts("");
puts("0) exit program"); puts("0) exit program");
while (scanf_s(" %d", &n) != 1) { while (scanf_s(" %d", &n) != 1) {
scanf_s("%*[^\n]"); scanf_s("%*[^\n]");
scanf_s("%*c"); scanf_s("%*c");
} }
puts(""); puts("");
switch (n) switch (n)
{ {
case 1: case 1:
printf("delete index = "); printf("delete index = ");
scanf_s("%d", &id); scanf_s("%d", &id);
deleteindex(id, arr, &size); deleteindex(id, arr, &size);
break; break;
case 2: case 2:
printf("value = "); printf("value = ");
scanf_s("%d", &val); scanf_s("%d", &val);
printf("index = "); printf("index = ");
scanf_s("%d", &id); scanf_s("%d", &id);
insert(val, id, arr, &size); insert(val, id, arr, &size);
break; break;
case 3: case 3:
deleteindex(index(arrmin(arr, size), arr, size), arr, &size); deleteindex(index(arrmin(arr, size), arr, size), arr, &size);
break; break;
case 4: case 4:
insert(0, index(arrmin(arr, size), arr, size), arr, &size); insert(0, index(arrmin(arr, size), arr, size), arr, &size);
break; break;
case 5: case 5:
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
if (arr[i] % 2 == 0) deleteindex(i, arr, &size); if (arr[i] % 2 == 0) deleteindex(i, arr, &size);
} }
break; break;
case 6: case 6:
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
if (arr[i] % 2 == 0) { if (arr[i] % 2 == 0) {
insert(arr[i], i, arr, &size); insert(arr[i], i, arr, &size);
i += 2; i += 2;
} }
} }
break; break;
case 7: case 7:
insert(arrmin(arr, size), 0, arr, &size); insert(arrmin(arr, size), 0, arr, &size);
break; break;
case 99: case 99:
deletemax3(arr, &size); deletemax3(arr, &size);
break; break;
case 10: case 10:
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
if (count(arr[i], arr, size) == 1) { if (count(arr[i], arr, size) == 1) {
deleteindex(index(arr[i], arr, size), arr, &size); deleteindex(index(arr[i], arr, size), arr, &size);
i -= 1; i -= 1;
} }
} }
break; break;
case 11: case 11:
exchange_max_chains(A, B, &sA, &sB); exchange_max_chains(A, B, &sA, &sB);
break; break;
case 0: case 0:
puts("goodbye :3"); puts("goodbye :3");
break; break;
default: default:
puts("error: wrong N"); puts("error: wrong N");
break; break;
} }
} while (n != 0); } while (n != 0);
return 0; return 0;
} }

File diff suppressed because it is too large Load Diff