Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 21.10.2009
Сообщений: 12
1

Описать тип записи Маршрут самолета

11.01.2010, 20:49. Показов 540. Ответов 7
Метки нет (Все метки)

Доброе время суток!
Помогите пожалуйста найти и исправить ошибку в семестровой работе. Дана задача:
Составить программу для работы с файлом простейшей БД. Она должна включать в себя меню и обеспечивать выполнение следующих функций:
открытие и закрытие файла;
создание и добавление записей в файл;
вывод содержимого файла на экран;
выбор и запись в новый файл данных с заданными характеристиками;
выбор и корректировка содержимого файла.
Содержание записей в файле:
N Маршрут самолета Расстояние Количество мест

Ошибка заключается в том, что переменная ved.n не объявлена.. точнее, объявлена, но не там где нужно, а где нужно - не пойму..

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

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.01.2010, 20:49
Ответы с готовыми решениями:

Файлы. записи. Описать структуру AEROFLOT: пункт назначения; номер рейса; тип самолета
1. Описать структуру с именем AEROFLOT, содержащую следующие поля: название пункта назначения...

Описать тип данных MARSH (маршрут)
Условие задачи следующее: 1. Описать тип данных MARSH, содержащий следующие поля: ...

Описать структуру Aeroflot Пункт назначения, номер рейса, тип самолета, Время вылета, Дни недели. Создать массив структу
Описать структуру Aeroflot Пункт назначения, номер рейса, тип самолета, Время вылета, Дни недели....

Описать структуру с именем AEROFLOT содержащей поля: название пункта назначения рейса, номер рейса, тип самолета,
Описать структуру с именем AEROFLOT содержащей поля: название пункта назначения рейса, номер рейса,...

7
Day
1172 / 982 / 83
Регистрация: 29.10.2009
Сообщений: 1,386
11.01.2010, 23:39 2
Объявление структуры ved надо бы поместить повыше.
Транслятор ведь не ирландский сеттер!
Короче - правило: сначала объяви, а уж потом используй!
0
0 / 0 / 0
Регистрация: 21.10.2009
Сообщений: 12
12.01.2010, 12:08  [ТС] 3
да я понимаю, что выше, а куда? если перед do, то все равно ошибка.. ткните пальчиком пожалуйста..
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
10923 / 6861 / 1629
Регистрация: 25.07.2009
Сообщений: 12,563
12.01.2010, 14:28 4
Цитата Сообщение от Egoiste Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void open(char filename[20], char dost[3]) //Открытие нового файла { 
  int a; 
  printf("\n Vvedite imya faila:"); 
  scanf("%s",filename); 
  fopen(filename,"r"); /* видимо, fp = fopen(filename, "r"); 
    кстати ещё неплохая идея - проверять, удачно ли файл открылся ( fp != NULL ) */
  if(ftell(fp)==0) /* а чему же оно ещё может быть равно в только-что открытом файле? Сначала всё-таки fseek(fp, 0, SEEK_END); */
    dost="w"; /* не получится так, разве что strcpy(dost, "w"); */
  else {
    printf("\n File suchestvuyet \n Vvedite tip dostypa \n w - perezapisat file \ \n r - prochitat file \n w+ - chtenie i zapis \n"); 
    scanf("%s",dost); 
  } 
  fopen(filename,dost); /* опять непонятно, куда указатель на файл делся. 
    мало того, в fp по-прежнему указатель на этот файл, открытый для чтения, его бы закрыть сначала */
}
Дальше и смотреть не стал...

Добавлено через 21 минуту
поправил немного, заметил, что fp - глобальная переменная (что вобщем-то тоже не есть хорошо).
0
Day
1172 / 982 / 83
Регистрация: 29.10.2009
Сообщений: 1,386
12.01.2010, 19:36 5
Любую переменную надо объявлять до ПЕРВОГО ЕЕ ИСПОЛЬЗОВАНИЯ

Но и без этого ошибок полно (см post by easybudda)

Самое лучшее - перечитать учебник и написать все заново.
А так - все нормально, сами были такими...
0
0 / 0 / 0
Регистрация: 21.10.2009
Сообщений: 12
13.01.2010, 09:09  [ТС] 6
to easybudda:
спасибо за правку, с теоретической точки зрения я тоже обратила внимание на то, что Вы указали, но практическое воплощение этого затрудняет.. глобальная переменная - указание преподавателя, сказал, что так заморочек будет меньше..
если честно, то программер из меня хреновый (не знаю, является ли это слово здесь цензурным), и дело даже не в том, что с мой первый в жизни язык программирования.. я больше в железках, сетях, в общем, чем то материальном шарю..

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

Найдите вероятность выхода самолета на заданный маршрут
Помогите разобраться с задачей, не могу въехать: Вероятность выхода самолета на заданный маршрут на...

Описать тип записи и написать программу
Не выходит решить задачу.Опишите тип записи,содержащей информацию о книгах в библиотеке со...

Описать тип записи комплексное число
Описать тип записи комплексное число. Ввести два комплексных числа и символ, обозначающий одну из...

Работа по записи.Описать комбинированный тип
Описать комбинированный тип, содержащий основные сведения о компьютере: модель материнской платы,...

Записи: Описать комбинированный тип - сведения о 5 персонах
Собственно проблема заключается в 2х задачах --&gt; 1)Описать комбинированный тип для представления...

Описать тип записи - ведомость о товарах в магазине
описать тип записи - ведомость о товарах в магазине. сформировать масив товаров, которые есть в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.