Finished lab15

This commit is contained in:
Kaehvaman 2024-10-21 21:35:18 +04:00
parent 5d9d854727
commit 0929cf7ec2
2 changed files with 219 additions and 10 deletions

View File

@ -2,8 +2,8 @@
#include <stdlib.h>
#include <Windows.h>
#define MAX_M 6
#define MAX_N 6
#define MAX_M 10
#define MAX_N 10
int m = 3;
int n = 3;
@ -63,11 +63,172 @@ void findMin() {
}
void deleteRow(int row) {
for (int i = row; i < m - 1; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = arr[i + 1][j];
}
}
m--;
}
void addColumn() {
if (n + 1 <= MAX_N) {
for (int i = 0; i < m; i++) {
arr[i][n] = 0;
}
n++;
}
else {
printf("Äîñòèãíóò ìàêñèìóì êîëîíîê!\n");
}
}
void insertColumn(int column) {
if (n + 1 <= MAX_N) {
for (int i = 0; i < m; i++) {
for (int j = n; j > column; j--) {
arr[i][j] = arr[i][j - 1];
}
}
for (int i = 0; i < m; i++) {
arr[i][column] = 0;
}
n++;
}
else {
printf("Äîñòèãíóò ìàêñèìóì êîëîíîê!\n");
}
}
void insertRow(int row) {
if (m + 1 <= MAX_M) {
for (int i = m; i > row; i--) {
for (int j = 0; j < n; j++) {
arr[i][j] = arr[i - 1][j];
}
}
for (int i = 0; i < n; i++) {
arr[row][i] = 0;
}
m++;
}
else {
printf("Äîñòèãíóò ìàêñèìóì ñòðîê!\n");
}
}
void odd10x() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (arr[i][j] % 2 != 0) arr[i][j] *= 10;
}
}
}
void crat10() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
if (arr[i][j] % 10 == 0) arr[i][j] /= 10;
}
}
}
void inputArr() {
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
printf("a%d%d = ", i, j);
scanf_s("%d", &arr[i][j]);
}
}
}
void save() {
FILE* fout = fopen("savefile.txt", "w");
if (fout == NULL) {
puts("Íåâîçìîæíî îòêðûòü ôàéë");
return;
}
fprintf(fout, "%d %d\n", m, n);
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
fprintf(fout, "%2d ", arr[i][j]);
}
fprintf(fout, "\n");
}
fclose(fout);
}
void load() {
FILE* fin = fopen("savefile.txt", "r");
if (fin == NULL) {
puts("Íåâîçìîæíî îòêðûòü ôàéë");
return;
}
fscanf_s(fin, "%d%d", &m, &n);
if (m > MAX_M || n > MAX_N) {
printf("Ñëèøêîì áîëüøîé ìàññèâ â ôàéëå!");
return;
}
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
fscanf_s(fin, "%d", &arr[i][j]);
}
}
fclose(fin);
}
void duplicateColumn(int column) {
insertColumn(column);
for (int i = 0; i < m; i++) {
arr[i][column] = arr[i][column + 1];
}
}
int count(int num, int arr[], int len) {
int count = 0;
for (int i = 0; i < len; i++) {
if (arr[i] == num) count += 1;
}
return count;
}
void row0() {
for (int i = 0; i < m; i++) {
if (count(0, arr[i], n) > 2) {
for (int j = 0; j < n; j++) {
arr[i][j] = 0;
}
}
}
}
void duplicateRow(int row) {
insertRow(row);
for (int j = 0; j < n; j++) {
arr[row][j] = arr[row + 1][j];
}
}
void dupRow0() {
for (int i = 0; i < m; i++) {
if (count(0, arr[i], n) > 0) {
duplicateRow(i);
i++;
}
}
}
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int tmp;
int n = 0;
do {
puts("\n");
@ -77,13 +238,18 @@ int main() {
puts("1) Заполнение значениями i * 10 + j");
puts("2) Заполнение нулями");
puts("3) Заполнение случайными числами от 0 до 9");
puts("4) ");
puts("5) ");
puts("6) ");
puts("7) ");
puts("99) ");
puts("10) ");
puts("11) ");
puts("4) Íàéòè ìèíèìàëüíûé ýëåìåíò");
puts("5) Óäàëèòü ñòðîêó");
puts("6) Äîáàâèòü ïóñòóþ êîëîíêó");
puts("7) Âñå íå÷åòíûå óâåëè÷èòü â 10 ðàç");
puts("8) Âñå êðàòíûå 10 óìåíüøèòü â 10 ðàç");
puts("9) Ââåñòè ìàññèâ ñ êëàâèàòóðû");
puts("10) Ñîõðàíèòü â ôàéë");
puts("11) Çàãðóçèòü èç ôàéëà");
puts("12) Âñòàâèòü ïóñòóþ êîëîíêó");
puts("13) Ïðîäóáëèðîâàòü çàäàííûé ñòîëáåö ìàññèâà");
puts("14) Îáíóëèòü ýëåìåíòû òåõ ñòðîê, â êîòîðûõ âñòðå÷àåòñÿ áîëåå äâóõ íóëåâûõ ýëåìåíòîâ");
puts("15) Ïðîäóáëèðîâàòü òå ñòðîêè, â êîòîðûõ âñòðå÷àþòñÿ íóëåâûå ýëåìåíòû");
puts("");
puts("0) Выйти из программы");
@ -105,7 +271,46 @@ int main() {
fillRand();
break;
case 4:
findMin();
break;
case 5:
printf("Êàêóþ ñòðîêó óäàëèòü: ");
scanf_s("%d", &tmp);
deleteRow(tmp);
break;
case 6:
addColumn();
break;
case 7:
odd10x();
break;
case 8:
crat10();
break;
case 9:
inputArr();
break;
case 10:
save();
break;
case 11:
load();
break;
case 12:
printf("Íà êàêîì èíäåêñå âñòàâèòü êîëîíêó: ");
scanf_s("%d", &tmp);
insertColumn(tmp);
break;
case 13:
printf("Íà êàêîì èíäåêñå îäóáëèðîâàòü ñòîëáåö: ");
scanf_s("%d", &tmp);
duplicateColumn(tmp);
break;
case 14:
row0();
break;
case 15:
dupRow0();
break;
case 0:
puts("Досвидания :3");

4
lab15/lab15/savefile.txt Normal file
View File

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