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

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

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

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

26.03.2014, 16:31. Просмотров 543. Ответов 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);}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2014, 16:31     Файлы и структуры. Поиск студента по имени и сортировка
Посмотрите здесь:
Структуры и файлы (посчитать средний балл каждого студента и вывести фамилию студента с наибольшим баллом) C++
Поиск студента по имени, фамилии и iq C++
Функции над полями структуры - Поиск самого высокого студента C++
C++ Структуры. Случайное имя и добавить нового студента
Структуры: вывести информацию о стипендии любого заданного студента C++
Структуры и массивы структур: найти самого старшего студента, родившегося летом C++
C++ Лексикографическая сортировка по имени
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 16:43     Файлы и структуры. Поиск студента по имени и сортировка #2
Какие проблемы?
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 16:54  [ТС]     Файлы и структуры. Поиск студента по имени и сортировка #3
упроноине хочет работать( перебробывал ввсе
SatanaXIII
Супер-модератор
Эксперт С++
5592 / 2626 / 239
Регистрация: 01.11.2011
Сообщений: 6,457
Завершенные тесты: 1
26.03.2014, 16:58     Файлы и структуры. Поиск студента по имени и сортировка #4
Цитата Сообщение от tibeg Посмотреть сообщение
упроноине хочет работать( перебробывал ввсе
Какие ошибки выдает регулятор? Или, если никаких, то какого поведения программы вы ждете и какое получаете?
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 17:35  [ТС]     Файлы и структуры. Поиск студента по имени и сортировка #5
Она должна искать студентов 1990 года рождения, и сортировать по Фамилии
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 17:39     Файлы и структуры. Поиск студента по имени и сортировка #6
Цитата Сообщение от tibeg Посмотреть сообщение
if((file.peek()!=EOF)&&(st.pol==1990))
st.pol - это год рождения?
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);}
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:12     Файлы и структуры. Поиск студента по имени и сортировка #8
C++
1
if((file.peek()!=EOF)&&(st.pol == 'm'))
Цитата Сообщение от tibeg Посмотреть сообщение
сейчас переделал.
А как же задание?
Цитата Сообщение от tibeg Посмотреть сообщение
Она должна искать студентов 1990 года рождения
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 18:20  [ТС]     Файлы и структуры. Поиск студента по имени и сортировка #9
задание можно немного изменить) подскажите еще пожалуйста, как сделать чтобы фамиля была по фамилие, имя по именем и т.д.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:28     Файлы и структуры. Поиск студента по имени и сортировка #10
Цитата Сообщение от tibeg Посмотреть сообщение
как сделать чтобы фамиля была по фамилие, имя по именем и т.д.
Непонятно, что нужно.
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 18:35  [ТС]     Файлы и структуры. Поиск студента по имени и сортировка #11
Ну тоесть вот при сортировке криво выводит
Миниатюры
Файлы и структуры. Поиск студента по имени и сортировка  
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
26.03.2014, 18:47  [ТС]     Файлы и структуры. Поиск студента по имени и сортировка #12
тоесть после сортировки например, криво табличка выводится
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2014, 18:48     Файлы и структуры. Поиск студента по имени и сортировка
Еще ссылки по теме:
C++ Сортировка по имени и по дате
Сортировка по фамилии и имени в С++ C++
C++ Сортировка по фамилии и имени
Не работает сортировка по имени. Сравнение строк C++
Поиск процесса по имени C++

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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:48     Файлы и структуры. Поиск студента по имени и сортировка #13
Чтобы ровно выводилось, используйте манипуляторы вывода: http://www.cplusplus.com/reference/i.../setw/?kw=setw
Yandex
Объявления
26.03.2014, 18:48     Файлы и структуры. Поиск студента по имени и сортировка
Ответ Создать тему
Опции темы

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