Форум программистов, компьютерный форум CyberForum.ru

Записи в файле(структурированные данные) - C++

Восстановить пароль Регистрация
 
Скуб
0 / 0 / 0
Регистрация: 07.05.2009
Сообщений: 30
16.01.2012, 11:40     Записи в файле(структурированные данные) #1
Нужна помощь по решению этой задачки.
Сформировать двоичный файл из элементов, заданной в варианте структуры, распечатать его содержимое, выполнить удаление и добавление элементов в соответствии со своим вариантом, используя для поиска удаляемых или добавляемых элементов функцию. Формирование, печать, добавление и удаление элементов оформить в виде функций. Предусмотреть сообщения об ошибках при открытии файла и выполнении операций ввода/вывода.

1. Структура "Видеокассета":
- название фильма;
- режиссер;
- продолжительность;
- цена.
Удалить все элементы с ценой выше заданной, добавить 3 элемента в конец файла.
Немного кода уже написал:
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
typedef struct
{
    char name[30];
    char director[30];
    int  duration;
    float  price;
} videoCassette;
 
void buildingFile();
void printFile();
void addElement();
void deleteElement();
bool isBigPrice(videoCassette vc);
void delElemsWithBigPrice();
 
FILE *fp;
char *filename={"D:/vc.dat"};
int arrSize = 0;
videoCassette vc;
float fixPrice;
 
void main()
{
   buildingFile();
   printFile();
 
 
 
    system("pause");
}
 
void buildingFile() {
    if ((fp = fopen( filename, "wb")) == NULL ) {
      cout << "Error writing in file";
        exit (1);
    }
 
   clrscr();
   char choice;
   do {
      addElement();
      arrSize++;
    cout << "Enter the next one more record? (y/n)";
      cin >> choice;
   } while (choice == 'y');
 
    fclose(fp);
}
 
void printFile() {
   clrscr();
    if ((fp = fopen(filename, "rb")) == NULL )  exit (1);
   int i=0;
    while(!feof(fp) && (i < arrSize))
    {
        fread(&vc, sizeof(videoCassette),1,fp);
      cout << "video cassette #" <<++i<<endl;
        cout << "Name: " << vc.name;
        cout << ". Director: " << vc.director;
        cout << ". Duration: " << vc.duration;
        cout << ". Price: " << vc.price << "." << endl << endl;
    }
}
 
void addElement() {
    if ((fp = fopen(filename, "ab")) == NULL ) {
    cout << "Error adding file";
      exit (1);
   }
    cout << "New video cassette."<< endl;
    cout << "Name: ";
    cin  >> vc.name;
    cout << "Director: ";
    cin  >> vc.director;
    cout << "Duration in minutes: ";
    cin  >> vc.duration;
    cout << "Price: ";
    cin  >> vc.price;
    cout << endl;
    fwrite(&vc, sizeof(videoCassette),1,fp);
    if (ferror(fp)!=NULL) exit(2);
 
   fclose(fp);
}
 
void deleteElement() {
 
}
 
bool isBigPrice(videoCassette vc) {
    if (vc.price > fixPrice)
        return true;
   else return false;
}
 
void delElemsWithBigPrice() {
   clrscr();
    cout << "Input fixed price: ";
   cin >> fixPrice;
 
 
}
Но чую принт неочень т.к. если добавятся ещё 3 записи с конца он все равно выведет 5. Может кто помочь допилить код: реализовать удаление записей из файла, добавление 3 записей в конец, и распечатку после этого всего.

на паскале все решало просто заливал в массив и с ним работал а тут ещё не разобрался
Pascal
1
2
3
4
5
6
 while not eof(fp) do
 begin
   inc(i);
   read(fp,t);
   b[i]:=t;
end;
Добавлено через 4 часа 51 минуту
сам уже реализовал добавление в конец файла. Очень нужна функция сравнения цены и удаление по этому критерию
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2012, 11:40     Записи в файле(структурированные данные)
Посмотрите здесь:

C++ удаление записи в бинарном файле
[B]создать файл и записать в него структурированные данные.[/B] C++
C++ создать файл и записать в него структурированные данные
C++ Используя ввод-вывод в стиле С создать файл и записать в него структурированные данные
C++ записи в файле записать в два списка
В файле не сохраняются данные C++
данные в файле C++
Перетасовать записи в файле C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 13:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru