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

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

Войти
Регистрация
Восстановить пароль
 
druger
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 57
#1

Структуры [C++] - C++

04.03.2012, 15:11. Просмотров 648. Ответов 5
Метки нет (Все метки)

Почему новый файл пуст? Что у меня не так?
Вот код, прога без ошибок, всё компилится
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
#include<iomanip.h>         
#include<fstream.h>
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
 
ifstream Fin;
ofstream Fout;
const int m=6;
struct Sportsmen
 {
  char Fam[11];
  char Dolgn[14];
  float Ball[m];
 };
void input (Sportsmen &T)
 {
  Fin>>T.Fam>>T.Dolgn;
  for (int j=0; j<m; j++)
   Fin>>T.Ball[j];
 }
void output (Sportsmen T)
 {
  Fout<<setw(10)<<T.Fam<<" "<<setw(15)<<T.Dolgn;
  for (int j=0; j<m; j++)
   Fout<<setw(4)<<T.Ball[j];
   Fout<<endl;
 }
 float SrBall (Sportsmen T)
  {
   float Sr=0;
   for (int j=0; j<m; j++)
   Sr+=T.Ball[j];
   return Sr/m;
  }
 
void main ()
 {
  int F=1;
  Sportsmen S;
  Fin.open("D:\STRUCT\DATASPORTS.cpp");
  if (Fin.fail())
   {
   cout<< "\n input file is not open \n";
   exit(1);
   }
  Fout.open("D:\STRUCT\BALL.cpp");
  if (Fout.fail())
   {
    cout <<"\n created file is not open\n";
    exit(1);
   }
float   max=0;
   input (S);
   while (!Fin.eof())
    {
     if (SrBall(S)>max)
      max=SrBall(S);
      input(S);
    }
  Fin.close();
  Fin.open("D:\STRUCT\DATASPORTS.cpp");
  input(S);
  while (!Fin.eof())
   {
    if (SrBall(S)==max)
    output(S);
    input(S);
   }
  Fout.close();
  if (F==1)
   cout<<"file empty";
    else cout<<"okay";
  getch();
 }
Вот исходный файл DATASPORTS
Код
Ololoev swimer 20 15 18 19.5 17 20
Troler troling 20 20 20 20 20 20
Djigurda sport_dancer 15 14 10 5 7 3.5
Mentov footballer 5.5 4 2 1 1 1
Ravshan skier 3 8 6 12 16 14
Djamshut bobsledder 3 3 1 2 2.5 1.5
Putin karatist 19 20 19 13 9 8
Mevdedev judoist 18.5 17.5 19.5 11 4 20
Makarov athlete 13 15 11.5 14.5 9 18
Syvorov biathlete 7 0 3 9 8 2
И условие задачи: Дан типизированный файл структур типа Sportsmen, содержащий следующие поля: Fam-фамилия, Dolgn-занимаемая должность, Ball-массив баллов, поставленных m судьями. Вывести в новый типизированный файл инфу о спортсменах с максимальным средним баллом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2012, 15:11
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Структуры [C++] (C++):

Помещение структуры в вектор, удаление структуры, изменение элементов структуры - C++
Здравствуйте. Помогите разобраться с тем, как: 1 - находить элементы в векторе зная уникальный элемент структуры. 2 - удалять...

Динамические структуры данных. Программа ввода в структуры и вывода информации из неё. - C++
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования. Для...

Функция внутри структуры использует указатель, как поле этой структуры - C++
Коротко, есть класс A, описан в файле A_class.h ну и реализованы функции в A_class.cpp, есть файл GlobalItems.h, где хранятся глобальные...

Структуры, массивы структур (как можно присваивать(инициализировать) значения полям структуры) - C++
Есть у меня вот такая структура, например struct Subject { int cost; int Volume; }; Потом создаю экземпляр, Subject G; ...

Вывод структуры, строка как элемент структуры - C++
Описать структуру с именем TRAIN, содержащую следующие поля: □ название пункта назначения; □ номер поезда; □ время отправления. ...

Исследование структуры FILE или: что вообще можно выудить из этой структуры, указатель на которую мы получаем при открытии файла? - C++
Ничего нельзя. Итак, новичкам напомню, что после выполнения кода FILE* f= fopen (&quot;file.txt&quot;, &quot;w&quot;); в переменной f содержится...

5
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
04.03.2012, 15:48 #2
экранируйте слэши в пути файлов
0
Nameless One
Эксперт С++
5783 / 3432 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
04.03.2012, 15:51 #3
А лучше всегда использовать прямые слеши
0
DU
1485 / 1131 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
04.03.2012, 15:54 #4
правильные слеши не помогли. почему-то читает лишь одну структуру после закрытия и повторного открытия файла. помогла вставка Fin.clear() между 61 и 62 строкой.
т.к. F в программе не изменяется, всегда будет выводится empty file, хотя это не так.
А вообще общий подход кривой. зачем два раза читать из файла. можно в массив все считать, найти в этом массиве нужных спортсменов и слить их в другой файл.

C++
1
2
3
4
5
6
7
  input(S);
  while (!Fin.eof())
   {
    if (SrBall(S)==max)
    output(S);
    input(S);
   }
если в файле одна запись, то обработка считанной структуры не будет производится. тут нужен do {} while (!eof)
0
druger
0 / 0 / 0
Регистрация: 18.09.2011
Сообщений: 57
09.03.2012, 19:53  [ТС] #5
DU, Fin.clear(); и do while не помогли. Файл всё по-прежнему пуст
Кто-нибудь знает, что ещё можно исправить?
0
zss
Модератор
Эксперт С++
6928 / 6490 / 2182
Регистрация: 18.12.2011
Сообщений: 17,105
Завершенные тесты: 1
09.03.2012, 20:43 #6
Вместо того, чтобы закрывать и снова открывать файл (строки 61-62),
переместите указатель на начало командой:
Fin.seekg(0, ios_base::beg);
0
09.03.2012, 20:43
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2012, 20:43
Привет! Вот еще темы с ответами:

Оператор if и структуры. Возвращение структуры из функции - C++
Здравствуйте, имеется такая вот функция. void InputStructEmployee (int StructSize) { StructEmployee UsrStruct; string...

Структуры. Вызов данных структуры по указателю. с++ - C++
Условие задачи: Помогите, пожалуйста, с как реализовать печать вообще не представляю.

Структуры. Работа с файлами, содержащими структуры - C++
2) Дана совокупность сведений, каждое из которых состоит из следующих рекви-зитов: фамилия и инициалы автора – 25 знаков; название книги –...

Понятие структуры данных. Элементарные структуры данных. Простые структуры данных - C++
Понятие структуры данных. Элементарные структуры данных. Простые структуры данных: методы реализации, особенности в различных языках...


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

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

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