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

Написать программу записи к файлу элементов типа структура - C++

Восстановить пароль Регистрация
 
duden
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 42
04.06.2010, 00:01     Написать программу записи к файлу элементов типа структура #1
Написать программу записи к файлу элементов типа структура для реестрации автомобилей с полями:
Марка автомобиля,
год выпуска,
цвет,
номер.

Распечатать информацию из файла про автомобили , с годом выпуска не поже 2005 года

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#include <fstream.h>
#include <iostream.h>
#include <functional.h>
 
#include <vector>
 
template<typename T> void write(std::ofstream &ofs, T &t) {
   ofs.write(reinterpret_cast<char*>(&t), sizeof(T)); }
 
template<typename T> void read (std::ifstream &ifs, T &t) {
   ifs.read (reinterpret_cast<char*>(&t), sizeof(T)); }
 
template<typename T> void write_v(std::ofstream &ofs, std::vector<T> &v) 
{
   std::vector<T>::size_type size = v.size();
   write(ofs, size);
 
   for(std::vector<s>::iterator it = v.begin(); it != v.end(); ++it)
      write(ofs, *it);
}
 
template<typename T> void read_v (std::ifstream &ifs, std::vector<T> &v)
{
   std::vector<T>::size_type size = 0;
   read(ifs, size);
 
   v.reserve(size);
   while(size--)
   {
      s t;
      read(ifs, t);
      v.push_back(t);
   }
}
 
struct s
{
   char mark [16];
   char color[16];
   int  year;
   int  num;
};
 
void input (s * str)
{
   std::cout << "mark: ";
   std::cin  >> str->mark;
 
   std::cout << "color: ";
   std::cin  >> str->color;
 
   std::cout << "year: ";
   std::cin  >> str->year;
 
   std::cout << "num: ";
   std::cin  >> str->num;
}
 
void output(s * str)
{
   std::cout << str->mark << '.' << str->color << '.' << str->year << '.' << str->num << std::endl;
}
 
bool predicate(s * str)
{
   if(str->year >= 2005)
      return true;
   else
      return false;
}
 
int main()
{
   int nstructs = 0;
 
   std::cout << "enter amount autos for write data to file (0 - base not created): ";
   std::cin  >> nstructs;
 
   if(nstructs != 0)
   {
      std::ofstream out("file.dat");
      if(out.fail())
      {
         std::cerr << "could not open file for write";
         return -1;
      }
 
      std::vector<s> vstructs(nstructs);
      for(std::vector<s>::iterator it = vstructs.begin(); it != vstructs.end(); ++it)
         input(&(*it));
 
      write_v(out, vstructs);
 
      out.close();
   }
 
   std::cout << "read data from file (0 - no, 1 - yes): ";
   std::cin  >> nstructs;
 
   if(nstructs != 0)
   {
      std::ifstream in("file.dat");
 
      if(in.fail())
      {
         std::cerr << "could not open file for read";
         return -1;
      }
 
      std::vector<s> vstructs;
      
      read_v(in, vstructs);
      for(size_t i = 0; i < vstructs.size(); ++i)
         if(predicate(&(vstructs[i])))
            output(&(vstructs[i]));
 
      in.close();
   }
 
   system("pause");
   return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2010, 00:01     Написать программу записи к файлу элементов типа структура
Посмотрите здесь:

C++ Сложности со структурами. Переделать программу с использованием типа - структура.
C++ Написать программу с использованием типу данных «структура».
C++ Написать функцию булевского типа, проверяющую наличие в файле записи с заданным ключём.
C++ Написать программу, определяющую, сколько элементов одномерного массива чисел типа int имеют равных соседей
Написать программу, которая по указанному в качестве параметра в командной строке файлу создаёт текстовый файл, содержащий листинг исходного файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.06.2010, 00:15     Написать программу записи к файлу элементов типа структура #2
узнаю код
у меня полностью работает, что за ошибки вылетают? какой компилятор?

Добавлено через 2 минуты

Не по теме:

а ошибка у вас в слове "ошибка"

duden
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 42
04.06.2010, 00:44  [ТС]     Написать программу записи к файлу элементов типа структура #3
borland C++
ошыбок МОРЕ , а как исправить не знаю
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.06.2010, 00:46     Написать программу записи к файлу элементов типа структура #4
Цитата Сообщение от duden Посмотреть сообщение
borland C++
ошыбок МОРЕ , а как исправить не знаю
попробуйте так же исправить заголовок vector на
C++
1
#include <vector.h>
и уберите во всей программе пространства имен - приставку
C++
1
std::
duden
0 / 0 / 0
Регистрация: 05.01.2010
Сообщений: 42
04.06.2010, 00:58  [ТС]     Написать программу записи к файлу элементов типа структура #5
меньше , но всёже есть

Добавлено через 4 минуты
и всеравно 17 ошыбок

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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <fstream.h>
#include <iostream.h>
#include <functional.h>
 
#include <vector.h>
 
template<typename T>
 void write(ofstream &ofs, T &t) {
   ofs.write(reinterpret_cast<char*>(&t), sizeof(T)); }
 
template<typename T> void read (ifstream &ifs, T &t) {
   ifs.read (reinterpret_cast<char*>(&t), sizeof(T)); }
 
template<typename T> void write_v(ofstream &ofs, vector<T> &v)
{
   vector<T>::size_type size = v.size();
   write(ofs, size);
 
   for(vector<s>::iterator it = v.begin(); it != v.end(); ++it)
      write(ofs, *it);
}
 
template<typename T> void read_v (ifstream &ifs, vector<T> &v)
{
   vector<T>::size_type size = 0;
   read(ifs, size);
 
   v.reserve(size);
   while(size--)
   {
      s t;
      read(ifs, t);
      v.push_back(t);
   }
}
 
struct s
{
   char mark [16];
   char color[16];
   int  year;
   int  num;
};
 
void input (s * str)
{
   cout << "mark: ";
   cin  >> str->mark;
 
   cout << "color: ";
   cin  >> str->color;
 
   cout << "year: ";
   cin  >> str->year;
 
   cout << "num: ";
   cin  >> str->num;
}
 
void output(s * str)
{
   cout << str->mark << '.' << str->color << '.' << str->year << '.' << str->num <<endl;
}
 
bool predicate(s * str)
{
   if(str->year >= 2005)
      return true;
   else
      return false;
}
 
int main()
{
   int nstructs = 0;
 
   cout << "enter amount autos for write data to file (0 - base not created): ";
   cin  >> nstructs;
 
   if(nstructs != 0)
   {
      ofstream out("file.dat");
      if(out.fail())
      {
     cerr << "could not open file for write";
     return -1;
      }
 
      vector<s> vstructs(nstructs);
      for(vector<s>::iterator it = vstructs.begin(); it != vstructs.end(); ++it)
     input(&(*it));
 
      write_v(out, vstructs);
 
      out.close();
   }
 
   cout << "read data from file (0 - no, 1 - yes): ";
   cin  >> nstructs;
 
   if(nstructs != 0)
   {
      ifstream in("file.dat");
 
      if(in.fail())
      {
     cerr << "could not open file for read";
     return -1;
      }
 
      vector<s> vstructs;
 
      read_v(in, vstructs);
      for(size_t i = 0; i < vstructs.size(); ++i)
     if(predicate(&(vstructs)))
        output(&(vstructs));
 
      in.close();
   }
 
   system("pause");
   return 0;
}
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
04.06.2010, 01:20     Написать программу записи к файлу элементов типа структура #6
даже не знаю, чем вам еще помочь. ищите человека с таким же компилятором. либо меняйте на более современный. например visual studio 2005/2008/2010
Yandex
Объявления
04.06.2010, 01:20     Написать программу записи к файлу элементов типа структура
Ответ Создать тему
Опции темы

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