2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
1

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

26.03.2014, 16:31. Показов 2145. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2014, 16:31
Ответы с готовыми решениями:

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

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

Выполнить поиск студента по введенной фамилии/имени/отчеству
Здравствуйте. Есть список из 10 студентов List&lt;Student&gt; list = new List&lt;Student&gt; new Student {...

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

12
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 16:43 2
Какие проблемы?
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
26.03.2014, 16:54  [ТС] 3
упроноине хочет работать( перебробывал ввсе
0
Почетный модератор
Эксперт С++
5849 / 2860 / 392
Регистрация: 01.11.2011
Сообщений: 6,905
26.03.2014, 16:58 4
Цитата Сообщение от tibeg Посмотреть сообщение
упроноине хочет работать( перебробывал ввсе
Какие ошибки выдает регулятор? Или, если никаких, то какого поведения программы вы ждете и какое получаете?
0
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
26.03.2014, 17:35  [ТС] 5
Она должна искать студентов 1990 года рождения, и сортировать по Фамилии
0
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 17:39 6
Цитата Сообщение от tibeg Посмотреть сообщение
if((file.peek()!=EOF)&&(st.pol==1990))
st.pol - это год рождения?
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
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
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:12 8
C++
1
if((file.peek()!=EOF)&&(st.pol == 'm'))
Цитата Сообщение от tibeg Посмотреть сообщение
сейчас переделал.
А как же задание?
Цитата Сообщение от tibeg Посмотреть сообщение
Она должна искать студентов 1990 года рождения
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
26.03.2014, 18:20  [ТС] 9
задание можно немного изменить) подскажите еще пожалуйста, как сделать чтобы фамиля была по фамилие, имя по именем и т.д.
0
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:28 10
Цитата Сообщение от tibeg Посмотреть сообщение
как сделать чтобы фамиля была по фамилие, имя по именем и т.д.
Непонятно, что нужно.
1
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
26.03.2014, 18:35  [ТС] 11
Ну тоесть вот при сортировке криво выводит
Миниатюры
Файлы и структуры. Поиск студента по имени и сортировка  
0
2 / 2 / 2
Регистрация: 01.08.2013
Сообщений: 106
26.03.2014, 18:47  [ТС] 12
тоесть после сортировки например, криво табличка выводится
0
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
26.03.2014, 18:48 13
Чтобы ровно выводилось, используйте манипуляторы вывода: http://www.cplusplus.com/refer... w/?kw=setw
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.03.2014, 18:48
Помогаю со студенческими работами здесь

Поиск и перемещение файлов по имени с созданием структуры папок
Коллеги, приветствую! Очень надеюсь на помощь знающих людей, т.к. сам не силен в написании...

DataTables - сортировка, файлы, поиск и фильтры
Добрый вечер! Есть несколько вопросов по Datatables: 1. Как убрать сортировку у первого столбца?...

Подсчет количества символов в фамилии, имени и отчестве студента
Задание: разработать программу подсчета количества символов в фамилии, имени и отчестве студента....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru