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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Alex1000
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 17
#1

Студентов поступивших в нечетном году занести в список, отличный от общего - C++

02.01.2012, 13:20. Просмотров 479. Ответов 5
Метки нет (Все метки)

Дан двусвязный список. Узел списка- информация о студенте: фамилия, год рождения, год поступления, оценки по предметам. Студентов поступивших в нечетном году занести в другой список (с удалением из первого). Распечатать оба списка.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2012, 13:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Студентов поступивших в нечетном году занести в список, отличный от общего (C++):

Вывести в новый файл список студентов, удалив из него студентов окончивших школу в текущем году. - C++
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую школу...

Вывести в новый файл список студентов, удалив из него студентов окончивших школу в текущем году - C++
На основе данных входного файла составить список студентов группы, включив следующие данные: ФИО, год рождения, домашний адрес, какую...

Упорядочить список студентов по году рождению - C++
Язык Си Дан файл, содержащий сведение о студентах, включающие в себя его фамилию имя, год рождение, номер группы и оценки, по каким либо...

Распечатать список студентов упорядоченный по году рождения - C++
подскажите что нужно исправить #include <iostream> #include <cstring> #include <stdio.h> using namespace std; const int n = 3; ...

Упорядочить список студентов по году рождения и распечатать его - C++
Здравствуйте помогите написать программу. На диске имеется файл данных STUDENT.DAT.упорядочить список студентов по году рождения и...

Распечатать список студентов со средним баллом выше общего среднего балла - C++
Вычислить общий средний балл всех студентов и распечатать список студентов со средним баллом выше общего среднего балла.

5
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
02.01.2012, 16:24 #2
Alex1000, ну давайте ваши наработки чтоли, не писать же специально для вас в сотый раз класс студент.
0
Alex1000
0 / 0 / 0
Регистрация: 02.01.2012
Сообщений: 17
02.01.2012, 16:36  [ТС] #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
#include<iostream>
#include <conio.h>
#include <time.h>
using namespace std;
 
class Student {
public:
    char*fio;
    int age;
    int god_pos;
        int osenk;
    Student()
    {
        fio=new char[50];
        int god_pos;
        int osenk;
    }
    
void Init_Student ()
{
    cout<<"Введите Ф.И.О.:\n";
    gets(fio);
    cout<<"Введите год рждения:\n";
    cin>>age;
    cin.ignore(1);
    cout<<"Введите дату год поступления:\n";
    gets(god_post);
}
0
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 17:24 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
#include<iostream>
#include <conio.h>
#include <time.h>
#include<list>
#include<algorithm>
using namespace std;
 
class Student {
public:
    char*fio;
    int age;
    int god_pos;
        int osenk;
    
Student()
    {
        fio=new char[50];
         god_pos=0;
                 osenk=0;
    }
 
Student(char* name,int year,int _age,int grade=0):fio(name),age(_age),god_pos(year),osenk(grade)
    {
    }
void Init_Student ()
{
    cout<<"Введите Ф.И.О.:\n";
    gets(fio);
    cout<<"Введите год рждения:\n";
    cin>>age;
    cin.ignore(1);
    cout<<"Введите  год поступления:\n";
    gets(god_post);
}
};
void main(){
 
list<Student> students;
 strudents.push_back(Student("bla bla",1993,16));
 strudents.push_back(Student("bla bla2",1991,16));
strudents.push_back(Student("bla bla4",1994,16));
strudents.push_back(Student("bla bla3",1996,16));
 list<Student> students1;
 list<Student>::iterator start=students.begin();
 list<Student>::iterator end=students.end();
while(start!=end){
if((start->god_pos)%2){
students2.push_back(*start);
}
++start
}
 start=students.begin();
 end=students.end();
 
copy(start,end,ostream_iterator<Student>(cout," ");
cout<<endl 
start=students2.begin();
 end=students2.end();
 
copy(start,end,ostream_iterator<Student>(cout," ");
}
только тебе придется перегрузить <<
и вопрос к знатокам как правильно в вайл цикле удалить елемент из студент 1
1
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
02.01.2012, 17:28 #5
Alex1000, ну судя по некоторым строчкам туговато у вас со студентами то, давайте буду пробовать вам подсказывать, а Вы будете подсказки применять на практике.
C++
1
2
3
4
5
6
        Student()
        {
                fio=new char[50];
                int god_pos;
                int osenk;
        }
Ну имена переменных это дело ваше, но зачем объявлять локальные переменные в конструкторе-то. Я так понимаю Вы по аналогии с выделением памяти под fio хотели и им место выделить, так вот учитывая что ваша переменная osenk и god_pos это не указатели (и делать их указателями не надо) то и в конструкторе их упоминать не стоит.
Дальше давайте лучше подойдём с точки зрения планирования и создания вашего будущего списка.
Нужно размышлять логически: нужно сделать двусвязный список значит нужен класс List. Раз наш список двусвязный то значит узлом списка нам надо бы сделать какую-нибудь структуру или класс содержащую элемент списка указатель на след. и пред. элемент, назовём её допустим Element. И третье что нужно так как это сам элемент списка, те класс студент, такой же как у вас, но только с конструктором, set и get методами.
Прикладываю объявления моих классов для примера.

Сам список, а также структура содержащая элемент списка
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
struct ListItem
{
    CStudent data;
    ListItem *Next;
    ListItem *Prev;
    ListItem(const CStudent& first,ListItem *next=0, *prev=0)
    {
        data=first;
        Next=next;
        Prev=prev;
    };
};
 
class List
{
 
    ListItem *Head;
    ListItem *Tail;
 
public:
    List(): Head(0), Tail(0){}
    List(const CStudent& stud);
           ~List();
    void addToTail(const CStudent&);
    void addToHead(const CStudent&);
           ...
Класс студент
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
class CStudent
{
    string fname;
    string sname;
    string tname;
    string group;
    int year;
    float average;
 
 
public:
    CStudent(string ="",string ="",string ="",string ="",int =0,float =0);
    CStudent& operator=(const CStudent &_v);
 
    void setFname(string s){fname=s;}
    string getFname() const{return fname;}
    void setSname(string s){sname=s;}
    string getSname() const {return sname;}
    void setTname(string s){tname=s;}
    string getTname() const{return tname;}
    void setGroup(string g){group=g;}
    string getGroup() const{return group;}
    void setYear(int y){year=(y>=1950 && y<=2012 ? y : -1);}
    int getYear() const{return year;}
    void setAverage(float aver){average=(aver>=0 && aver<=100 ? aver : -1);}
    float getAverage() const{return average;}
    ...
Мой пример я просто привёл чтобы Вы могли понять что примерно вам нужно реализовать.
1
vetal10
35 / 35 / 5
Регистрация: 25.05.2010
Сообщений: 211
02.01.2012, 17:37 #6
Gepar,посмотри если тут я сразу после занесения в студент2 удалю старт и студент1 и напишу ++студент ето не вызовет ошибкой??
C++
1
2
3
4
5
6
while(start!=end){
if((start->god_pos)%2){
students2.push_back(*start);
}
++start
}
0
02.01.2012, 17:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.01.2012, 17:37
Привет! Вот еще темы с ответами:

Распечатать список студентов группы имеющих средний балл выше общего среднего балла - C++
Вычислить общий средний балл всех студентов и распечатать список студентов интересующей вас группы, имеющих средний балл выше общего...

Программа выводит неверный ответ (дан массив структур, содержащий сведения об успеваемости студентов - вывести список неуспевающих студентов) - C++
Задача: Дан массив структур, содержащий сведения об успеваемости по информатике группы из 25 студентов. Структура содержит следующие...

Составить программу для расчета общего числа студентов на любом курсе - C++
В Двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первой...

Упорядочить список студентов по среднему баллу и вывести весь список - C++
форумчане,выдает ошибку :( столько маюсь с задачей уже #include &lt;vcl.h&gt; #include &lt;stdio.h&gt; #pragma hdrstop /*Упорядочить список...


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

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

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