|
0 / 0 / 0
Регистрация: 12.12.2011
Сообщений: 19
|
||
Списки24.05.2012, 23:40. Показов 527. Ответов 0
Метки нет (Все метки)
Добрый день : (Пишу на Dev-c++)
Задание . Сформировать стек циклического списка и удаляет из него стул заданного материала и максимальной высотой.. Итак, стул заданного материала удаляет, но не получаеться написать цикл чтобы проверял на максимальную высоту. Читаю два файла : vhodnoi.txt( red 100 moskow gazprom ivanov iron black 200 moskow gazprom ivanov tree red 300 moskow gazprom ivanov steel green 400 moskow gazprom ivanov tree white 500 moskow gazprom ivanov iron ) и записываю всё в другой файл вот мой код: #include <stdio.h> #include <ctype.h> #include <conio.h> #include <string.h> #include <malloc.h> #define Lmax 20 #define STUL struct stu #define CLR while (fgetc (f) != '\n') STUL { char cvet[Lmax]; int visota; struct { char city[Lmax]; char zavod[Lmax]; char fam[Lmax]; } izgot; char mater[Lmax]; STUL *next; /* поле указателя на следующую запись */ }; /* прототипы функций */ STUL *stack (char name[]); void vivod (STUL* stack, char name[]); STUL* del (STUL* stack); /* формирование стека стульев. на выходе - имя входного файла */ STUL *stack (char name[]) { STUL *tek, *stack = NULL; /* изначально список пуст */ FILE *f; f = fopen (name, "r"); if (f == 0) puts ("File not found!!!"); else { while (! feof (f)) { /* выделение памяти для новой записи */ tek = (STUL*)malloc (sizeof (STUL)); if (fgets (tek->cvet, Lmax, f)) { /* другой способ замены '\n' на '\0' */ tek->cvet[strlen (tek->cvet) - 1] = '\0'; fscanf (f, "%d", &tek->visota); CLR; fgets (tek->izgot.city, Lmax, f); tek->izgot.city[strlen (tek->izgot.city) - 1] = '\0'; fgets (tek->izgot.zavod, Lmax, f); tek->izgot.zavod[strlen (tek->izgot.zavod) - 1] = '\0'; fgets (tek->izgot.fam, Lmax, f); tek->izgot.fam[strlen (tek->izgot.fam) - 1] = '\0'; fgets (tek->mater, Lmax, f); tek->mater[strlen (tek->mater) - 1] = '\0'; tek->next = stack; stack = tek; } } free (tek); } return (stack); /* возвращается указатель на вершину стека */ } /* вывод списка в файл */ void vivod (STUL* stack, char name[]) { FILE *f2 = fopen (name, "w"); if (! stack) { fprintf (f2, "Spisok posle ydalenija pust \n"); } else { fprintf (f2, "Spisok posle udalenija \n"); fprintf (f2, "\n"); /* вывод списка в файл */ while (stack != NULL) { fprintf (f2, "cvet:%s\n", stack->cvet); fprintf (f2, "visota:%d\n", stack->visota); fprintf (f2, "city:%s\n", stack->izgot.city); fprintf (f2, "zavod:%s\n", stack->izgot.zavod); fprintf (f2, "fam:%s\n", stack->izgot.fam); fprintf (f2, "mater:%s\n", stack->mater); stack = stack->next; /* движение по списку */ } } fclose (f2); } /* удаление стульев */ STUL* del (STUL* stack) {/* результат - указатель на вершину измененного списка */ STUL *tek, *pred; /* указатели на текущую и предшествующую запись */ char mt[Lmax]; /* заданный материал */ int MIN; printf ("Vvedite material: "); gets (mt); tek = pred = stack; while (stack && tek) /* пока список не кончился и не удален полностью */ if (strcmp (mt, tek->mater) == 0) { if (tek == stack) /* удаление первой записи */ { stack = stack->next; free (tek); tek = pred = stack; } else /* удаление элемента из середины */ { pred->next = tek->next; free (tek); tek = pred->next; } } else { pred = tek; tek = tek->next; } return (stack); } main () { STUL *first; /* указатель на вершину стека */ char name1[Lmax], name2[Lmax]; /* имена входного и выходного файлов */ printf ("Vvedite imja vxodnogo faila: "); gets (name1); printf ("Vvedite imja vixodnogo faila: "); gets (name2); first = stack (name1); /* формирование стека */ if (first != NULL) { first = del (first); /* удаление записей */ vivod (first, name2); /* вывод результатов в файл */ printf ("Rezultat naxoditsja v faile %s\n", name2); } getch(); } Добавлено через 6 часов 53 минуты
0
|
||
| 24.05.2012, 23:40 | |
|
Ответы с готовыми решениями:
0
Списки, как склеить списки между собой? списки C++ списки |
| 24.05.2012, 23:40 | |
|
Помогаю со студенческими работами здесь
1
Списки в С++ Списки Списки Списки в c++ Списки C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|