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

Подправить структуру - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Смена кодировки текста! http://www.cyberforum.ru/cpp-beginners/thread349387.html
опять хелп!! std::string query = "netsh interface ip set addres name=\"" + interface_name + "\" static 192.168.2.2 255.255.255.0"; std::cout << query; system(query.c_str()); где печалька закралась? все файлы, откуда считывается информация изначально в системной кодировки. где я ее мог конвертнуть в иероглифы>_<
C++ Как изменить порядок компоновки в Visual C++? Подскажите, пожалуйста:) http://www.cyberforum.ru/cpp-beginners/thread349371.html
Вопрос про "Наследование" и "Объединение" C++
Доброго времени суток. Изучаю ООП, пока что не удачно. Появилось пару вопросиков. первый вид Animals // Млекопитающие class Mammals { public: // Тут создать функцию isDog()
Что дописать в код, чтобы программа не округляла результат? C++
Что дописать в код, чтобы программа не округляла результат? #include <iostream> #include <iomanip> using namespace std; int main() { double vklad,procent,n,rez=0; //nach summa, % stavka int gg; //kolich. let
C++ Оставление курсора на строке http://www.cyberforum.ru/cpp-beginners/thread349344.html
Как сделать так, чтоб после ввода значения в командной строке курсор оставался на той же строке, а не переходил на новую?
C++ Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. Есть задача: Дан N-элементный одномерный массив M. Заполнить К элементов, стоящих во второй половине данного массива, последовательными числами от K до 1. Подскажите, пожалуйста, с помощью какой функции искать эту половину и как потом перемещать элементы? подробнее

Показать сообщение отдельно
maxim43k
0 / 0 / 0
Регистрация: 04.09.2011
Сообщений: 106
08.09.2011, 17:11     Подправить структуру
Суть проблемы такова: надо ввести данные с клавиатуры в структуру (имя, фамилия, возраст (лет), результат: мин. сек.) в файл 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));
}
Подскажите, пожалуйста, как исправить ошибки.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru