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

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

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

Файлы и структуры. Поиск студента по имени и сортировка - C++

26.03.2014, 16:31. Просмотров 620. Ответов 12
Метки нет (Все метки)

Помогите с программой пожалуйста.
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
124
125
126
127
128
129
130
131
132
#include <iostream>
#include <fstream>
 
using namespace std;
 
 
    struct STUDENT
    {char familia[15]; char name[10]; int vozrast; int rayting; char pol;} 
 
    const char filename[]="file.txt";
    fstream file;
 
 
void WriteToFile(int num)
 
{
STUDENT st;
file.open(filename,ios::app);
cout << "Vvedite dannie\n";
for (i=0;i<num;i++)
{
 
    cout << "familia:";
    cin  >> st.familia;
 
    cout << "name:";
    cin  >> st.name;
 
    cout << "pol:";
    cin  >> st.pol;
 
    cout << "vozrast:";
    cin  >> st.vozrast;
 
    cout << "rayting:";
    cin  >> st.rayting;
 
    file<<st.familia<<"\n"<<st.name<<"\n"<<st.pol<<"\n"<<st.vozrast<<"\n"<<st.rayting<<"\n";
}
 
    file.close();
    getch();
}
 
 
 
 
void PrintFile()
{
STUDENT st;
 
file.open(filename,ios::in);
cout << "familia\tname\tpol\tvozrast\trayting\n";
 
        while(!file.eof())
            {file>>st.familia>>st.name>>st.pol>>st.vozrast>>st.rayting;
 
        if(file.peek()!=EOF)
             cout <<st.familia<<"\t"<<st.name<<"\t"<<st.pol<<"\t"<<st.vozrast<<"\t"<<rayting<<"\n";}
 
               file.close();
               getch();
}
 
 
 
 
 
void FileRewrite()
 
{file.open(filename,ios::out);
 file.close();
}
 
 
void Vibor()
{
STUDENT st;
 
 file.open(filename,ios::in);
      cout << "familia\tname\tpol\tvozrast\trayting\n";
 
         while(!file.eof())
           {file>>st.familia>>st.name>>st.pol>>st.vozrast>>st.rayting;
 
        if((file.peek()!=EOF)&&(st.pol==1990))
          cout<<st.familia<<"\t"<<st.name<<"\t"<<st.pol<<"\t"<<st.vozrast<<"\t"<<rayting<<"\n";}
 
             file.close(); 
             getch();
}
 
void Porjadok()
{
STUDENT stud[25],x;  int i,j,k=0;
 
file.open(filename, ios::in);
cout << "familia\tname\tpol\tvozrast\trayting\n";
 
     while(!file.eof())
        file>>st.familia>>st.name>>st.pol>>st.vozrast>>st.rayting;
         if (file.peek()!=EOF) {stud[k]=x; k++;}}
 
       file.close();
           for (i=0;i<k-1;i++)
                 for (j=0;j<k-1;j++)
 
                      if (strcmp(stud[j].familia,stud[j+1].familia)>0)
                         {x=stud[j]; stud[j]=stud[j+1]; stud[j+1]=x;}
 
       for(i=0;i<k;i++)
 
        cout<<stud[i].familia<<"\t"<<stud[i].name<<"\t"<<stud[i].pol<<"\t"<<stud[i].vozrast<<"\t"<<stud[i].rayting<<"\n";
getch();
}
 
 
int main()
{
    char menu; 
    int i;
 do
 {clrscr();  cout<<"1-Запись в файл\n2-Вывод на экран\n3-Очистка файла\n4-Выбор\n5-Сортировка\n6-Выход";
  menu=getch();  switch(menu)
  {case '1': cout<<"Количество записей"; cin>>i;
   WriteToFile(i); break;
   case '2':PrintFile(); break;
   case '3':FileRewrite(); break;
   case '4':Vibor(); break;
   case '5':Porjadok(); break;};
  if (menu=='6') break;
 }while(1);}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 16:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Файлы и структуры. Поиск студента по имени и сортировка (C++):

Структуры и файлы (посчитать средний балл каждого студента и вывести фамилию студента с наибольшим баллом) - C++
У меня есть структура и файл, в котором находятся фамилии и оценки учащихся, как мне посчитать средний балл каждого студента и вывести...

Поиск студента по имени, фамилии и iq - C++
Нужно в класс Группа студентов дописать методы поиска студента по имени, по фамилии или по iq, помогите, пожалуйста с этим. Написал все,...

Функции над полями структуры - Поиск самого высокого студента - C++
Всем привет! Помогите пожалуйста добавить в мой код следующие функции:1) Поиск самого высокого студента 2) Самого тяжелого(Вес) и 3)...

Структуры. Случайное имя и добавить нового студента - C++
Подскажите как в функции Random сделать ввод случайным. Чтоб имя и фамилия студентов - был случайный набор символов. Писал через ...

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

Структуры и массивы структур: найти самого старшего студента, родившегося летом - C++
Нужна помощь с задачей: Найти и вывести на экран самого старшего студента родившегося летом. #include &lt;iostream&gt; #include &lt;string&gt; ...

12
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 16:43 #2
Какие проблемы?
1
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 16:54  [ТС] #3
упроноине хочет работать( перебробывал ввсе
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,534
Завершенные тесты: 1
26.03.2014, 16:58 #4
Цитата Сообщение от tibeg Посмотреть сообщение
упроноине хочет работать( перебробывал ввсе
Какие ошибки выдает регулятор? Или, если никаких, то какого поведения программы вы ждете и какое получаете?
0
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 17:35  [ТС] #5
Она должна искать студентов 1990 года рождения, и сортировать по Фамилии
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 17:39 #6
Цитата Сообщение от tibeg Посмотреть сообщение
if((file.peek()!=EOF)&&(st.pol==1990))
st.pol - это год рождения?
1
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 17:53  [ТС] #7
сейчас переделал.
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
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<string.h>
 
struct STUDENT
{char fam[15]; char name[10]; char pol; int vozrast; int rayting;};
const char filename[]="file.txt";
fstream file;
 
 
void WriteToFile(int num)
{STUDENT st; clrscr();
 file.open(filename,ios::app);
 cout<<"\n";
 cout<<"Vvedite dannie";
 cout<<"\n";
 for (int i=0;i<num;i++)
  {cout<<"Familia->"; cin>>st.fam;
   cout<<"Name->"; cin>>st.name;
   cout<<"Pol->"; cin>>st.pol;
   cout<<"Vozrast->"; cin>>st.vozrast;
   cout<<"Rayting->"; cin>>st.rayting;
   file<<st.fam<<"\n"<<st.name<<"\n"<<st.pol<<"\t"<<st.vozrast<<"\t"<<st.rayting<<"\n";}
file.close();
getch();}
 
 
 
void PrintFile()
{STUDENT st; clrscr();
 file.open(filename,ios::in);
 cout<<"\tFamilia\t      Name   Pol Vozrast Rayting\n";
 while(!file.eof())
 {file>>st.fam>>st.name>>st.pol>>st.vozrast>>st.rayting;
  if(file.peek()!=EOF)
  cout<<st.fam<<"\t"<<st.name<<"\t"<<st.pol<<"\t"<<st.vozrast<<"\t"<<st.rayting<<"\n";}
 file.close();
 getch();}
 
 
 
 
void FileRewrite()
{file.open(filename,ios::out);
 file.close();}
 
 
void Vibor()
{STUDENT st; clrscr();
 file.open(filename,ios::in);
 cout<<"\tFamilia\t      Name   Pol Vozrast Rayting\n";
 while(!file.eof())
 {file>>st.fam>>st.name>>st.pol>>st.vozrast>>st.rayting;
  if((file.peek()!=EOF)&&(st.pol == "m"))                                  /[B]/Здесь ругается только.[/B]
  cout<<st.fam<<"\t"<<st.name<<"\t"<<st.pol<<"\t"<<st.vozrast<<"\t"<<st.rayting<<"\n";}
 file.close(); getch();}
 
 
 
 
void Porjadok()
{STUDENT stud[25],x;  int i,j,k=0;
 file.open(filename, ios::in);
 clrscr(); cout<<"\tFamilia\t      Name   Pol Vozrast Rayting\n";
 
 
 
while(!file.eof())
 {file>>x.fam>>x.name>>x.pol>>x.vozrast>>x.rayting;
  if (file.peek()!=EOF) {stud[k]=x; k++;}}
 file.close();
 for (i=0;i<k-1;i++)
  for (j=0;j<k-1;j++)
   if (strcmp(stud[j].fam,stud[j+1].fam)>0)
    {x=stud[j]; stud[j]=stud[j+1]; stud[j+1]=x;}
 for(i=0;i<k;i++)
  cout<<stud[i].fam<<"\t"<<stud[i].name<<"\t"<<stud[i].pol<<"\t"<<stud[i].vozrast<<"\t"<<stud[i].rayting<<"\n";
 getch();
}
 
 
 
void main()
{char menu; int i;
 do
 {clrscr();  cout<<"1-Zapis v fail\n2-Vivod na ekran\n3-Ochistka\n4-Vibor\n5-Sortirovka\n6-Exit";
  menu=getch();  switch(menu)
  {case '1': cout<<"\nKolichestvo zapisey:";
   cin>>i;
   WriteToFile(i); break;
   case '2':PrintFile(); break;
   case '3':FileRewrite(); break;
   case '4':Vibor(); break;
   case '5':Porjadok(); break;};
  if (menu=='6') break;
 }while(1);}
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:12 #8
C++
1
if((file.peek()!=EOF)&&(st.pol == 'm'))
Цитата Сообщение от tibeg Посмотреть сообщение
сейчас переделал.
А как же задание?
Цитата Сообщение от tibeg Посмотреть сообщение
Она должна искать студентов 1990 года рождения
1
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 18:20  [ТС] #9
задание можно немного изменить) подскажите еще пожалуйста, как сделать чтобы фамиля была по фамилие, имя по именем и т.д.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:28 #10
Цитата Сообщение от tibeg Посмотреть сообщение
как сделать чтобы фамиля была по фамилие, имя по именем и т.д.
Непонятно, что нужно.
1
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 18:35  [ТС] #11
Ну тоесть вот при сортировке криво выводит
0
Миниатюры
Файлы и структуры. Поиск студента по имени и сортировка  
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 18:47  [ТС] #12
тоесть после сортировки например, криво табличка выводится
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:48 #13
Чтобы ровно выводилось, используйте манипуляторы вывода: http://www.cplusplus.com/reference/iomanip/setw/?kw=setw
1
26.03.2014, 18:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 18:48
Привет! Вот еще темы с ответами:

Структуры. Сортировка массива структуры - C++
Здравствуйте! В чем моя ошибка?? Нужно отсортировать массив структуры по возрастанию среднего балла?? Делаю это с помощью...

Сортировка по имени и по дате - C++
Подскажите пожалуйста как реализовать сортировку по имени и по дате для вот такого класса. #include &lt;iostream&gt; using namespace std; ...

Лексикографическая сортировка по имени - C++
Привет всем форумчанам! Вот у меня такая проблемка: нужно реализовать лексикографическую сортировку по имени, а для этого придумать...

Сортировка по фамилии и имени - C++
Помогите написать сортировку имени и фамилии!


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

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

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