Files
2026-02-21 10:47:00 +07:00

425 lines
13 KiB
C

#include "func.h"
void func(int x, int (*massive)[COL]){
int r, c, i, t, ixac, ixar, ixbc, ixbr, one, two;
int a, b, min, max;
int inbuff = 0, null = 0;
int buff[5];
switch(x){
case 31:
clear();
seeMassive(massive);
printf("\nSearch min and max in massive:");
min = max = a = *(*(massive)); ixar = 0; ixac = 0;
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
a = *(*(massive + c) + r);
if(a < min){ min = a; ixac = c; ixar = r; }
if(a > max){ max = a; ixbc = c; ixbr = r; }
}
}
printf("\n\tResult: Min:[%lc] | Index [%d;%d]\nMax:[%lc] | Index:[%d;%d]", min, ixac, ixar, max, ixbc, ixbr);
inp;
break;
case 32:
clear();
seeMassive(massive);
printf("\nSearch max in every row and column:");
b = a = *(*(massive));
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
a = *(*(massive + c) + r);
if(a > b){ b = a; ixac = c; ixar = r; }
}
printf("\n\tColumn [%d] | Max: %lc | Index [%d;%d]", c, b, ixac, ixar);
}
b = a = *(*(massive));
for(r = 0; r < ROW; r++){
for(c = 0; c < COL; c++){
a = *(*(massive + c) + r);
if(a > b){ b = a; ixac = c; ixar = r; }
}
printf("\n\tRow [%d] | Max: %lc | Index [%d;%d]", r, b, ixac, ixar);
}
inp;
break;
case 33:
clear();
seeMassive(massive);
printf("\nSearch [] > input");
inp;
if((i = buffinput(&null, &inbuff, buff)) == -1){ flush(); return; }
a = *buff;
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
b = *(*(massive + c) + r);
if(b > a)
printf("\n\tResult: [%lc] > %lc | Index [%d;%d]", b, a, c, r);
}
}
inp;
break;
case 34:
clear();
seeMassive(massive);
printf("\nSearch [] < input");
inp;
if((i = buffinput(&null, &inbuff, buff)) == -1){ return; }
a = *buff;
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
b = *(*(massive + c) + r);
if(b < a)
printf("\n\tResult: [%lc] < %lc | Index [%d;%d]", b, a, c, r);
}
}
inp;
break;
case 35:
t = 0;
do{
clear();
seeMassive(massive);
printf("\nSearch [] > input in Columns Between m and l");
finp; printf("k m l\t m & l should be 0-9\n");
finp;
if((i = buffinput(&null, &inbuff, buff)) == -1){ return; }
a = *buff;
one = *(buff + 2);
two = *(buff + 4);
if(one > two){ one = -1; }
} while(!(two >= '0' && two <= '9') && !(one >= '0' && one <= '9'));
printf("\nSearch [] > %lc in Columns %lc-%lc", a, one, two);
for(; one <= two; one++){
for(r = 0; r < ROW; r++){
b = *(*(massive + (one - '0')) + r);
if(b > a){
printf("\n\tResult: [%lc] > %lc | Index [%d;%d]", b, a, one - '0', r); t++;
}
}
}
if(t == 0) printf("\n\t[] > %lc not found.", a);
inp;
break;
case 36:
t = 0;
do{
clear();
seeMassive(massive);
printf("\nSearch [] > input in Rows Between m and l");
finp; printf("k m l\t m & l should be 0-9\n");
finp;
if((i = buffinput(&null, &inbuff, buff)) == -1){ return; }
a = *buff;
one = *(buff + 2);
two = *(buff + 4);
if(one > two){ one = -1; }
} while(!(two >= '0' && two <= '9') && !(one >= '0' && one <= '9'));
printf("\nSearch [] > %lc in Rows %lc-%lc", a, one, two);
for(; one <= two; one++){
for(c = 0; c < COL; c++){
b = *(*(massive + c) + (one - '0'));
if(b > a){
printf("\n\tResult: [%lc] > %lc | Index [%d;%d]", b, a, c, one - '0'); t++;
}
}
}
if(t == 0) printf("\n\t[] > %lc not found.", a);
inp;
break;
case 37:
t = 0;
do{
clear();
seeMassive(massive);
printf("\nSearch [] < input in Columns Between m and l");
finp; printf("k m l\t m & l should be 0-9\n");
finp;
if((i = buffinput(&null, &inbuff, buff)) == -1){ return; }
a = *buff;
one = *(buff + 2);
two = *(buff + 4);
if(one > two){ one = -1; }
} while(!(two >= '0' && two <= '9') && !(one >= '0' && one <= '9'));
printf("\nSearch [] < %lc in Columns %lc-%lc", a, one, two);
for(; one <= two; one++){
for(r = 0; r < ROW; r++){
b = *(*(massive + (one - '0')) + r);
if(b < a){
printf("\n\tResult: [%lc] < %lc | Index [%d;%d]", b, a, one - '0', r); t++;
}
}
}
if(t == 0) printf("\n\t[] < %lc not found.", a);
inp;
break;
case 38:
t = 0;
do{
clear();
seeMassive(massive);
printf("\nSearch [] < input in Rows Between m and l");
finp; printf("k m l\t m & l should be 0-9\n");
finp;
if((i = buffinput(&null, &inbuff, buff)) == -1){ return; }
a = *buff;
one = *(buff + 2);
two = *(buff + 4);
if(one > two){ one = -1; }
} while(!(two >= '0' && two <= '9') && !(one >= '0' && one <= '9'));
printf("\nSearch [] < %lc in Rows %lc-%lc", a, one, two);
for(; one <= two; one++){
for(c = 0; c < COL; c++){
b = *(*(massive + c) + (one - '0'));
if(b < a){
printf("\n\tResult: [%lc] < %lc | Index [%d;%d]", b, a, c, one - '0'); t++;
}
}
}
if(t == 0) printf("\n\t[] < %lc not found.", a);
inp;
break;
case 39:
clear();
seeMassive(massive);
printf("\nSearch all [] between Min & Max in massive.");
min = max = a = *(*(massive)); ixac = 0; ixar = 0;
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
a = *(*(massive + c) + r);
if(a < min){ min = a; ixac = c; }
if(a > max){ max = a; ixar = r; }
}
}
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
if((*(*(massive + c) + r)) >= min && (*(*(massive + c) + r) <= max)){
printf("\n\tResult: [%lc] | Index [%d|%d]", *(*(massive + c) + r), c, r);
}
}
}
inp;
break;
case 310:
clear();
seeMassive(massive);
int max = *(*(massive));
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
if(*(*(massive + c) + r) > max)
max = *(*(massive + c) + r);
}
}
do {
printf("\nInput k <= max value %lc: ", max);
finp;
if((i = buffinput(&null, &inbuff, buff)) == -1){ return; }
a = *buff;
if(a > max){
printf("\nError: k > max value. Try again.");
}
} while(a > max);
for(c = 0; c < COL; c++){
for(r = 0; r < ROW; r++){
if(*(*(massive + c) + r) % a == 0){
printf("\nResult: [%lc] | Index [%d;%d]", *(*(massive + c) + r), c, r);
}}}
inp;
break;
}
}
void func2(int x, int (*massive)[COL]){
int r,c,sum,i;
int inbuff = 0, null = 0;
int buff[5];
int k;
switch(x){
case 311:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of even []");
for (c = 0; c < COL; c++){
for (r = 0; r < ROW; r++){
if ((*(*(massive + c) + r)) % 2 == 0)
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 312:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of odd []");
for (c = 0; c < COL; c++){
for (r = 0; r < ROW; r++){
if ((*(*(massive + c) + r)) % 2 != 0)
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 313:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of []%%k");
finp;
if ((i = buffinput(&null, &inbuff, buff)) == -1) return;
k = *buff;
for (c = 0; c < COL; c++){
for (r = 0; r < ROW; r++){
if ((*(*(massive + c) + r)) % k == 0)
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 314:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of [] column%%2==0");
for (c = 0; c < COL; c += 2){
for (r = 0; r < ROW; r++){
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 315:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of [] column%%2!=0");
for (c = 1; c < COL; c += 2){
for (r = 0; r < ROW; r++){
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 316:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of [] rows%%2==0");
for (c = 0; c < COL; c++){
for (r = 0; r < ROW; r += 2){
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 317:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of [] rows%%2!=0");
for (c = 0; c < COL; c++){
for (r = 1; r < ROW; r += 2){
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 318:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of [] above main diagonal");
for (c = 0; c < COL; c++){
for (r = 0; r <= c; r++){
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 319:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of [] below main diagonal");
for (c = 0; c < COL; c++){
for (r = c; r < ROW; r++){
sum += *(*(massive + c) + r);
}
}
printf("\n\tResult: sum %d", sum);
inp;
break;
case 320:
sum = 0;
clear();
seeMassive(massive);
printf("\nSumm of [] on both diagonals");
for (c = 0; c < COL; c++){
sum += *(*(massive + c) + c);
sum += *(*(massive + c) + (ROW - 1 - c));
}
printf("\n\tResult: sum %d", sum);
inp;
break;
}
}