Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
games over
0 / 0 / 2
Регистрация: 03.01.2014
Сообщений: 9
1

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

03.01.2014, 23:05. Просмотров 636. Ответов 2
Метки нет (Все метки)

С текстового файла считать последовательность записей, содержащих данные о результатах сессии студентов группы в следующем формате: <Фамилия>, <Имя>, <Дата рождения>, <Список экзаменационных оценок>. Распечатать введенные данные в виде таблици.Роздрукуваты список студентов, которые получили только оценки 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 секунды
файл примерно таково формата
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.01.2014, 23:05
Ответы с готовыми решениями:

Вывести число учеников которые получили положительные оценки
День добрый, помогите плз) Дано f файл, внутри есть оценки учеников...

Распечатать фамилии тех учеников, которые не получили ни одной тройки. С++
Распечатать фамилии тех учеников, которые не получили ни одной тройки за...

Упорядочить список студентов по возрасту
Ребята help с решением , не понимаю как решать,вот собственно задача: Дан...

Распечатать фамилии тех учеников, которые не получили ни одной тройки за последнюю четверть. Найти ошибку
Распечатать фамилии тех учеников, которые не получили ни одной тройки за...

Вывести список студентов, имеющих положительные оценки
Помогите как вывести тех студентов, которые имеют хотя бы одну оценку 4 и 5 . ...

2
games over
0 / 0 / 2
Регистрация: 03.01.2014
Сообщений: 9
07.01.2014, 11:25  [ТС] 2
Лучший ответ Сообщение было отмечено games over как решение

Решение

есть такой код но с ошибкой какую я не магу ісправіть пасматріте может знаєте




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]);
};
0
TrueBit
96 / 96 / 47
Регистрация: 19.11.2012
Сообщений: 195
07.01.2014, 15:20 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
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.01.2014, 15:20

Вывести все N-значные числа, которые не содержат цифру D, в возрастающем порядке
Вам даны число N и цифра D. Выведите все N-значные числа, которые не содержат...

Распечатать анкетные данные студентов, получивших на последней сессии оценки "2".
Распечатать анкетные данные студентов, получивших на последней сессии оценки...

Список студентов: возможность вводить оценки, изменять, удалять
нужно сохдать программу списка студентов и их оценок (баллы от 0-100, чтобы...


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

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

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