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

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

Войти
Регистрация
Восстановить пароль
 
yur@
5 / 5 / 2
Регистрация: 06.03.2014
Сообщений: 106
#1

STL для новичка! - C++

27.03.2014, 01:59. Просмотров 364. Ответов 2
Метки нет (Все метки)

Здравствуйте! подскажите пожалуйста мне, дураку(только начал изучать STL) ответ на такой вопрос! что нужно подставить в 19 строку?
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
#include <string.h>
#include <stdio.h>
#include "list.h"
#include "student.h"
 
int main(){
    printf("\t\t\tSupported commands:\n");
    printf("\t\t\tpb - (push_back) add element to the end of list\n");
    printf("\t\t\tpf - (push_front) add element to the front of list\n");
    printf("\t\t\tdel - delete element for order number\n");
    printf("\t\t\tlist - show all elements in the list\n");
    printf("\t\t\tfind - find student by name\n");
    printf("\t\t\tclear - remove all elements from the list\n");
    printf("\t\t\tsave - save the list to a file using fstream\n");
    printf("\t\t\tload - retrieve a list of the file using fstream\n");
    printf("\t\t\texit - quit from program\n\n");
 
    Student x;
    List<.....> s;
    s.List();
    char cmd[50];
    for (;;){
        printf("enter command>");
        fflush(stdin);
        gets(cmd);
        if (strcmp(cmd, "pb")==0){
            x.getName();
            s.push_back(&x, sizeof(Student));
        }
        if (strcmp(cmd, "pf")==0){
            x.getName();
            s.push_front(&x, sizeof(Student));
        }
        if (strcmp(cmd, "list")==0){
            Student *p;
            s.reset();
            while(s.moveNext()){
                p = (Student*)s.getCurrent();
                x.setName();
            }
        }
        if (strcmp(cmd, "find")==0){
            printf("\nEnter student name:");
            scanf("%s", x.name);
            Student *p;
            p = (Student*)s.find(&x,cmp_student_by_name);
 
            if (p!=NULL){
                printf("\nFound: ");
                printf("%s\t", p->name);
                printf("%d\t", p->order);
                printf("%f\n", p->average_point);
            } else {
                printf("Student does not found\n\n");
            }
        }
        if (strcmp(cmd, "clear")==0){
            s.clear(); // Уничтожаем все элементы и освобождаем память
        }
        if (strcmp(cmd, "exit")==0){
           break;
        }
        if (strcmp(cmd, "del")==0){
            int i;
                printf("Input order number: ");
                scanf("%d", &i);
                s.del(i);
            }
        if (strcmp(cmd, "save")==0){
            string l="info.txt";
            s.saveTo(l,sizeof(Student));
        }
        if (strcmp(cmd, "load")==0){
             s.loadFrom("info.txt",sizeof(Student));
        }
 
        }
 
    s.clear();
    return 0;
}
Добавлено через 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
template <class T>
class List {
 
    typedef struct l_node{
        T *data;        // Указатель на данные
        l_node *next;   // Указатель на следующий элемент
    } list_node;
    private:
        list_node *head; // Указатель на голову списка
        list_node *current; // Указатель на текущий элемент списка
        int list_size;      // Кол-во элементов списка
        T tmp;
    public:
        List();
        ~List();
        // Возвращает кол-во элементов в списке
        int getListSize();
        // Добавление в список
        bool push_back(const T &data);
        bool push_front(const T &data);
        // Удаление i-того элемента списка
        bool del(int i);
        // Удаление всех элементов списка list,
        // освобождение памяти.
        void clear();
        // Сброс внутреннего указателя списка.
        void reset();
        // Перемещает внутренний указатель списка list на следующий элемент.
        bool moveNext();
        // Возвращает указатель на данные текущего элемента списка,
        // либо NULL - если текущий элемент не существует.
        const T &getCurrent();
        // Возвращает true если элемент найден
        // результат поиска должен быть записан в параметр result
        bool find(T &val, T &result);
        // Сохраняет список в файл с именем fileName
        // возвращает false в случае ошибки
        bool saveTo(const string &fileName);
        // Загружает список из файла с именем fileName
        bool loadFrom(const string &fileName);
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2014, 01:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос STL для новичка! (C++):

Компилятор для новичка - C++
будь ласка, дайте (порекомендуйте) компилятор, которым пользуетесь, для новичка, у меня установлен: rad studio, vs studio 2012, vs studio...

Олимпиадка для новичка на С++ - C++
Сразу влепили усиленную задачу, причем ничего не объяснили по С++. Делай как хочешь. А до сессии 3 недели. Помогите плиз. Я замаялся. Итак...

Книги по c++ для новичка - C++
Подскажите книги по c++ для новичка Знаний в програмировании нет

Учебник для новичка по с++? - C++
Извините возможно за очередную тему с этим вопросом... но я не как не могу найти в нете книгу для меня... везде идет разговор совершенно не...

Отличия в C++11 для новичка - C++
Недавно увидел что в 2011 был принят какой-то новый стандарт языка програмирования C++(C++11).Я сам сейчас изучаю этот язык по &quot;C++ Вводный...

Видеокурсы для новичка - C++
Всем Привет, Подскажите пожалуйста актуальные видеокурсы(именно видуокурсы) по C++,

2
GetVariable
163 / 119 / 5
Регистрация: 17.03.2013
Сообщений: 283
27.03.2014, 07:56 #2
==
C++
1
List<Student> s;
==

При компиляции, вместо
C++
1
T *data;
, подставится
C++
1
Student *data
0
aLarman
644 / 565 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
Завершенные тесты: 1
27.03.2014, 09:50 #3
Цитата Сообщение от yur@ Посмотреть сообщение
только начал изучать STL
причем тут STL вообще?
Цитата Сообщение от yur@ Посмотреть сообщение
C++
1
List<.....> s;
вопрос я так полагаю связан с шаблоном, раз у Вас список студентов логично что
C++
1
List<Student> s;
----------------------
Цитата Сообщение от yur@ Посмотреть сообщение
C++
1
s.List();
wtf? это что Вы попытались вызвать констуркутор по умолчанию? я что то сомневаюсь что компиль это проглотит, к тому же Вы его уже вызвали тут
C++
1
List<Student> s;
Добавлено через 2 минуты
Цитата Сообщение от yur@ Посмотреть сообщение
s.push_back(&x, sizeof(Student));
У Вас разве есть метода принимающий push_back(Student *, size_t) ?
Цитата Сообщение от yur@ Посмотреть сообщение
C++
1
bool push_back(const T &data);
Вызывать тогда так
C++
1
s.push_back(x); //адрес x тут брать не надо
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2014, 09:50
Привет! Вот еще темы с ответами:

Литература для новичка - C++
Добрый день уважаемые гиберчани. Кругом много литературы о вводе в программирование. Знаю что тут много литературы тоже наблюдается. ...

Важно для новичка - C++
Здравствуйте уважаемые участники. Я задам вам вопрос, который является достаточно сложны для меня, по причине &quot;низкой обзорной...

OpenGL для новичка - C++
Всем привет. Никак не могу найти книгу по OpenGL и C++, хотя нет, вру, находил. Но они так сказать далеко не первой свежести. Я хотел бы...

Оптимальная IDE для новичка - C++
Подскажите в какой IDE лучше начать программировать Qt или Visual Studio?


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

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

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