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

Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций - C++

Восстановить пароль Регистрация
 
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
04.06.2013, 18:06     Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций #1
Сформировать двоичный файл, распечатать его содержимое. Формирование, печать, добавление и удаление элементов оформить в виде функций. Предусмотреть сообщения об ошибках при открытии файла и выполнении операций ввода/вывода.

Структура "Государство":
- название;
- государственный язык;
- денежная единица;
- курс валюты относительно $.
Удалить элемент с указанным названием, добавить 2 элемента в конец файла, используя для поиска удаляемых или добавляемых элементов функцию.

Вот. Не знаю как сделать удаление.
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
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;
 
struct Gosudarstvo 
{char nazvanie[20];
 char gosyaz[20];
 char dened[10];
 int curs;
};
char filename[]="data.dat"; 
FILE *f;
//=====================
void vvod()
 { Gosudarstvo ex;
   f=fopen(filename,"ab");
   cout << "\nNazvanie gosudarstva:";
   cin >> ex.nazvanie;
   cout << "\nGosydarsveniu yazik:";
   cin >> ex.gosyaz;
   cout << "\nDeneshnaya edenica:";
   cin >> ex.dened;
   cout << "\nCurs otnositelno dollara:";
   cin >> ex.curs;
   fwrite(&ex,sizeof(Gosudarstvo),1,f);
   fclose(f);
 }//vvod
//=====================
void vyvod()
 {
   Gosudarstvo ex;
   f=fopen(filename,"rb");
   while(!feof(f))
   {
   if(fread(&ex,sizeof(Gosudarstvo),1,f)==1)
    {
     cout << "\nNazvanie gosudarstva: " << ex.nazvanie;
     cout << "\nGosydarsveniu yazik: "<< ex.gosyaz;
     cout << "\nDeneshnaya edenica: "<< ex.dened;
     cout << "\nCurs otnositelno dollara:"<<ex.curs<<"\n\n";
    }
   }
   fclose(f);
 }
//=====================
void udalenie()
 { char nazv[20];
   Gosudarstvo ex;
   cout << "\n Kakyu stranu udalit:";
   cin >> nazv;
 
   f=fopen(filename,"rb");
   while(!feof(f))
   {
   if(fread(&ex,sizeof(Gosudarstvo),1,f)==1)
    {
     if(strcmp(ex.nazvanie,nazv)==0)
      {
     // тут должно быть удаление
      }
    }
   }
   fclose(f);
 }
//=====================
 
void main()
{ char otv;
  if((f=fopen(filename,"rb"))==NULL)
     f=fopen(filename,"wb");  
  fclose(f);
 
do 
 {
  cout<<"Vyberi dejstvie:\n";
  cout<<"\t1-Vvod dannyh\n";
  cout<<"\t2-Vyvod dannyh\n";
  cout<<"\t3-Udlit dannye po nazvaniyu gosudarstva\n";
  cout<<"\t4-Vyhod\n";
  cin >> otv;
  switch(otv)
   {
    case '1': vvod();break;
    case '2': vyvod();break;
    case '3': udalenie();break;
    case '4': exit(0);
 
    }
 }
while (otv!='4');
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 18:06     Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций
Посмотрите здесь:

Оформить программу в виде функций C++
Оформить одномерный массив в виде функций C++
C++ Оформить программу в виде функций
Оформить в виде функций C++
C++ Оформить в виде функций программу
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.06.2013, 18:28     Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций #2
Если файл небольшой, просто перезаписать туда без удаляемого элемента. Если большой - найти в файле этот элемент, записать на место него последний и уменьшить размер файла на размер элемента (при условии, что нет сортировки). Если же он отсортирован, то найти в файле этот элемент, сдвинуть на него все, что дальше и уменьшить размер файла на размер элемента
vetal0007
27 / 27 / 0
Регистрация: 11.02.2012
Сообщений: 299
04.06.2013, 19:30  [ТС]     Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций #3
Файл небольшой, я пытаюсь сейчас так и сделать. перезаписать без введенного элемента, но что то не получается...

Добавлено через 13 минут
Вопрос актуален
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
04.06.2013, 19:37     Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций #4
C++
1
#include <vector>
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
void udalenie()
 { char nazv[20];
   Gosudarstvo ex;
   cout << "\n Kakyu stranu udalit:";
   cin >> nazv;
 
    vector<Gosudarstvo> arr;
 
   //записываем в массив
   f=fopen(filename,"rb");
   while(!feof(f))
   {
   if(fread(&ex,sizeof(Gosudarstvo),1,f)==1)
    {
        arr.push_back(ex);
    }
   }
   fclose(f);
 
   f=fopen(filename,"wb");
   for (int i=0;i<arr.size();i++)
   {
        if(strcmp(arr[i].nazvanie,nazv)!=0)
        {
            fwrite(&arr[i],sizeof(Gosudarstvo),1,f);
        }
   }
   fclose(f);
 }
Yandex
Объявления
04.06.2013, 19:37     Работа с файлами. Формирование, Печать, добавление и удаление элементов оформить в виде функций
Ответ Создать тему
Опции темы

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