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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MDP
Сообщений: n/a
#1

Структурка с файлами - C++

08.09.2011, 18:50. Просмотров 235. Ответов 0
Метки нет (Все метки)

Суть проблемы такова: надо ввести данные с клавиатуры в структуру (имя, фамилия, возраст (лет), результат: мин. сек.) в файл F1.txt, затем прочитать этот файл, обработать по заданию и сохранить результат в бинарный файл + проверить, что записалось в бинарный файл. Вот как примерно требуется сделать:

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
#include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>
#include <iomanip.h>
#include <conio.h>
 
typedef struct
{char name[20]; //имя сотрудника
 char fam[30];  //фамилия
 int index;     //индекс детали
 int cena;      //цена детали
 int koldet;    //деталей за смену
}BRIGADA;
 
BRIGADA *poisk(int n, char *f1_name, char *f2_name);
 
int size_d=sizeof(BRIGADA);
 
 void main()
{BRIGADA *pt;
 int n;
 char f1_name[20], f2_name[20];
 clrscr();
 cout<<"Введите имя файла Ф1: ";
 cin>>f1_name;
 cout<<"Введите имя файла Ф2 (бинарный): ";
 cin>>f2_name;
 cout<<"Введите число рабочих в бригаде: ";
 cin>>n;
 pt=poisk(n,f1_name,f2_name);
 cout << "Бригадир " << pt->fam << " " << pt->name << " - Передовик";
 getch();
}
 
 BRIGADA *poisk(int n, char *f1_name, char *f2_name)
{char str[100]; 
 BRIGADA mas[100], *k;
 int i, pro;
 fstream f1(f1_name, ios::in | ios::out);
 if (f1.fail())
   {
    cout<<"Ф1 Ошибка!"<<f1.rdstate()<<endl;
   }
 fstream f2(f2_name, ios::in | ios::binary | ios::out);
 if (f2.fail())
    {
     cout<<"Ф2 Ошибка!"<<f2.rdstate()<<endl;
    }
 for(i=0;i<n;i++)
    {
      cout<<"Введите Фамилию: ";
      cin>>mas[i].fam;
      f1<<mas[i].fam<<" ";
      cout<<"Введите Имя: ";
      cin>>mas[i].name;
      f1<<mas[i].name<<" ";
      cout<<"Введите индекс: ";
      cin>>mas[i].index;
      f1<<mas[i].index<<" ";
      cout<<"Введите цену: ";
      cin>>mas[i].cena;
      f1<<mas[i].cena<<" ";
      cout<<"Введите количество деталей: ";
      cin>>mas[i].koldet;
      f1<<mas[i].koldet<<" "<<endl;
    }
  f1<<"\nПроверка считывания из Ф2: \n";
  f2.seekg(0,ios::beg);
  for(i=0;i<n;i++)
  f2.write((char *)&mas[i],size_d);
  f2.seekp(0, ios::beg);
  for(i=0;i<n;i++)
    {
      f2.read((char *)&mas[i],size_d);
      f1<<mas[i].fam<<" ";
      f1<<mas[i].name<<" ";
      f1<<mas[i].index<<" ";
      f1<<mas[i].cena<<" ";
      f1<<mas[i].koldet<<" "<<endl;
    }
  pro=mas[0].cena*mas[0].koldet;
  for(int j=1;j<n;j++)
    {if ((mas[j].cena*mas[j].koldet) > pro)
        {
          pro=mas[j].cena*mas[j].koldet;
          k=&mas[j];
        }
     else k=&mas[0];
    }
  return k;
  f1.close();
  f2.close();
}
А вот как у меня получается:

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
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
 
struct time_s
{int min;
 int sec;
};
 
struct athlete
{char name [20];
 char f_name [20];
 int age;
 time_s time;
};
 
void input(athlete* &all, int);
int  process(athlete* &all, int);
void output(athlete* &all, int);
 
void main()
{athlete *all = NULL;
 int count, min;
 count = min = 0;
 cout << "Введите количество спортсменов\n";
 cin >> count;
 input(all, count);
 min = process(all, count);
 output(all, min);
 getch();
}
 
void input(athlete* &all, int count)
{int i;
 all = new athlete[count];
 cout << "Введите данные о спортсменах"
 " (имя, фамилия, возраст, результат в мин. и сек. через пробел):\n";
 for (i = 0; i < count; ++i)
  {cout << i + 1 << ". ";
   cin >> all[i].name;
   cin >> all[i].f_name;
   cin >> all[i].age;
   cin >> all[i].time.min;
   cin >> all[i].time.sec;
  }
}
 
int process(athlete* &all, int count)
{int min = 0;
 for (int i = 0; i < count; i++)
 if (i == 0) min = i;
 else if (all[i].age < all[min].age) min = i;
 return min + 1;
}
 
void output(athlete* &all, int min)
{cout << "\nСамый юный участник:\n";
 cout << "Порядковый номер в реестре: " << min << "\nИмя: "
 << all[min - 1].name << "\nФамилия: " << all[min - 1].f_name
 << "\nВозраст: " << all[min - 1].age << "\nРезультат: "
 << all[min - 1].time.min << " мин. " << all[min - 1].time.sec << " сек. ";
 ofstream file("F2.bin", ios::out | ios::binary);
 file.write((char *)&all[min], sizeof(athlete));
}
Как сделать так, чтобы всё нормально работало и записывалось/считывалось в файлы?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2011, 18:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структурка с файлами (C++):

Структурка (удалить данные с типом char) - C++
Привет всемм!!! Нужно было мне написать структурку для стадиона а также удалить &quot;Удалить элемент с заданным названием.&quot; Название имеет...

Почему компилятор работает с файлами *.с, а не с файлами *.срр? - C++
на скриншоте компилятор с++, почему он работает с файлами *.с, а не с файлами *.срр?

Переделать работу с текстовыми файлами под работу с двоичными файлами - C++
Здравствуйте. В этой программе идёт работа с текстовыми файлами, а нужно с двоичными. Можно ли как-то переделать? #include...

Противная структурка Color - C# WPF
Наткнулся на необходимость работать с весьма противной структуркой Color (System.Windows.Media). Если конвертировать эту штуку в...

Работа с файлами , хотелось бы с windows system файлами - FoxPro
всем привет, нужна интересная идея по программированию, работа с файлами , хотелось бы с windows system файлами, у вас есть какая-то идея?...

Перемещение папок с файлами и подкаталогов с файлами - C#
как сделать чтобы кликнув по кнопке на форме папка со всеми ее подкаталогами и файлами переместилась в другое место?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2011, 18:50
Привет! Вот еще темы с ответами:

почему-то в папке windows вместе с системными файлами, находится папка windows с теми же файлами! Копия, короче - Windows 7
Ребята, а у меня почему-то в папке windows вместе с системными файлами, находится папка windows с теми же файлами! Копия, короче. И весит...

с файлами. - Turbo Pascal
Дан файл f, элементы которого являются целыми числами. Никакой из элементов файла не равен нулю. Файл f содержит столько же отрицательных...

работа с файлами - C++
помогите пожалуйста! 2. Дан файл f, компоненты которого являются целыми числами. Никакой из компонентов файла не равен нулю. ...

Работа с файлами - Java
Здравствуйте, помогите пожалуйста с написанием программы. Надо написать программу , которая находит в файле символ @ и выдаёт файл с этого...


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

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

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