|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.05.2020, 11:07 | #11 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 969
|
Код:
|
28.05.2020, 12:26 | #12 |
Форумчанин
Регистрация: 28.10.2014
Сообщений: 216
|
Нет, что-то не так.
Введіть команду: 1 - Виведення списку студентів, 2 - Змінити ім'я зазначеного студента, 3 - вихід 2 Введіть номер студента: 7 Введіть нове ім'я студента: Руслан Введіть команду: 1 - Виведення списку студентів, 2 - Змінити ім'я зазначеного студента, 3 - вихід 1 ========================== Номер Ім’я Вік Рейтинг ========================== 1Костянтин 18 90.00 2Діана 18 64.00 3Дар'я 19 76.00 4Тарас 18 50.00 5Влад 19 94.00 6Ілля 18 70.00 7Олександр 18 80.00 8Антон 19 77.00 9Евген 19 90.00 10Марія 18 60.00 ========================== Введіть команду: 1 - Виведення списку студентів, 2 - Змінити ім'я зазначеного студента, 3 - вихід Изменения просто не записываются. Вот полный окончательный код: [C]#include <stdio.h> #include <string.h> #include <windows.h> #define MAX 10 #define KOL 15 struct Student { int id; char Name[KOL]; int Age; float AverageRaiting; struct Student* nextStudent; }; void InitStudentList(struct Student** student) { *student = (struct Student*) malloc(sizeof(struct Student)); (*student)->id = 1; printf("Введіть ім’я 1-го студента: "); scanf("%s", (*student)->Name); printf("Введіть вік 1-го студента: "); scanf("%d", &(*student)->Age); printf("Введіть середній рейтинг 1-го студента: "); scanf("%f", &(*student)->AverageRaiting); printf("\n"); (*student)->nextStudent = NULL; struct Student* endStudent = *student; for (int i = 2; i <= MAX; i++) { endStudent->nextStudent = (struct Student*) malloc(sizeof(struct Student)); endStudent = endStudent->nextStudent; endStudent->id = i; printf("Введіть ім’я %d-го студента: ", i); scanf("%s", endStudent->Name); printf("Введіть вік %d-го студента: ", i); scanf("%d", &endStudent->Age); printf("Введіть середній рейтинг %d-го студента: ", i); scanf("%f", &endStudent->AverageRaiting); printf("\n"); endStudent->nextStudent = NULL; } } void PrintList(struct Student* student) { struct Student* printStudent = student; printf("==========================\ n"); printf("Номер Ім’я Вік Рейтинг \n"); printf("==========================\ n"); while (printStudent) { printf("%d", printStudent->id); printf("%-15s", printStudent->Name); printf("%4d", printStudent->Age); printf("%8.2f", printStudent->AverageRaiting); printf("\n"); printStudent = printStudent->nextStudent; } printf("==========================\ n"); } void FreeList(struct Student** student) { if (*student == NULL) return; struct Student* tmp = *student; struct Student* curr_stud; while (tmp) { curr_stud = tmp; tmp = tmp->nextStudent; free(curr_stud); } *student = NULL; } void ChangeStudentName(int n, char name[KOL], struct Student* students) { struct Student* st = 0; int students_count = MAX; for (st = students; st < students + students_count; st++) { if (st->id == n) { const int size = sizeof(st->Name); if (size && size >= sizeof(name)) { memcpy(st->Name, name, size); st->Name[size - 1] = '\0'; } printf("зміни записані"); break; } } } int main(void) { int command; struct Student* BaseStudent = NULL; SetConsoleCP(1251); SetConsoleOutputCP(1251); InitStudentList(&BaseStudent); for (; { printf("Введіть команду:\n 1 - Виведення списку студентів,\n 2 - Змінити ім'я зазначеного студента,\n 3 - вихід\n"); scanf("%d", &command); switch (command) { case 1: PrintList(BaseStudent); break; case 2: { int n; char name[KOL]; printf("Введіть номер студента: "); scanf("%d", &n); printf("Введіть нове ім'я студента: "); scanf("%s", &name); ChangeStudentName(n, name, BaseStudent); break; } case 3: FreeList(&BaseStudent); return 0; break; default: printf("Помилка вводу..."); FreeList(&BaseStudent); return 0; break; } } return 0; } [/C] |
28.05.2020, 12:41 | #13 |
Форумчанин
Регистрация: 28.10.2014
Сообщений: 216
|
Даже с strcpy(st->Name,name) не пашет
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Линейный односвязный список на Си | Enni | Помощь студентам | 24 | 28.03.2016 18:11 |
Односвязный линейный список | flecso | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 13.05.2012 02:51 |
С++ линейный односвязный список | Lady IcE | Помощь студентам | 3 | 25.04.2011 20:24 |
Линейный-односвязный список | Айдар | Помощь студентам | 1 | 01.06.2010 10:20 |
линейный односвязный список на С - что это?? о_О | aka_Kiss | Помощь студентам | 8 | 22.12.2009 01:39 |