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

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

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

Упорядочить список студентов по году рождению C++
C++ Найти студентов, общий балл которых отличается не более чем на 2 балла от максимального общего балла
C++ Упорядочить список студентов по году рождения и распечатать его
Занести данные в односвязный список C++
C++ Распечатать список студентов со средним баллом выше общего среднего балла
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
02.01.2012, 16:24     Студентов поступивших в нечетном году занести в список, отличный от общего #2
Alex1000, ну давайте ваши наработки чтоли, не писать же специально для вас в сотый раз класс студент.
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);
}
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
Gepar
 Аватар для Gepar
1173 / 529 / 20
Регистрация: 01.07.2009
Сообщений: 3,511
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;}
    ...
Мой пример я просто привёл чтобы Вы могли понять что примерно вам нужно реализовать.
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
}
Yandex
Объявления
02.01.2012, 17:37     Студентов поступивших в нечетном году занести в список, отличный от общего
Ответ Создать тему
Опции темы

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