Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Исходный код программы с комментариямиСодержание книги
Поиск на нашем сайте #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; просмотров: 104; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.011 с.) |