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

Не выводится список целиком - C++

Восстановить пароль Регистрация
 
strategImws
0 / 0 / 0
Регистрация: 05.12.2012
Сообщений: 4
29.11.2013, 18:29     Не выводится список целиком #1
На экран выводится только последний элемент списка. Как вывести его целиком?
PersonElem.h
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
#pragma once
#include <string>
using namespace std;
class PersonElem
{
private:
    string Surname;
    int Age;
    PersonElem* Next;
public:
    PersonElem(void);
    ~PersonElem(void);
    PersonElem(string Surname1, int Age1);
    PersonElem(PersonElem& P1);
    void SetAll(string Name1, int Age1);
    // Извлечение адреса следующего элемента
    PersonElem* GetNext(void);
    void SetNext(PersonElem* Next1);
    string GetSurname(void);
    int GetAge(void);
    void Input(void);
    void Print(void);
    bool operator==(PersonElem& P2);
};
PersonElem.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
#include "stdafx.h"
#include "PersonElem.h"
#include <iostream>
 
PersonElem::PersonElem(void)
{
    Age=0;
}
 
 
PersonElem::~PersonElem(void)
{
}
 
PersonElem::PersonElem(string Surname1, int Age1)
{
    Surname=Surname1;
    Age=Age1;
}
 
PersonElem::PersonElem(PersonElem& P1)
{
    Surname=P1.Surname;
    Age=P1.Age;
}
 
void PersonElem::SetAll(string Surname1, int Age1)
{
    Surname=Surname1;
    Age=Age1;
}
 
void PersonElem::SetNext(PersonElem* Next1)
{
    Next=Next1;
}
 
PersonElem* PersonElem::GetNext(void)
{
    return Next;
}
 
string PersonElem::GetSurname(void)
{
    return Surname;
}
 
int PersonElem::GetAge(void)
{
    return Age;
}
 
void PersonElem::Input(void)
{
    cout << "Введите фамилию: " << endl;
    cin >> Surname;
    cout << "Введите возраст: " << endl;
    cin >> Age;
}
 
void PersonElem::Print(void)
{
    cout << "Фамилия: " << endl;
    cout << Surname << endl;
    cout << "Возраст: " << endl;
    cout << Age << endl;
}
PeopleList.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#pragma once
#include ".\personelem.h"
class PeopleList
{
private:
    // Адрес начала списка
    PersonElem* Start;
    // Число элементов в списке
    int n;
public:
    PeopleList(void);
    ~PeopleList(void);
    PeopleList(int n1);
    void Print(void);
    PeopleList* operator--(int n);
    PeopleList* add(PeopleList& l2);
    int Count(int a);
    void Input(void);
};
PeopleList.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
#include "stdafx.h"
#include "PeopleList.h"
#include <iostream>
 
using namespace std;
 
PeopleList::PeopleList(void)
{
    n=0;
}
 
 
PeopleList::~PeopleList(void)
{
}
 
PeopleList::PeopleList(int n1)
{
    PersonElem* Tmp;
    PersonElem* Cur;
    n=n1;
    for (int i=0; i<n; ++i)
        {
            Tmp= new PersonElem;
            Tmp->Input();
            if (i==0)
                {
                    Start=Cur=Tmp;
                    Start->SetNext(NULL);
                }
            else
                {
                    // Добавление в начало списка
                    Tmp->SetNext(Start);
                }
        }
}
 
// Выводится только последний элемент списка
void PeopleList::Print(void)
{
    PersonElem* Cur;
    for (Cur=Start; Cur!=NULL; Cur=Cur->GetNext())
        {
            Cur->Print();
        }
}
 
PeopleList* PeopleList::operator--(int n)
{
    PersonElem* Tmp;
    PersonElem* Cur;
    for (Cur=Start; (Cur->GetNext())->GetNext()!=NULL; Cur=Cur->GetNext());
        {
            Tmp=Cur->GetNext();
            Cur->SetNext(NULL);
            delete Tmp;
        }
    return this;
}
 
void PeopleList::Input(void)
{
    PersonElem* Tmp;
    PersonElem* Cur;
    cout << "Введите размер списка: " << endl;
    cin >> n;
    for (int i=0; i<n; ++i)
        {
            Cur= new PersonElem;
            Cur->Input();
            Start=Cur;
            Start->SetNext(NULL);
        }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2013, 18:29     Не выводится список целиком
Посмотрите здесь:

Ввод и вывод строки целиком C++
C++ Как по-русски обозвать целиком эту конструкцию?
Ввод строки из потокового файла целиком C++
Чтение файла целиком в std::string C++
C++ Проверить, лежит ли окружност целиком внутри окружности
Определить инициалы, если ФИО введено целиком C++
C++ Если целое число М делится на целое число N, то на экран выводится частное от деления, в противном случае выводится сообщение

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
29.11.2013, 21:45     Не выводится список целиком #2
Список неправильно строится:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
PeopleList::PeopleList(int n1)
{
    PersonElem* Tmp;
    PersonElem* Cur;
    n=n1;
    for (int i=0; i<n; ++i)
        {
            Tmp= new PersonElem;
            Tmp->Input();
            if (i==0)
                {
                    Start=Cur=Tmp;
                    Start->SetNext(NULL);
                }
            else
                {
                    // Добавление в начало списка
                    Tmp->SetNext(Start); // у каждого нового, следующий Start, после которого NULL.
                                         // Получается список из одного элемента, на который Start указывает
                }
        }
}
Yandex
Объявления
29.11.2013, 21:45     Не выводится список целиком
Ответ Создать тему
Опции темы

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