Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 2
Регистрация: 03.01.2014
Сообщений: 9

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

03.01.2014, 23:05. Показов 2394. Ответов 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)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.01.2014, 23:05
Ответы с готовыми решениями:

Распечатать список студентов, которые получили неудовлетворительные оценки за последнюю сессию
Распечатать список студентов, которые получили неудовлетворительные оценки за последнюю сессию, упорядоченный в алфавитном порядке.Для...

Найти и вывести фамилии тех студентов, которые на экзаменах получили не ниже 7 баллов
Даны оценки группы студентов на экзаменах по 4 предметам: алгебре, геометрии, философии, информатике. Найти и вывести фамилии тех...

Вывести анкетные данные студентов, которые получили за последнюю сессию все оценки 5
4. В группе 5 человек. Вывести анкетные данные студентов, которые получили за последнюю сессию все оценки 5.

2
0 / 0 / 2
Регистрация: 03.01.2014
Сообщений: 9
07.01.2014, 11:25  [ТС]
Лучший ответ Сообщение было отмечено 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
100 / 100 / 47
Регистрация: 19.11.2012
Сообщений: 195
07.01.2014, 15:20
Вот попробуйте:

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.01.2014, 15:20
Помогаю со студенческими работами здесь

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

Распечатать список студентов и их оценки
В программах предусмотреть ввод исходной информации о четырех студентах: фамилия и инициалы; год рождения; год поступления ...

Вывести всех студентов, которые получили только «4» и/или «5»
Помогите, пожалуйста. Давно не писал на прологе, все забыл. Оценки сессии даны следующим образом Оценка(Студент, Предмет, Оценка). ...

Распечатать список студентов, получивших все оценки 2.
Нужно отредактировать программу так чтобы в конце программы выполнялось следующее: 1) Распечатать список студентов, получивших все оценки...

Вывести список студентов, которые получили хоть один зачет
Здравствуйте. Не мог бы кто-нибудь помочь мне решить несколько простых задач по БД на запросы?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru