Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Исходный код программы с комментариями ⇐ ПредыдущаяСтр 2 из 2
#include <iostream> #include <conio.h>
struct L1 // Структура очереди { int elem; // Данные типа int L1* next; // Указатель на следующий элемент };
struct L2 // Структура динамической матрицы { L1* Queue; // Данные типа L1 (Очередь) L2* prev; // Указатель на предыдущий элемент L2* next; // Указатель на следующий элемент };
L1* MenuQueue(int matr, L1* Queue);
void vivodQueue(L1* begin) //функция для вывода очереди { L1 *str; str = begin; printf("\nОчередь: "); while (str->next!=NULL) // пока str->next!=NULL выводим элемент очереди { printf("%d ", str->elem); str = str->next; } printf("%d ", str->elem); }
void vivodmasselem(L1* begin)//функция для вывода элемента матрицы {
if (begin == NULL) { printf("Очередь пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { L1* uk; uk = begin; while (uk->next!= NULL) // вывод очереди { printf("%d ", uk->elem); uk = uk->next; } printf("%d ", uk->elem); } }
void Vivodmass(L2**mass,L2*begin,bool flagstartMatr, int m, int n)//Функция для вывода матрицы { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if(begin==NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("Матрица: \n\n"); for (int i = 0; i < n; i++)//пока j < кол-ва строк { for (int j = 0; j < m; j++)//пока j < кол-ва столбцов { printf("\t\tmass[%d][%d] = ", i, j); vivodmasselem((mass[i] + j)->Queue); //функция для вывода элемента матрицы } printf("\n"); }
printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Queuefunc1(L1** begin, L1** end,L1 **uk, bool *flagstartQueue,int matr)//Функция начинает работу с очередью { if (*flagstartQueue == 1)
{ printf("Вы уже начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (matr == 1) { printf("Вы начали работу с очередью!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch();
*uk = *begin; // если мы зашли в изменение элемента то указатель end становится на свое место while ((*uk)->next!= NULL) { (*uk) = (*uk)->next; } *end = *uk; *flagstartQueue = 1; } else { printf("Вы начали работу с очередью!");// флаги становятся NULL *begin = *end; *begin = NULL; *end = NULL; *uk = NULL; *flagstartQueue = 1; printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Queuefunc2(L1** begin, L1** end, L1** uk, bool flagstartQueue,int *maxelem)//Функция делает очередь пустой { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { L1 *str; *uk = *begin; while (*uk!= *end)//от begin до end идет освобождение памяти { str = *uk; str = str->next; free(*uk); *uk = str; } free(*uk);// в конце указатели становятся NULL *uk = NULL; *begin = NULL; *end = NULL; *maxelem = 0; printf("Очередь успешно очищена!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Queuefunc3(L1** begin, L1** end, bool flagstartQueue)//Функция проверяет пуста ли очередь { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (*begin==NULL&&*end==NULL) { printf("Очередь пуста!");
printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("Очередь не пуста!"); vivodQueue(*begin); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Queuefunc4(L1* begin,L1*end, bool flagstartQueue)//Функция показывает значение элемента в начале очереди { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL) { printf("Очередь пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("Элемент в начале очереди: "); printf("%d", begin->elem); vivodQueue(begin); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Queuefunc5(L1** begin, L1** end, bool flagstartQueue,int *maxelem)//Функция удаляет начало очереди { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (*begin == NULL) { printf("Очередь пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (*begin == *end)// проверка если в очереди 1 элемент { printf("Число %d успешно удалёно!", (*begin)->elem); L1* uk; uk = (*begin)->next;//ставит uk на следующий элемент после удаляемого free(*begin);//освобождает память под удаляемый элемент *begin = NULL; *end = NULL; printf("\n\n\nДля продолжения нажмите любую кнопку..."); (*maxelem)--; _getch(); } else { printf("Число %d успешно удалёно!",(*begin)->elem); L1* uk; uk = (*begin)->next; free(*begin); (*begin) = uk; vivodQueue(*begin); (*maxelem)--;// уменьшение счетчика для проверки максимального кол-ва элементов printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
int Queuefunc6(L1** begin,L1**end, bool flagstartQueue,int *maxelem)//Функция берет элемент из начала очереди { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (*begin == NULL) { printf("Очередь пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (*begin == *end)// проверка если в очереди 1 элемент { printf("Вы успешно взяли число %d!", (*begin)->elem); int saveelem; L1* uk; uk = (*begin)->next; saveelem = (*begin)->elem; free(*begin); *begin=NULL; *end = NULL; (*maxelem)--; printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); return(saveelem);// возвращаем взятый элемент } else { printf("Вы успешно взяли число %d!", (*begin)->elem);
int saveelem; L1* uk; uk = (*begin)->next; saveelem = (*begin)->elem; free(*begin); (*begin) = uk; vivodQueue(*begin); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); (*maxelem)--; return(saveelem);// возвращаем взятый элемент } }
void Queuefunc7(L1** begin,L1**end, bool flagstartQueue)//Функция изменяет значение элемента в начале очереди { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (*begin == NULL) { printf("Очередь пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { int element = 0; printf("Введите число на который вы который хотите заменить: "); scanf("%d", &element); printf("\nЧисло %d успешно изменено на %d!\n", (*begin)->elem,element); (*begin)->elem = element;// элемент в начале очереди становится новым элементом vivodQueue(*begin); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Queuefunc8(L1** begin, L1** end, L1** uk, bool flagstartQueue,int *maxelem)//Функция добавляет элемент в конец очереди { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if(*maxelem>5)// проверка в очереди больше 6 элементов? { printf("Вы не можете добавить элемент, так как максимаьлное число элементов в очереди = 6!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if((*begin==NULL) && (*end==NULL))// если очередь пуста { getchar(); int element = 0; printf("Введите число который хотите добавить: "); scanf("%d", &element);
L1* str; str = (L1*)malloc(sizeof(L1));// выделяем память под int if(!str) { printf("Память не была выделена!!!"); exit(1); } *begin = str; *end = str; *uk=str; str->elem = element;// сохраняем в данных elem переменную element
str->next = NULL; // указатель на следующий = NULL printf("\nЧисло успешно добавлено!\n"); vivodQueue(*begin); (*maxelem)++; // увеличиваем счетчик для максимально допустимого кол-ва элементов printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { int element = 0; printf("Введите число который хотите добавить: "); scanf("%d", &element);
L1* str; str = (L1*)malloc(sizeof(L1)); if(!str) { printf("Память не была выделена!!!"); exit(1); } str->elem = element; (*end) = str; (*uk)->next = str; *uk = str; str->next = NULL; printf("\nЧисло успешно добавлено!\n"); vivodQueue(*begin); (*maxelem)++; printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Queuefunc9(L1* begin, bool flagstartQueue)//Функция распечатывает очередь { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL) { printf("Очередь пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { L1 *uk; uk = begin; printf("Очередь: "); while (uk->next!=NULL)// пока uk.next!=NULL выводим по 1 символу из очереди { printf("%d ", uk->elem); uk = uk->next; } printf("%d ", uk->elem); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
L1* Queuefunc10(L1** begin, L1** end, L1** uk, bool *flagstartQueue)//Функция заканчивает работу с очередью { if (flagstartQueue == 0) { printf("Вы не начали работу с очередью!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { flagstartQueue = 0; printf("Вы успешно завершили работу с очередью!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); system("cls"); return(*begin);// возвращает указатель на начало очереди который попадает в Queue элементов матрицы. } }
void Matrfunc1(L2** begin, L2** end, bool* flagstartMatr)//Функция начинает работу с матрицей { if (*flagstartMatr == 1) { printf("Вы уже начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("Вы начали работу с матрицей!");//обнуление указателей *begin = *end; *begin = NULL; *end = NULL; *flagstartMatr = 1;
printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Matrfunc2(L2***mass,L2** begin, L2** end, bool flagstartMatr, int* m, int* n)//Функция начинает работу с матрицей { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if(*begin==NULL&&*end==NULL)//проверка матрица пуста? { printf("Матрица уже пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { L2* uk; L1* str, * str1; uk = *end;
while (uk!= *begin)//идем с конца матрицы до начала { str = uk->Queue; while (str->next!= NULL)//обнуляем очереди { str1 = str; str1 = str1->next; free(str); str = str1; } free(str); uk = uk->prev; }
str = uk->Queue; while (str->next!= NULL)//обнуляем послудний элемент { str1 = str; str1 = str1->next; free(str); str = str1; } free(str);
for (int i = *n - 1; i > 0; i--)//освобождаем память под массив { free(*mass[i]); } free(*mass[0]); flagstartMatr = 0; *begin = NULL; *end = NULL; printf("Матрица успешно очищена!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
void Matrfunc3(L2**mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция проверяет пуста ли матрица { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("Матрица не пуста!\n\n"); Vivodmass(mass, begin, flagstartMatr, m, n);//вызов функции для вывода матрицы } }
void Matrfunc4(L2**mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция определяет число строк в матрице { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("Число строк в матрице = %d\n\n", n);//просто выводит переменную n Vivodmass(mass, begin, flagstartMatr, m, n); } }
void Matrfunc5(L2**mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция определяет число столбцов { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("Число столбцов в матрице = %d\n\n", m);//просто выводит переменную m Vivodmass(mass, begin, flagstartMatr, m, n); } }
void Matrfunc6(L2** mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция показывает значение элемента с индексом m n { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { int m1=0, n1=0;
printf("Матрица: \n\n");//Cначала выводится матрица for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { printf("\t\tmass[%d][%d] = ", i, j); vivodmasselem((mass[i] + j)->Queue); } printf("\n"); }
printf("\nВведите номер строки: n = ");//ввод номера строки scanf("%d", &n1); if (n1 > n-1||n1<0) { printf("Вы ввели неверный номер строки!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("\nВведите номер cтолбца: m = ");//Ввод номера столбца scanf("%d", &m1); if (m1 > m-1 || m1 < 0) { printf("Вы ввели неверный номер столбца!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else {
printf("\nЗначение элемента mass[%d][%d] = ", n1, m1);//Если ввели m и n правилььно то показываем значение элемента массива vivodmasselem((mass[n1] + m1)->Queue); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } } } }
L1* Matrfunc7(L2** mass, L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция берет элемент с индексами m n { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { int m1 = 0, n1 = 0;
printf("Матрица: \n\n");//Cначала выводится матрица for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { printf("\t\tmass[%d][%d] = ", i, j); vivodmasselem((mass[i] + j)->Queue); } printf("\n"); }
printf("\nВведите номер строки: n = "); scanf("%d", &n1); if (n1 > n - 1 || n1 < 0) { printf("Вы ввели неверный номер строки!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("\nВведите номер cтолбца: m = "); scanf("%d", &m1); if (m1 > m - 1 || m1 < 0) { printf("Вы ввели неверный номер столбца!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else {
printf("\nВы взяли элемент: mass[%d][%d] = ", n1, m1);//Если ввели m и n правилььно то берем значение элемента массива и возвращаем его vivodmasselem((mass[n1] + m1)->Queue); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); return((mass[n1] + m1)->Queue); } } } }
void Matrfunc8(L2*** mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция изменяет значение элемента индексами m n { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { int m1 = 0, n1 = 0; L2** mass1 = *mass; printf("Матрица: \n\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++)//вывод массива { printf("\t\tmass[%d][%d] = ", i, j); vivodmasselem(((mass1[i]) + j)->Queue); } printf("\n"); }
printf("\nВведите номер строки: n = "); scanf("%d", &n1); if (n1 > n - 1 || n1 < 0) { printf("Вы ввели неверный номер строки!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("\nВведите номер cтолбца: m = "); scanf("%d", &m1); if (m1 > m - 1 || m1 < 0) { printf("Вы ввели неверный номер столбца!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else {
((mass1[n1]) + m1)->Queue = MenuQueue(1, ((mass1[n1]) + m1)->Queue);//Вызывается меню очереди и в поле Queue попадает указатель на начало очереди printf("Значение элемента mass[%d][%d] успешно изменено!\n ", n1, m1); printf("\nmass[%d][%d] = ", n1, m1); vivodmasselem(((mass1[n1]) + m1)->Queue);//вывод измененного значения элемента printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } } } }
void Matrfunc9(L2**mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция показывает строку с индексом n { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { int n1 = 0;
printf("Матрица: \n\n");//вывод матрицы for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { printf("\t\tmass[%d][%d] = ", i, j); vivodmasselem((mass[i] + j)->Queue); } printf("\n"); }
printf("\nВведите номер строки: n = "); scanf("%d", &n1); if (n1 > n - 1 || n1 < 0) { printf("Вы ввели неверный номер строки!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("\nЗначение строки с индексом %d:\n\n", n1); for (int i = 0; i < m-1; i++)//Вывод строки с индексом n { printf("mass[%d][%d] = ",n1, i); vivodmasselem((mass[n1] + i)->Queue);
} printf("mass[%d][%d] = ",n1, m-1); vivodmasselem((mass[n1] + m-1)->Queue); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } }
}
void Matrfunc10(L2**mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция показывает столбец с индексом m { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { int m1 = 0;
printf("Матрица: \n\n");//вывод матрицы for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { printf("\t\tmass[%d][%d] = ", i, j); vivodmasselem((mass[i] + j)->Queue); } printf("\n"); }
printf("\nВведите номер столбца: m = "); scanf("%d", &m1); if (m1 > m - 1 || m1 < 0) { printf("Вы ввели неверный номер строки!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { printf("\nЗначение столбца с индексом %d:\n\n", m1);//Вывод столбца с индексом m for (int i = 0; i < n - 1; i++) { printf("mass[%d][%d] = ", i, m1); vivodmasselem((mass[i] + m1)->Queue); printf("\n");
} printf("mass[%d][%d] = ", m1, m - 1); vivodmasselem((mass[n-1] + m1)->Queue); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } } }
void Matrfunc11(L2**& mass, L2*& begin, L2*& end, bool flagstartMatr, int& m, int& n)//Функция удаляет строку матрицы { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else {
L2* uk; L1* str, * str1; uk = end; for (int i = 0; i < m; i++) { str = uk->Queue; while (str->next!= NULL)//удаление очередей в строке { str1 = str; str1 = str1->next; free(str); str = str1; } free(str);//удаление элементов строки uk = uk->prev; } if (n == 1)//проверка если в матрице 1 элемент { printf("Последняя строка успешно удалена!\nМатрица очищена!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); begin = NULL; end = NULL; m = 0; n = 0; } else { printf("Последняя строка успешно удалена!\n\n");//меняем указатели в последнем элементе массива (уже без строки) end = uk; end->next = NULL; n--; Vivodmass(mass, begin, flagstartMatr, m, n); } free(mass[n]);//освобождение памяти под последний элемент в массиве указателей } }
void Matrfunc12(L2**& mass, L2*& begin, L2*& end, bool flagstartMatr, int& m, int& n)//Функция удаляет столбец матрицы { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else if (begin == NULL && end == NULL) { printf("Матрица пуста!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); } else { L2* uk; L1* str, * str1;
for (int i = 0; i < n; i++) { uk = (mass[i] + m - 1); str = uk->Queue; while (str->next!= NULL)//удаление очередей в столбце { str1 = str; str1 = str1->next; free(str); str = str1; } free(str);//удаление элементов столбца }
for (int i = 0; i < n; i++) { mass[i] = (L2*)realloc(mass[i], (m - 1) * sizeof(L2));//очищение мамяти под последний столбец if(!mass[i]) { printf("Память не была выделена!!!"); exit(1); } }
if (m == 1)//проверка если в матрице 1 элемент { printf("Последний столбец успешно удалён!\nМатрица очищена!"); printf("\n\n\nДля продолжения нажмите любую кнопку..."); _getch(); begin = NULL; end = NULL; m = 0; n = 0; } else { for (int i = 0; i < n - 1; i++)//правильно расставляем указатели после удаления столбца { uk = (mass[i] + m - 2); uk->next = mass[i + 1]; mass[i + 1]->prev = uk; } (mass[n - 1] + m - 2)->next = NULL; end = (mass[n - 1] + m - 2); begin = mass[0]; m--; printf("Последний столбец успешно удалён!\n\n"); Vivodmass(mass, begin, flagstartMatr, m, n); } } }
L2* Matrfunc13(L2**mass,L2* begin, L2* end, bool flagstartMatr, int m, int n)//Функция берет строку с индексом n { if (flagstartMatr == 0) { printf("Вы не начали работу с матрицей!!!"); printf("\n\n\nДля продолжения нажмите любую кнопку...");
|
|||||||||
Последнее изменение этой страницы: 2021-05-11; просмотров: 46; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.31.209 (0.603 с.) |