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

Распечатать список студентов, которые получили только оценки 5 на экзаменах, в возрастающем порядке по возрасту - C++

Восстановить пароль Регистрация
 
games over
0 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 9
03.01.2014, 23:05     Распечатать список студентов, которые получили только оценки 5 на экзаменах, в возрастающем порядке по возрасту #1
С текстового файла считать последовательность записей, содержащих данные о результатах сессии студентов группы в следующем формате: <Фамилия>, <Имя>, <Дата рождения>, <Список экзаменационных оценок>. Распечатать введенные данные в виде таблици.Роздрукуваты список студентов, которые получили только оценки 5 на экзаменах, в возрастающем порядке по возрасту.




З текстового файлу зчитати послідовність записів, які містять дані про результати сесії студентів групи у такому форматі: <Прізвище>, <Ім’я>, <Дата народження>, <Список екзаменаційних оцінок>. Роздрукувати введені дані у вигляді таблиці.Роздрукувати список студентів, які отримали лише оцінки 5 на іспитах, у зростаючому порядку за віком.

Добавлено через 1 минуту
Pavlov Pavlo 23.09.1994 5 5 5 5 5 5
Petrov Petro 12.03.1995 3 2 5 3 2 2
Ivanov Ivan 05.11.1994 5 5 5 5 5 5
Myronov Myron 31.01.1995 2 3 2 3 3 3
Janyk Viktor 03.02.1995 1 3 3 1 2 2
Rubik Kubik 14.09.1994 5 5 5 5 5 5
Zaxar Nazar 22.01.1995 2 3 3 3 1 1

Добавлено через 53 секунды
файл примерно таково формата
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2014, 23:05     Распечатать список студентов, которые получили только оценки 5 на экзаменах, в возрастающем порядке по возрасту
Посмотрите здесь:

C++ Список студентов: возможность вводить оценки, изменять, удалять
C++ Упорядочить список студентов по году рождения и распечатать его
C++ Распечатать список студентов дни рождения которых приходятся на лето
C++ Распечатать анкетные данные студентов, получивших на последней сессии оценки "2".
Вывести список студентов, имеющих положительные оценки C++
C++ Распечатать список студентов со средним баллом выше общего среднего балла
C++ Распечатать список студентов дни рождения которых приходятся на лето
Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть. Найти ошибку C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
games over
0 / 0 / 0
Регистрация: 03.01.2014
Сообщений: 9
07.01.2014, 11:25  [ТС]     Распечатать список студентов, которые получили только оценки 5 на экзаменах, в возрастающем порядке по возрасту #2
есть такой код но с ошибкой какую я не магу ісправіть пасматріте может знаєте




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
#include <iostream>
#include <fstream>
#include <conio.h>
#include <string.h>
 
 
using namespace std;
 
const int Nstud=100;
 
struct stud {
    char name[15],surname[15];
    struct bth {
    int year,month,day;
    } birthday;
    struct p {
        int ma,la,op,dm,iu,ang;
        } points;
    }  ptrs[Nstud];
 
 
void NotTwo(stud [],int);
void print(stud*);
void namesort(stud[],int);
void maxyear(stud[],int);
 
 
void main() {
    stud st[Nstud];
    int i=0,pos=0;
    char line[200],birth[11];
    ifstream infile;
    infile.open("Сесія.txt");
    if(infile.fail()) { cout<<"Error"<<endl;getch(); return; };
    cout<<"Full list:\n";
    while(!infile.eof()) {
        infile.getline(line,sizeof line);
        strcpy(st[pos].surname,strtok(line,"\t"));
        strcpy(st[pos].name,strtok(NULL,"\t"));
        strcpy(birth,strtok(NULL,"\t"));
        st[pos].points.ang=atoi(strtok(NULL,"\t"));  
        st[pos].points.dm=atoi(strtok(NULL,"\t"));
        st[pos].points.iu=atoi(strtok(NULL,"\t"));
        st[pos].points.la=atoi(strtok(NULL,"\t"));
        st[pos].points.ma=atoi(strtok(NULL,"\t"));
        st[pos].points.op=atoi(strtok(NULL,"\t"));
        st[pos].birthday.day=atoi(strtok(birth,"."));
        st[pos].birthday.month=atoi(strtok(NULL,"."));
        st[pos].birthday.year=atoi(strtok(NULL,"."));
        print(&st[pos]);
        pos++;
    };
    cout<<endl;
    NotTwo(st,pos);
    getch();
}
 
void NotTwo(stud st[],int pos) {
    int i,p=0;
    for(i=0;i<pos;i++) {
        if(st[i].points.ang!=2&&st[i].points.dm!=2&&st[i].points.iu!=2&&
            st[i].points.la!=2&&st[i].points.ma!=2&&st[i].points.op!=2) {
            ptrs[p++]=st[i];
        };
    };
    namesort(ptrs,p);
    maxyear(ptrs,p);
};
 
void print(stud *b) {
        cout<<b->surname<<" ";
        cout<<b->name<<" ";
        cout<<b->birthday.day<<"."<<b->birthday.month<<"."<<b->birthday.year<<" ";
        cout<<b->points.ang<<" ";
        cout<<b->points.dm<<" ";
        cout<<b->points.iu<<" ";
        cout<<b->points.la<<" ";
        cout<<b->points.ma<<" ";
        cout<<b->points.op<<" "<<endl;
};
 
void namesort(stud ptrs[],int ps) {
    int i,j;
    stud tmp;
    
    for(i=0;i<ps;i++)
        for(j=0;j<ps-1;j++) {
 
            if(strcmp(ptrs[j].surname,ptrs[j+1].surname)>0) {
                tmp=ptrs[j];
                ptrs[j]=ptrs[j+1];
                ptrs[j+1]=tmp;
            };
            if(strcmp(ptrs[j].surname,ptrs[j+1].surname)==0){
                if(strcmp(ptrs[j].name,ptrs[j+1].name)>0) {
                    tmp=ptrs[j];
                    ptrs[j]=ptrs[j+1];
                    ptrs[j+1]=tmp;
                };
            };
        };
    cout<<"\nList of students without mark 2:\n\n";
    for(i=0;i<ps;i++) print(&ptrs[i]);
};
 
void maxyear(stud ptrs[],int ps) {
    int i,j;
    stud tmp;
    
    for(i=0;i<=ps;i++)
        for(j=0;j<ps-1;j++) {
            if( (ptrs[j].birthday.year>ptrs[j+1].birthday.year)  || 
                (ptrs[j].birthday.year==ptrs[j+1].birthday.year&&ptrs[j].birthday.month>ptrs[j+1].birthday.month)  || 
                (ptrs[j].birthday.year==ptrs[j+1].birthday.year&&ptrs[j].birthday.month==ptrs[j+1].birthday.month&&ptrs[j].birthday.day>ptrs[j+1].birthday.day)){
                tmp=ptrs[j];
                ptrs[j]=ptrs[j+1];
                ptrs[j+1]=tmp;
            };
        
        };
    cout<<"\n\nTwo oldest students: \n";
    print(&ptrs[0]);
    print(&ptrs[1]);
};
TrueBit
 Аватар для TrueBit
95 / 95 / 12
Регистрация: 19.11.2012
Сообщений: 195
07.01.2014, 15:20     Распечатать список студентов, которые получили только оценки 5 на экзаменах, в возрастающем порядке по возрасту #3
Вот попробуйте:

main.cpp:
Кликните здесь для просмотра всего текста
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <fstream>
#include <list>
#include <string>
#include <vector>
using namespace std;
 
struct student {
    char name[255],surname[255];
    struct _birthday {
        int year,month,day;
    } birthday;
    struct _score {
        int s1,s2,s3,s4,s5,s6;
    } score;
};
 
bool compare(student first,student second) {
    if(first.birthday.year<second.birthday.year) {
        return true;
    } else if(first.birthday.year==second.birthday.year) {
        if(first.birthday.month<second.birthday.month) {
            return true;
        } else if(first.birthday.month==second.birthday.month) {
            if(first.birthday.day<second.birthday.day) {
                return true;
            } else {
                return false;
            }
        } else {
            return false;
        }
    } else {
        return false;
    }
}
 
int main() {
    FILE * hFile = fopen("file.txt","r+");
    list<student> students;
    student temp;
    
    // read to vector
    while( fscanf(hFile,"%s %s %d.%d.%d %d %d %d %d %d %d\n",
        temp.name,
        temp.surname,
        &temp.birthday.day,&temp.birthday.month,&temp.birthday.year,
        &temp.score.s1,&temp.score.s2,&temp.score.s3,&temp.score.s4,&temp.score.s5,&temp.score.s6) != EOF)
            students.push_back(temp);
    // print source
    printf("source: \n");
    for(list<student>::iterator it=students.begin(); it!=students.end(); it++) {
        printf("%20s %20s %02d.%02d.%02d %d %d %d %d %d %d\n",
            it->name,it->surname,
            it->birthday.day,it->birthday.month,it->birthday.year,
            it->score.s1,it->score.s2,it->score.s3,it->score.s4,it->score.s5,it->score.s6);
    }
    // print sort
    students.sort(compare);
    printf("sort: \n");
    for(list<student>::iterator it=students.begin(); it!=students.end(); it++) {
        printf("%20s %20s %02d.%02d.%02d %d %d %d %d %d %d\n",
            it->name,it->surname,
            it->birthday.day,it->birthday.month,it->birthday.year,
            it->score.s1,it->score.s2,it->score.s3,it->score.s4,it->score.s5,it->score.s6);
    }
    // print 5
    printf("5: \n");
    for(list<student>::iterator it=students.begin(); it!=students.end(); it++) {
        if(it->score.s1==5 && it->score.s2==5 && it->score.s3==5
             && it->score.s4==5 && it->score.s5==5 && it->score.s6==5)
                printf("%20s %20s %02d.%02d.%02d %d %d %d %d %d %d\n",
                    it->name,it->surname,
                    it->birthday.day,it->birthday.month,it->birthday.year,
                    it->score.s1,it->score.s2,it->score.s3,it->score.s4,it->score.s5,it->score.s6);
    }
    fclose(hFile);
}


file.txt:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
Pavlov Pavlo 23.09.1994 5 5 5 5 5 5
Petrov Petro 12.03.1995 3 2 5 3 2 2
Ivanov Ivan 05.11.1994 5 5 5 5 5 5 
Myronov Myron 31.01.1995 2 3 2 3 3 3
Janyk Viktor 03.02.1995 1 3 3 1 2 2
Rubik Kubik 14.09.1994 5 5 5 5 5 5
Zaxar Nazar 22.01.1995 2 3 3 3 1 1


Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
source: 
              Pavlov                Pavlo 23. 9.1994 5 5 5 5 5 5
              Petrov                Petro 12. 3.1995 3 2 5 3 2 2
              Ivanov                 Ivan  5.11.1994 5 5 5 5 5 5
             Myronov                Myron 31. 1.1995 2 3 2 3 3 3
               Janyk               Viktor  3. 2.1995 1 3 3 1 2 2
               Rubik                Kubik 14. 9.1994 5 5 5 5 5 5
               Zaxar                Nazar 22. 1.1995 2 3 3 3 1 1
sort: 
               Rubik                Kubik 14. 9.1994 5 5 5 5 5 5
              Pavlov                Pavlo 23. 9.1994 5 5 5 5 5 5
              Ivanov                 Ivan  5.11.1994 5 5 5 5 5 5
               Zaxar                Nazar 22. 1.1995 2 3 3 3 1 1
             Myronov                Myron 31. 1.1995 2 3 2 3 3 3
               Janyk               Viktor  3. 2.1995 1 3 3 1 2 2
              Petrov                Petro 12. 3.1995 3 2 5 3 2 2
5: 
               Rubik                Kubik 14.09.1994 5 5 5 5 5 5
              Pavlov                Pavlo 23.09.1994 5 5 5 5 5 5
              Ivanov                 Ivan 05.11.1994 5 5 5 5 5 5
Yandex
Объявления
07.01.2014, 15:20     Распечатать список студентов, которые получили только оценки 5 на экзаменах, в возрастающем порядке по возрасту
Ответ Создать тему
Опции темы

Текущее время: 10:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru