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

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

Восстановить пароль Регистрация
 
alexson123
0 / 0 / 0
Регистрация: 01.10.2013
Сообщений: 63
01.10.2013, 15:17     Найти и вывести на экран самого молодого студента, родившегося осенью #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
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
#include <stdlib.h>
#include <iomanip>
const int L=10;
struct student
{char fam[L];
 char iniziali[5];
 int day;
 int mon;
 int year;
};
void inputStudentFile(student x[], int&n);
void outputStudentFile(student x[], int n);
void outputStudent(student x[], int n);
void sort(student x[], int n);
int main()
{
const int N=100;
student a[N];
int m;
clrscr();
cout.setf(ios::left);
inputStudentFile(a,m);
cout<<" Ishodniy massiv struktur\n";
outputStudent(a,m);
sort(a,m);
outputStudentFile(a,m);}
 
void inputStudentFile(student x[], int&n)
{ifstream fin;
char file[L];
cout<<"Vvedite nazwanie faila\n";cin>>file;
fin.open(file);
if(fin.fail())
  {cout<<"Nevozmozno otkrit fail"<<file<<endl;
  getche();exit(1);
 }
n=0;
do{fin>>x[n].fam>>x[n].iniziali>>x[n].day>>x[n].mon>>x[n].year;
  n++;
}while(fin.good());
n--;
fin.close();
}
 
void outputStudentFile(student x[], int n)
{ofstream fout;
int i;
char file[L];
cout<<"Save ? ";cin>>file;
fout.open(file);
if (fout.fail())
    {cout<<"Cannot save the file "<<file<<endl;
     getch();
     }  for(i=0;i<n;i++)
   if(x[i].mon==3||x[i].mon==4||x[i].mon==5)
    {fout<<x[i].fam<<" "<<x[i].iniziali<<" "<<x[i].day<<" "<<x[i].mon<<" "<<x[i].year<<endl;
     i=n;}
cout<<"File was succesfully saved";
getch();
fout.close();
}
void outputStudent(student x[], int n)
{int i;
    cout<<"Familiya  Iniz D  M  Y   \n";
   for(i=0;i<n;i++)
   cout<<setw(10)<<x[i].fam<<setw(5)<<x[i].iniziali<<setw(3)<<x[i].day<<setw(3)<<x[i].mon<<setw(5)<<x[i].year<<endl;
   getch();
}
    void sort(student x[], int n)
{int i, fl;
student t;
do {fl=0;
    for(i=0;i<n;i++)
    if(x[i].year>x[i+1].year)
      { t=x[i]; x[i]=x[i+1]; x[i+1]=t; fl=1; }
    else if(x[i].year==x[i+1].year)
       {if(x[i].mon>x[i+1].mon)
          { t=x[i]; x[i]=x[i+1]; x[i+1]=t; fl=1; }
        else if(x[i].mon==x[i+1].mon)
           {if(x[i].day>x[i+1].day)
             {t=x[i]; x[i]=x[i+1]; x[i+1]=t; fl=1; }}}
 }while(fl==1);
for(i=0;i<n;i++)
      if(x[i].mon==3||x[i].mon==4||x[i].mon==5)
     {cout<<"\n Studenty rodivshiesya osenoy\n\n";
      cout<<"Familiya  Iniz D  M  Y   \n";
        cout<<setw(10)<<x[i].fam<<setw(5)<<x[i].iniziali<<setw(3)<<x[i].day<<setw(3)<<x[i].mon<<setw(5)<<x[i].year<<endl;
     getche();
      }
}
Но он выводит студента, который родился осенью. Не подскажете, в чем я ошибся? Заранее благодарен.

Добавлено через 40 минут
Всем спасибо. Сам нашел ошибку.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2013, 15:17     Найти и вывести на экран самого молодого студента, родившегося осенью
Посмотрите здесь:

Файлы: отсортировать и найти самого младшего и самого страшего с правами и без прав C++
C++ Найти длину самого длинного слова и вывести это слово на экран
Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слова. C++
Структуры и файлы (посчитать средний балл каждого студента и вывести фамилию студента с наибольшим баллом) C++
C++ Найти и вывести на экран самого молодого студента
найти самого молодого (код) C++
C++ Число. Вывести только цифры самого младшего и самого старшего разряда
Функции над полями структуры - Поиск самого высокого студента C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
scenotaph
120 / 120 / 15
Регистрация: 29.03.2013
Сообщений: 237
01.10.2013, 15:33     Найти и вывести на экран самого молодого студента, родившегося осенью #2
Обращайтесь
Yandex
Объявления
01.10.2013, 15:33     Найти и вывести на экран самого молодого студента, родившегося осенью
Ответ Создать тему
Опции темы

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