Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 18.09.2011
Сообщений: 57

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

04.03.2012, 15:11. Показов 913. Ответов 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
Code
1
2
3
4
5
6
7
8
9
10
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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2012, 15:11
Ответы с готовыми решениями:

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

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

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

5
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
04.03.2012, 15:48
экранируйте слэши в пути файлов
0
Эксперт С++
 Аватар для Nameless One
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
04.03.2012, 15:51
А лучше всегда использовать прямые слеши
0
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
04.03.2012, 15:54
правильные слеши не помогли. почему-то читает лишь одну структуру после закрытия и повторного открытия файла. помогла вставка 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
1 / 1 / 0
Регистрация: 18.09.2011
Сообщений: 57
09.03.2012, 19:53  [ТС]
DU, Fin.clear(); и do while не помогли. Файл всё по-прежнему пуст
Кто-нибудь знает, что ещё можно исправить?
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
09.03.2012, 20:43
Вместо того, чтобы закрывать и снова открывать файл (строки 61-62),
переместите указатель на начало командой:
Fin.seekg(0, ios_base::beg);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2012, 20:43
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru