Исправить ошибку в коде - C (СИ) (69747)

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

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

задача Удалить спортсмена из наименьшим количеством очков. КОД:
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <conio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. struct sport { char name[10]; int number; int kol; } sp;
  7. void input(FILE *); // создание нового файла
  8. void print(FILE *); // просмотр файла
  9. void app(FILE *); // добавление в файл
  10. void del(FILE *); // удаление игрока с наименьшим количеством очков
  11. int main(void)
  12. {
  13. char c;
  14. FILE *fp;
  15. while (1)
  16. {
  17. puts(" 1 – новый файл");
  18. puts(" 2 – просмотр файла");
  19. puts(" 3 – добавление в файл");
  20. puts(" 4 – удаление игрока с наименьшим количеством очков");
  21. puts(" 0 - выход");
  22. c = getchar();
  23. switch (c)
  24. {
  25. case '1':input(fp); break;// [B]вот тут ошибка[/B]
  26. case '2':print(fp); break;
  27. case '3':app(fp); break;
  28. case '4':del(fp); break;
  29. case '0':return 0;
  30. default: puts("неверный режим");
  31. }
  32. }
  33. }
  34. void input(FILE *fp)
  35. {
  36. char ch;
  37. fp = fopen("file1.dat", "wb"); // открытие бинарного файла для записи
  38. printf("\n Введите информацию о спортсменах \n");
  39. do
  40. {
  41. printf("\n Фамилия: "); scanf("%s", sp.name);
  42. printf(" Номер: "); scanf("%d", &sp.number);
  43. printf(" Количество очков: "); scanf("%d", &sp.kol);
  44. fwrite(&sp, sizeof(sp), 1, fp); // запись в файл одной структуры sp
  45. printf("\n Закончить? y/n ");
  46. ch = getchar();
  47. } while (ch != 'y');
  48. fclose(fp);
  49. }
  50. void print(FILE *fp)
  51. {
  52. int i;
  53. fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения
  54. i = 1;
  55. fread(&sp, sizeof(sp), 1, fp); // чтение из файла одной структуры sp
  56. while (!feof(fp))
  57. {
  58. printf("\n %3d спортсмен %-10s номер %d очков %d", i, sp.name, sp.number, sp.kol);
  59. fread(&sp, sizeof(sp), 1, fp);
  60. i++;
  61. }
  62. getchar();
  63. }
  64. void app(FILE *fp)
  65. {
  66. char ch;
  67. fp = fopen("file1.dat", "ab"); // открытие бинарного файла для добавления
  68. printf("\n Введите информацию о спортсменах \n");
  69. do
  70. {
  71. printf("\n Фамилия: "); scanf("%s", sp.name);
  72. printf(" Номер: "); scanf("%d", &sp.number);
  73. printf(" Количество очков: "); scanf("%d", &sp.kol);
  74. fwrite(&sp, sizeof(sp), 1, fp);
  75. printf("Закончить? y/n ");
  76. ch = getchar();
  77. } while (ch != 'y');
  78. fclose(fp);
  79. }
  80. void del(FILE *fp)
  81. {
  82. char ch; // [B]ВОТ ТУТ ОШИБКА[/B]
  83. int i, j, n, h;
  84. sport *s, p;
  85. fp = fopen("file1.dat", "rb"); // открытие бинарного файла для чтения
  86. // подсчет числа записей в файле
  87. n = 0;
  88. fseek(fp, 0, 2);
  89. n = ftell(fp) / sizeof(sport);
  90. rewind(fp);
  91. s = (sport *)malloc(n*sizeof(sp));
  92. // заполнение массива
  93. for (i = 0, h = 1; i<n; ++i)
  94. {
  95. fread(&sp, sizeof(sp), 1, fp);
  96. s[i] = sp;
  97. printf("\n %3d спортсмен %-10s номер %d очков %d", h, sp.name, sp.number, sp.kol);
  98. h++;
  99. }
  100. fclose(fp);
  101. fp = fopen("file1.dat", "wb"); // открытие бинарного файла для записи
  102. j = 1;
  103. while (j)
  104. {
  105. j = 0;
  106. for (i = 0; i<n - 1; i++)
  107. {
  108. if (s[i].kol<s[i + 1].kol)
  109. {
  110. p = s[i];
  111. s[i] = s[i + 1];
  112. s[i + 1] = p;
  113. j = 1;
  114. }
  115. }
  116. }
  117. for (i = 0; i<n - 1; ++i)
  118. fwrite(&s[i], sizeof(sp), 1, fp);
  119. printf("\n\n Спортсмен с наименьшим количеством очков: %5s (%d) удален. ", s[n - 1].name, s[n - 1].kol);
  120. getchar();
  121. free(s); // Освобождение выделенной по адресу s памяти
  122. fclose(fp);
  123. }
Работаю в визуалке 2013 Ошибки : Warning 1 warning C4101: 'ch' : unreferenced local variable d:\ 86 1 ConsoleApplication4 Error 2 error C4700: uninitialized local variable 'fp' used d:\source.cpp 26 1 ConsoleApplication4 Помогите пожалуйста.

Решение задачи: «Исправить ошибку в коде»

textual
Листинг программы
  1. s = (struct sport *)malloc(n*sizeof(sp));

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

  1. s - это переменная, которая будет использоваться для хранения указателя на структуру sp.
  2. n - это переменная, которая содержит количество структур, которые нужно выделить в памяти.
  3. sp - это структура данных, которую нужно выделить в памяти.
  4. sp - это структура данных, которая содержит поля, такие как name и value.
  5. sp - это структура данных, которая содержит поля, такие как name и value.
  6. sp - это структура данных, которая содержит поля, такие как name и value.
  7. sp - это структура данных, которая содержит поля, такие как name и value.
  8. sp - это структура данных, которая содержит поля, такие как name и value.
  9. sp - это структура данных, которая содержит поля, такие как name и value.
  10. sp - это структура данных, которая содержит поля, такие как name и value.
  11. sp - это структура данных, которая содержит поля, такие как name и value.
  12. sp - это структура данных, которая содержит поля, такие как name и value.
  13. sp - это структура данных, которая содержит поля, такие как name и value.
  14. sp - это структура данных, которая содержит поля, такие как name и value.
  15. sp - это структура данных, которая содержит поля, такие как name и value.
  16. sp - это структура данных, которая содержит поля, такие как name и value.
  17. sp - это структура данных, которая содержит поля, такие как name и value.
  18. sp - это структура данных, которая содержит поля, такие как name и value.
  19. sp - это структура данных, которая содержит поля, такие как name и value.
  20. sp - это структура данных, которая содержит поля, такие как name и value.

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


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

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

8   голосов , оценка 4 из 5

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

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

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