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

Найти и вывести на экран самого молодого студента - C++

Восстановить пароль Регистрация
 
Jenot
0 / 0 / 0
Регистрация: 17.04.2012
Сообщений: 21
02.10.2012, 07:18     Найти и вывести на экран самого молодого студента #1
Дан массив записей, содержащий сведения о студентах группы: фамилия и инициалы студента, Дата рождения(число месяц год). Найти и вывести на экран самого молодого студента


Вот код, только он не сортирует и не выводит, помогите доделать!!!
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
 
#include "StdAfx.h"
#include "iostream"
#include "string"
#include "conio.h"
using namespace std;
 
const int L=31;
 
struct fio
{
     char family[L];
     char name[L];
     char lastName[L];
};
struct Date
{
     int day,month,year;
};
 
struct stud
{
     fio fam;
     Date dr;
};
 
 
void input(stud x[ ],int n);
void sortG(stud a[ ],int m);
void output(stud x[ ],int n);
 
void input(stud x[ ],int n)
 
{int i;
for (i=0 ;i<n;i++)
{
cout<<"family ";
cin>>x[i].fam.family;
cout<<"name ";
cin>>x[i].fam.name;
cout<<"otchestvo ";
cin>>x[i].fam.lastName;
cout<<"den' rozhdeniya ";
cin>>x[i].dr.day;
cout<<"mesyac ";
cin>>x[i].dr.month;
cout<<"god ";
cin>>x[i].dr.year;
cout<<endl;
}
}
 
void output(stud x[ ],int n)
 
{
int i;
for (i=0;i<n;i++)
cout << i + 1 <<" "<< x[i].fam.family <<" "<< x[i].fam.name <<" "<< x[i].fam.lastName <<" "<< x[i].dr.day<<"."<< x[i].dr.month<<"."<< x[i].dr.year<< endl;
}
 
void main()
{
const int N=100;
int k,i;
stud a[N];
for (i=0; i<N; i++);
{
a[i].fam.family[0] = NULL;
a[i].fam.name[0] = NULL;
a[i].fam.lastName[0] = NULL;
a[i].dr.day = 0;
a[i].dr.month = 0;
a[i].dr.year = 0;
}
 
int m, n;
cout<<"kolichestvo studentov \n";
cin>>m;
input(a,m);
cout<<"ishodnui massiv\n";
output(a,m);
cout<<"Rezult \n";
sortG(a,m);
output(a,m);
 
void sortG(stud a[ ],int m);
{
     int i;
     int fl;
     stud t;
     do
     { fl=0; m--; 
    for (i=0;i<m;i++)
     if (a[i].dr.year>a[i+1].dr.year)
     {t=a[i];
          a[i]=a[i+1];
          a[i+1]=t;
          fl=1;
          }
     } while (fl==1);
getch();
}
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.10.2012, 07:18     Найти и вывести на экран самого молодого студента
Посмотрите здесь:

C++ Найти длину самого длинного слова и вывести это слово на экран
Найти и вывести на экран самого молодого студента, родившегося осенью C++
C++ Найти и вывести на экран самого молодого студента
Найти самого молодого родившегося осенью студента C++
Структуры и массивы структур: найти самого старшего студента, родившегося летом C++
Функции над полями структуры - Поиск самого высокого студента C++
Найти самого младшего студента по полной дате рождения C++
C++ Структуры: определить самого молодого представителя мужского пола и его знак Зодиака

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
02.10.2012, 14:53     Найти и вывести на экран самого молодого студента #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
#include <iostream>
#include <fstream>
#include <ctime>
#include <stdexcept>
#include <cstring>
#include <algorithm>
#define L 31
 
struct Snp
{
    char surname[L], name[L], patronymic[L];
};
 
struct Student
{
    Student()
    {
        memset(&bdate, 0, sizeof(bdate));
    }
    tm bdate; // дата рождения представлена структрой tm из <ctime>
    Snp name;
};
 
std::ostream& operator<<(std::ostream& os, Student const& st) // вывод инфы о студенте в поток
{
    char buf[100];
    strftime(buf, sizeof(buf), "%Y %m %d", &st.bdate);
    return os << st.name.surname << ' ' << st.name.name << ' ' << st.name.patronymic << "  "<< buf;
}
 
struct TComp // сравнение двух студентов по дате рождения
{
    bool operator()(Student& s1, Student& s2)
    {
        return (difftime(mktime(&s1.bdate), mktime(&s2.bdate)) > 0);
    }
};
 
int main()
{
    std::ifstream ifs("in.txt"); // массив cтудентов заполняем из файла, образец файла см. ниже
    if(ifs.is_open())
    {
        size_t const size = 3;
        size_t i;
        Student group[size];
        for(i = 0; i < size && ifs >> group[i].name.surname >> group[i].name.name >> group[i].name.patronymic >> group[i].bdate.tm_year >> group[i].bdate.tm_mon >> group[i].bdate.tm_mday; ++i)
        ;
        if(i < size) // если не удалось считать size студентов
        {
            throw std::runtime_error("operator>> failed");
        }
        Student* pst = std::min_element(group, group + size, TComp()); // поиск младшего студента
        std::cout << *pst << std::endl;
        ifs.close();
    }
    else std::cerr << "Unable to open input file" << std::endl;
    return 0;
}
 
/* пример файла in.txt для size <= 3:
 
surname1  name1  patronymic1  92  2  24
surname2  name2  patronymic2  93  0  27
surname3  name3  patronymic3  90  0  14
 
*/
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
02.10.2012, 15:03     Найти и вывести на экран самого молодого студента #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include <iostream>
#include <string>
#include <iomanip>
#include <algorithm>
 
using namespace std;
 
const int L = 31;
 
struct fio
{
    char surname[L];
    char name[L];
    char patronymic[L];
};
 
struct Date
{
    int day, month, year;
};
 
struct stud
{
    fio fam;
    Date dr;
};
 
 
void input(stud x[ ], int n);
void output(stud x[ ], int n);
bool pred(stud& lhand, stud& rhand);
 
void main()
{
    int m = 0;
    cout<<"Enter number of students: ";
    cin >> m;
    stud *students = new stud[m];
    memset(students, 0, sizeof(stud) * m);
    input(students, m);
 
    cout<<"Unsorted array:\n";
    output(students, m);
    
    std::sort(students, students + m, pred);
    cout<<"\nSorted array:\n";
    output(students, m);
 
    delete [] students;
    system("pause");
}
 
void input(stud x[ ],int n)
{
    for (int i = 0 ; i < n; ++i)
    {
        cout << "Surname: ";
        cin >> x[i].fam.surname;
        cout << "Name: ";
        cin >> x[i].fam.name;
        cout << "Patronymic: ";
        cin >> x[i].fam.patronymic;
        cout << "Day of birth: ";
        cin >> x[i].dr.day;
        cout <<"Month of birth: ";
        cin >> x[i].dr.month;
        cout << "Year of birth: ";
        cin >> x[i].dr.year;
        cout << endl;
    }
}
 
void output(stud x[ ], int n)
{
    for (int i = 0; i < n; ++i)
        cout << setw(3) << i + 1 << " "
        << x[i].fam.surname << " "
        << x[i].fam.name << " "
        << x[i].fam.patronymic << " "
        << x[i].dr.day<< "."
        << x[i].dr.month<< "."
        << x[i].dr.year << endl;
}
 
bool pred(stud& lhand, stud& rhand)
{
    return strcmp(lhand.fam.surname, rhand.fam.surname) < 0 ? true : false;
}
Yandex
Объявления
02.10.2012, 15:03     Найти и вывести на экран самого молодого студента
Ответ Создать тему
Опции темы

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