Добавить lab15
This commit is contained in:
parent
2b0e7b52d4
commit
9f6785c497
236
lab15
Normal file
236
lab15
Normal file
@ -0,0 +1,236 @@
|
||||
#include <stdio.h>
|
||||
#include <Windows.h>
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#define NUM_ELEMENTS 100
|
||||
|
||||
int arr[NUM_ELEMENTS][NUM_ELEMENTS];
|
||||
int n = 3, m = 4;
|
||||
|
||||
void print_arr() {
|
||||
printf("!!!! print() !!!!\n");
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
printf("%3d ", arr[i][j]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
}
|
||||
void fillIx10() {
|
||||
printf("!!!! fillIx10() !!!!\n");
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
arr[i][j] = i * 10 + j;
|
||||
}
|
||||
}
|
||||
}
|
||||
void fillZero() {
|
||||
printf("!!!! fillZero() !!!!\n");
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
arr[i][j] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
void randFill0_9() {
|
||||
printf("!!!! randFill0_9() !!!!\n");
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
arr[i][j] = rand() % 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void deleteRow(int delRow) {
|
||||
printf("!!!! deleteRow(%d) !!!!\n", delRow);
|
||||
for (int i = delRow; i < n - 1; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
arr[i][j] = arr[i + 1][j];
|
||||
}
|
||||
}
|
||||
n--;
|
||||
}
|
||||
void save() {
|
||||
FILE* fout = fopen("C:\\temp\\arr1.txt", "wt");
|
||||
if (fout == NULL) {
|
||||
printf("Выходной файл не создался");
|
||||
return;
|
||||
}
|
||||
|
||||
fprintf(fout, "%d ", n);
|
||||
fprintf(fout, "%d\n", m);
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
fprintf(fout, "%d ", arr[i][j]);
|
||||
}
|
||||
fprintf(fout, "\n");
|
||||
}
|
||||
|
||||
fclose(fout);
|
||||
}
|
||||
void load() {
|
||||
|
||||
FILE* fin = fopen("C:\\temp\\arr1.txt", "rt");
|
||||
if (fin == NULL) {
|
||||
printf("Входной файл не найден");
|
||||
return;
|
||||
}
|
||||
|
||||
fscanf_s(fin, "%d", &n);
|
||||
fscanf_s(fin, "%d", &m);
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
fscanf_s(fin, "%d", &arr[i][j]);
|
||||
}
|
||||
}
|
||||
|
||||
fclose(fin);
|
||||
}
|
||||
|
||||
void duplicateColumn(int colIndex) {
|
||||
printf("!!!! duplicateColumn() !!!!\n");
|
||||
for (int i = 0; i < n; i++) {
|
||||
arr[i][m] = arr[i][colIndex];
|
||||
}
|
||||
m++;
|
||||
}
|
||||
|
||||
|
||||
void inputA() {
|
||||
printf("Введите количество строк (n): ");
|
||||
scanf_s("%d", &n);
|
||||
|
||||
printf("Введите количество столбцов (m): ");
|
||||
scanf_s("%d", &m);
|
||||
printf("Введите элементы массива:\n");
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
printf("arr[%d][%d]: ", i, j);
|
||||
scanf_s("%d", &arr[i][j]);
|
||||
}
|
||||
}
|
||||
}
|
||||
void oddnumx10() {
|
||||
printf("!!!! oddnumx10 !!!!\n");
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
if (arr[i][j] % 2 != 0) {
|
||||
arr[i][j] *= 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void multiples10() {
|
||||
printf("!!!! multiples10 !!!!\n");
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
if (arr[i][j] % 10 == 0) {
|
||||
arr[i][j] /= 10;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
void func_11() {
|
||||
int min, max, min_i, min_j;
|
||||
min = arr[0][0]; max = arr[0][0];
|
||||
min_i = 0; min_j = 0;
|
||||
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < m; j++) {
|
||||
if (arr[i][j] < min) {
|
||||
min = arr[i][j];
|
||||
min_i = i;
|
||||
min_j = j;
|
||||
}
|
||||
if (arr[i][j] > max) {
|
||||
max = arr[i][j];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int mean;
|
||||
mean = (max + min) / 2;
|
||||
|
||||
for (int i = 0; i < min_i; i++) {
|
||||
for (int j = 0; j < min_j; j++) {
|
||||
arr[i][j] = mean;
|
||||
}
|
||||
}
|
||||
}
|
||||
void menu1() {
|
||||
printf("\n");
|
||||
printf("------------------------------\n");
|
||||
printf("Выберите нужную вам операцию:\n");
|
||||
printf("1: Заполнить значениями i * 10 + j\n");
|
||||
printf("2: заполнить нулями\n");
|
||||
printf("3: заполнить случайными значениями\n");
|
||||
printf("4: все нечетные увеличить в 10 раз\n");
|
||||
printf("5: все кратные 10 уменьшить в 10 раз\n");
|
||||
printf("6: введите массив с клавиатуры\n");
|
||||
printf("7: сохранить массив в файле\n");
|
||||
printf("8: загрузить массив из готового файла\n");
|
||||
printf("9: удалить заданную строку из массива\n");
|
||||
printf("10: продублировать заданный столбец массива\n");
|
||||
printf("11:все элементы, стоящие выше и левее min элемента\n");
|
||||
printf("заменить на среднее арифметическое min и max элементов\n");
|
||||
printf("\n");
|
||||
printf("-1: Выйти из программы\n");
|
||||
printf("Выбранная операция >>>>>> ");
|
||||
}
|
||||
void main() {
|
||||
SetConsoleCP(1251);
|
||||
SetConsoleOutputCP(1251);
|
||||
int item;
|
||||
do {
|
||||
print_arr();
|
||||
menu1();
|
||||
scanf_s("%d", &item);
|
||||
printf("\n");
|
||||
switch (item) {
|
||||
case 9: {
|
||||
int num;
|
||||
printf("Номер строки, которую нужно удалить: ");
|
||||
scanf_s("%d", &num);
|
||||
deleteRow(num);
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
save();
|
||||
break;
|
||||
case 10: {
|
||||
printf("Индекс столбца, чтобы его продублировать: ");
|
||||
int c;
|
||||
scanf_s("%d", &c);
|
||||
duplicateColumn(c);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
fillIx10();
|
||||
break;
|
||||
case 2:
|
||||
fillZero();
|
||||
break;
|
||||
case 3:
|
||||
randFill0_9();
|
||||
break;
|
||||
case 6:
|
||||
inputA();
|
||||
break;
|
||||
case 5:
|
||||
multiples10();
|
||||
break;
|
||||
case 4:
|
||||
oddnumx10();
|
||||
break;
|
||||
case 8:
|
||||
load();
|
||||
break;
|
||||
case 11:
|
||||
func_11();
|
||||
break;
|
||||
}
|
||||
|
||||
} while (item != -1);
|
||||
}
|
Loading…
Reference in New Issue
Block a user