Синтаксическая ошибка в объявлении функции - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <locale.h>
  4. #include <Windows.h>
  5. struct Student
  6. {
  7. char fullname[50], group[10];
  8. float gpa;
  9. struct Student *next;
  10. };
  11. void Add(struct Student **first, char fullname[50], char group[10], float gpa)
  12. {
  13. struct Student *newelem = (struct Student*)malloc(sizeof(struct Student));
  14. strcpy(newelem->fullname, fullname);
  15. strcpy(newelem->group, group);
  16. newelem->gpa = gpa;
  17. newelem->next = *first;
  18. *first = newelem;
  19. }
  20. bool Delete(struct Student **first, char fullname[50])
  21. {
  22. struct Student *cur, *prev, *tmp;
  23. for (cur = *first, prev = NULL; cur != NULL; prev = cur, cur = cur->next)
  24. if (strcmp(cur->fullname, fullname) == 0)
  25. {
  26. if (cur == *first)
  27. *first = cur->next;
  28. else
  29. prev->next = cur->next;
  30. free(cur);
  31. return true;
  32. }
  33. return false;
  34. }
  35. void Print(struct Student *first)
  36. {
  37. struct Student *cur;
  38. for (cur = first; cur != NULL; cur = cur->next)
  39. printf("%30s%10s%10.2f\n", cur->fullname, cur->group, cur->gpa);
  40. }
  41. void Clear(struct Student **first)
  42. {
  43. struct Student *tmp;
  44. while (*first != NULL)
  45. {
  46. tmp = *first;
  47. *first = (*first)->next;
  48. free(tmp);
  49. }
  50. }
  51. int Menu()
  52. {
  53. int choice;
  54. setlocale(LC_ALL, "rus");
  55. system("cls");
  56. printf("1 - Вывести список на экран\n");
  57. printf("2 - Добавить новый элемент\n");
  58. printf("3 - Удалить элемент\n");
  59. printf("0 - Выйти из программы\n");
  60. printf("Ваш выбор: ");
  61. scanf("%i", &choice);
  62. return choice;
  63. }
  64. void main()
  65. {
  66. struct Student *first;
  67. char fullname[50], group[10], kod2[10];
  68. float gpa;
  69. first = NULL;
  70. while (1)
  71. {
  72. switch (Menu())
  73. {
  74. case 0: Clear(&first); return;
  75. case 1: Print(first); break;
  76. case 2:
  77. printf("FIO: ");
  78. fflush(stdin);
  79. gets(fullname);
  80. printf("Gruppa: ");
  81. fflush(stdin);
  82. gets(group);
  83. printf("Srednii ball: ");
  84. scanf("%f", &gpa);
  85. Add(&first, fullname, group, gpa);
  86. printf("Student dobavlen v spisok!\n");
  87. break;
  88. case 3:
  89. printf("Vvedite FIO studenta: ");
  90. fflush(stdin);
  91. gets(fullname);
  92. if (Delete(&first, fullname))
  93. printf("Student udalen iz spiska!\n");
  94. else
  95. printf("Net takogo studenta!\n");
  96. break;
  97. }
  98. system("pause");
  99. }
  100. }
Листинг программы
  1. 1>------ Построение начато: проект: Work2, Конфигурация: Debug Win32 ------
  2. 1> main.c
  3. 1>d:\c++\work2\work2\main.c(16): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  4. 1> d:\programs\express 2010\vc\include\string.h(105): см. объявление "strcpy"
  5. 1>d:\c++\work2\work2\main.c(17): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  6. 1> d:\programs\express 2010\vc\include\string.h(105): см. объявление "strcpy"
  7. 1>d:\c++\work2\work2\main.c(23): error C2061: синтаксическая ошибка: идентификатор "Delete"
  8. 1>d:\c++\work2\work2\main.c(23): error C2059: синтаксическая ошибка: ;
  9. 1>d:\c++\work2\work2\main.c(23): error C2059: синтаксическая ошибка: тип
  10. 1>d:\c++\work2\work2\main.c(100): warning C4013: Delete: нет определения; предполагается "extern" с возвратом типа "int"
  11. ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Почему?..
Теперь еще и true не распознает))
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. struct Student
  5. {
  6. char fullname[50], group[10];
  7. float gpa;
  8. struct Student *next;
  9. };
  10. void Add(struct Student **first, char fullname[50], char group[10], float gpa)
  11. {
  12. struct Student *newelem = (struct Student*)malloc(sizeof(struct Student));
  13. strcpy(newelem->fullname, fullname);
  14. strcpy(newelem->group, group);
  15. newelem->gpa = gpa;
  16. newelem->next = *first;
  17. *first = newelem;
  18. }
  19. bool Delete(struct Student **first, char fullname[50])
  20. {
  21. struct Student *cur, *prev, *tmp;
  22. for (cur = *first, prev = NULL; cur != NULL; prev = cur, cur = cur->next)
  23. if (strcmp(cur->fullname, fullname) == 0)
  24. {
  25. if (cur == *first)
  26. *first = cur->next;
  27. else
  28. prev->next = cur->next;
  29. free(cur);
  30. return true;
  31. }
  32. return false;
  33. }
  34. void Print(struct Student *first)
  35. {
  36. struct Student *cur;
  37. for (cur = first; cur != NULL; cur = cur->next)
  38. printf("%30s%10s%10.2f\n", cur->fullname, cur->group, cur->gpa);
  39. }
  40. void Clear(struct Student **first)
  41. {
  42. struct Student *tmp;
  43. while (*first != NULL)
  44. {
  45. tmp = *first;
  46. *first = (*first)->next;
  47. free(tmp);
  48. }
  49. }
  50. int Menu()
  51. {
  52. int choice;
  53. system("cls");
  54. printf("1 - Vyvesti spisok na ekran\n");
  55. printf("2 - Dobaviti novogo studenta\n");
  56. printf("3 - Udaliti studenta iz spiska\n");
  57. printf("0 - Vyiti iz programmy\n");
  58. printf("Vash vybor: ");
  59. scanf("%i", &choice);
  60. return choice;
  61. }
  62. void main()
  63. {
  64. struct Student *first;
  65. char fullname[50], group[10], kod2[10];
  66. float gpa;
  67. first = NULL;
  68. while (true)
  69. {
  70. switch (Menu())
  71. {
  72. case 0: Clear(&first); return;
  73. case 1: Print(first); break;
  74. case 2:
  75. printf("FIO: ");
  76. fflush(stdin);
  77. gets(fullname);
  78. printf("Gruppa: ");
  79. fflush(stdin);
  80. gets(group);
  81. printf("Srednii ball: ");
  82. scanf("%f", &gpa);
  83. Add(&first, fullname, group, gpa);
  84. printf("Student dobavlen v spisok!\n");
  85. break;
  86. case 3:
  87. printf("Vvedite FIO studenta: ");
  88. fflush(stdin);
  89. gets(fullname);
  90. if (Delete(&first, fullname))
  91. printf("Student udalen iz spiska!\n");
  92. else
  93. printf("Net takogo studenta!\n");
  94. break;
  95. }
  96. system("pause");
  97. }
  98. }
Листинг программы
  1. 1>------ Построение начато: проект: Work2, Конфигурация: Debug Win32 ------
  2. 1> main.c
  3. 1>d:\c++\work2\work2\main.c(15): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  4. 1> d:\programs\express 2010\vc\include\string.h(105): см. объявление "strcpy"
  5. 1>d:\c++\work2\work2\main.c(16): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
  6. 1> d:\programs\express 2010\vc\include\string.h(105): см. объявление "strcpy"
  7. 1>d:\c++\work2\work2\main.c(22): error C2061: синтаксическая ошибка: идентификатор "Delete"
  8. 1>d:\c++\work2\work2\main.c(22): error C2059: синтаксическая ошибка: ;
  9. 1>d:\c++\work2\work2\main.c(22): error C2059: синтаксическая ошибка: тип
  10. 1>d:\c++\work2\work2\main.c(76): error C2065: true: необъявленный идентификатор
  11. 1>d:\c++\work2\work2\main.c(98): warning C4013: Delete: нет определения; предполагается "extern" с возвратом типа "int"
  12. ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

Решение задачи: «Синтаксическая ошибка в объявлении функции»

textual
Листинг программы
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <clocale>
  4. #include <windows.h>
  5.  
  6. struct Student
  7. {
  8.     char fullname[50], group[10];
  9.     float gpa;
  10.     struct Student *next;
  11. };
  12.  
  13. void Add(struct Student **first, char fullname[50], char group[10], float gpa)
  14. {
  15.     struct Student *newelem = (struct Student*)malloc(sizeof(struct Student));
  16.     strcpy(newelem->fullname, fullname);
  17.     strcpy(newelem->group, group);
  18.     newelem->gpa = gpa;
  19.     newelem->next = *first;
  20.     *first = newelem;
  21. }
  22.  
  23. bool Delete(struct Student **first, char fullname[50])
  24. {
  25.     struct Student *cur, *prev, *tmp;
  26.     for (cur = *first, prev = NULL; cur != NULL; prev = cur, cur = cur->next)
  27.         if (strcmp(cur->fullname, fullname) == 0)
  28.         {
  29.             if (cur == *first)
  30.                 *first = cur->next;
  31.             else
  32.                 prev->next = cur->next;
  33.             free(cur);
  34.             return true;
  35.         }
  36.     return false;
  37. }
  38.  
  39. void Print(struct Student *first)
  40. {
  41.     struct Student *cur;
  42.     for (cur = first; cur != NULL; cur = cur->next)
  43.         printf("%30s%10s%10.2f\n", cur->fullname, cur->group, cur->gpa);
  44. }
  45.  
  46. void Clear(struct Student **first)
  47. {
  48.     struct Student *tmp;
  49.     while (*first != NULL)
  50.     {
  51.         tmp = *first;
  52.         *first = (*first)->next;
  53.         free(tmp);
  54.     }
  55. }
  56.  
  57. int Menu()
  58. {
  59.     int choice;
  60.     setlocale(LC_ALL, "rus");
  61.     system("cls");
  62.     printf("1 - Вывести список на экран\n");
  63.     printf("2 - Добавить новый элемент\n");
  64.     printf("3 - Удалить элемент\n");
  65.     printf("0 - Выйти из программы\n");
  66.     printf("Ваш выбор: ");
  67.     scanf("%i", &choice);
  68.     return choice;
  69. }
  70.  
  71. int main()
  72. {
  73.     system("chcp 1251");
  74.     struct Student *first;
  75.     char fullname[50], group[10], kod2[10];
  76.     float gpa;
  77.     first = NULL;
  78.     bool isExit = false;
  79.     while (!isExit)
  80.     {
  81.         switch (Menu())
  82.         {
  83.         case 0: Clear(&first); isExit = true;
  84.         case 1: Print(first); break;
  85.         case 2:
  86.             printf("FIO: ");
  87.             fflush(stdin);
  88.             gets(fullname);
  89.             printf("Gruppa: ");
  90.             fflush(stdin);
  91.             gets(group);
  92.             printf("Srednii ball: ");
  93.             scanf("%f", &gpa);
  94.             Add(&first, fullname, group, gpa);
  95.             printf("Student dobavlen v spisok!\n");
  96.             break;
  97.         case 3:
  98.             printf("Vvedite FIO studenta: ");
  99.             fflush(stdin);
  100.             gets(fullname);
  101.             if (Delete(&first, fullname))
  102.                 printf("Student udalen iz spiska!\n");
  103.             else
  104.                 printf("Net takogo studenta!\n");
  105.             break;
  106.         }
  107.         system("pause");
  108.     }
  109. }

Объяснение кода листинга программы

  1. В функции Add происходит выделение памяти под новый элемент списка с использованием функции malloc.
  2. В функции Delete происходит обход списка до нахождения элемента, который нужно удалить. Если элемент найден, он удаляется с помощью функции free.
  3. В функции Print происходит обход списка и вывод информации о каждом его элементе на экран.
  4. В функции Clear происходит обход списка и освобождение памяти под каждым его элементом с использованием функции free.
  5. В функции Menu происходит вывод на экран меню программы и ожидание выбора пользователя.
  6. В функции main происходит инициализация списка, ввод данных от пользователя и обработка его выбора с помощью условного оператора switch.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут