Описать тип записи Маршрут самолета - C (СИ)

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

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

Доброе время суток! Помогите пожалуйста найти и исправить ошибку в семестровой работе. Дана задача: Составить программу для работы с файлом простейшей БД. Она должна включать в себя меню и обеспечивать выполнение следующих функций: открытие и закрытие файла; создание и добавление записей в файл; вывод содержимого файла на экран; выбор и запись в новый файл данных с заданными характеристиками; выбор и корректировка содержимого файла. Содержание записей в файле: N Маршрут самолета Расстояние Количество мест Ошибка заключается в том, что переменная ved.n не объявлена.. точнее, объявлена, но не там где нужно, а где нужно - не пойму..
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. FILE *fp;
  4. void open(char filename[20], char dost[3]) //Открытие нового файла
  5. {
  6. int a;
  7. printf("\n Vvedite imya faila:");
  8. scanf("%s",filename);
  9. fopen(filename,"r");
  10. if(ftell(fp)==0) dost="w";
  11. else {printf("\n File suchestvuyet \n Vvedite tip dostypa \n w - perezapisat file \
  12. \n r - prochitat file \n w+ - chtenie i zapis \n");
  13. scanf("%s",dost);
  14. }
  15. fopen(filename,dost);
  16. }
  17. void creation(char filename[20]) //Создание файла
  18. {
  19. char k;
  20. do
  21. {
  22. printf("\n Vvedite nomer reisa:");
  23. scanf("%3d",ved.n);
  24. printf("\n Vvedite marshrut:");
  25. scanf("%30s",ved.marshrut);
  26. printf("\n Vvedite rasstoyanie:");
  27. scanf ("%5d", ved.rasst);
  28. printf ("\n Vvedite kolichestvo mest:");
  29. scanf ("%3d", ved.mest);
  30. void addrec(char filename[20]); //Добавление записей
  31. void corr(char filename[20]); //Корректировка файла
  32. struct lib
  33. {
  34. int n;
  35. char marshrut[30];
  36. int rasst[5];
  37. int mest[11];
  38. } ved;
  39. char filename[20];
  40. int main(int argc, char *argv[])
  41. {
  42. int a;
  43. char str1[3];
  44. printf("\n Otkroite ili sozdaite file");
  45. open(filename,str1);
  46. do
  47. {
  48. //Главное меню программы
  49. printf("\n Viberite trebuyemuyu operaziyu:\n 1 - Otkryt file \n 2 - Vivesti soderzhimoye na ekran\
  50. \n 3 - Redaktirovat file \n 4 - Dobavit zapis v file \n 0 - Vyhod");
  51. scanf("%d",a);
  52. switch(a)
  53. {
  54. case 0: return;
  55. case 1: fcloseall();
  56. open(filename,str1);break;
  57. case 2: printf("\n filename", filename[20]);break;
  58. case 3: corr(filename);break;
  59. case 4: addrec(filename);break;
  60. default: printf("\n Oshibka vvoda");
  61. } //switch
  62. } while(1);
  63. fcloseall();
  64. system("PAUSE");
  65. return 0;
  66. }

Решение задачи: «Описать тип записи Маршрут самолета»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h> /* для поддержки русского языка */
  4.  
  5. typedef enum { NO_FILE = 0, EMPTY_FILE = 1, VALID_FILE = 2 } FileInfo_t;
  6.  
  7. FileInfo_t testFile(const char *name){
  8.     FILE *f;
  9.     long pos;
  10.     if ( ( f = fopen(name, "rb") ) == NULL )
  11.         return NO_FILE;
  12.     fseek(f, 0, SEEK_END);
  13.     pos = ftell(f);
  14.     fclose(f);
  15.     return ( pos ) ? VALID_FILE : EMPTY_FILE;
  16. }
  17.  
  18. int main(void){
  19.     char file_name[512];
  20.     FileInfo_t status;
  21.     /*
  22.         FILE *f;
  23.         ещё чего-нибудь...
  24.     */
  25.     SetConsoleCP(1251);
  26.     SetConsoleOutputCP(1251);
  27.    
  28.     printf("Имя файла: ");
  29.     scanf("%s", file_name);
  30.     status = testFile(file_name);
  31.     switch ( status ){
  32.         case NO_FILE :
  33.             printf("Файл не существует или недоступен для чтения\n");
  34.             break;
  35.         case EMPTY_FILE :
  36.             printf("Пустой файл\n");
  37.             break;
  38.         case VALID_FILE :
  39.             printf("Файл с данными, доступными для чтения\n");
  40.             break;
  41.         default :
  42.             printf("ВСЁ ПОГИБЛО!!!\n");
  43.     }
  44.     exit(0);
  45. }

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

  1. Включаем необходимые заголовочные файлы:
    • stdio.h для работы с файлами и вывода данных в консоль
    • stdlib.h для работы с функцией rand() и приведением типов
    • windows.h для поддержки русского языка
  2. Определяем тип записи enum для файловой системы:
    • FileInfo_t это тип записи enum, который определяет статус файла
    • Варианты значения enum: NO_FILE, EMPTY_FILE, VALID_FILE
  3. Функция testFile для проверки статуса файла:
    • Открывает файл с помощью функции fopen()
    • Перемещает указатель чтения в конец файла с помощью fseek() и ftell()
    • Возвращает статус файла с помощью оператора ?
  4. Основная функция main:
    • Устанавливает кодировку консоли на русскую с помощью SetConsoleCP() и SetConsoleOutputCP()
    • Запрашивает имя файла с помощью scanf()
    • Вызывает функцию testFile() для проверки статуса файла
    • Использует оператор switch для вывода соответствующего сообщения в зависимости от статуса файла
    • Завершает программу с помощью exit(0)
  5. Проверка кода на ошибки и обработка исключений:
    • Проверка на отсутствие файла или доступ к нему для чтения
    • Обработка пустого файла
    • Обработка файла с данными, доступными для чтения
    • Обработка ошибки в случае несоответствия статуса файла значению enum

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


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

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

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

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

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

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