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

C++

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 2744, средняя оценка - 4.89
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
#1

Задачи для тренировки и лучшего понимания - C++

15.07.2010, 05:53. Просмотров 349628. Ответов 1272
Метки нет (Все метки)

Ребят. Кто-нибудь может дать задачу для тренировки? Приблизительно по всему курсу С++. Буду благодарен за сложную задачу, но которую способен сделать новичок-любитель. Затраты сил-времени не важно. Главное, чтобы это было интересно и не слишком рутинно. + Если найдется человек который даст задачу просьба помогать с кодом, который я буду себя скидывать. Не переписывать за меня, но указывать на ошибки и желательно объяснять. Заранее спасибо.

Список задач, решение которых присутствует в данной теме:
41
Лучшие ответы (59)
Сообщение: #857841 Сообщение: #857861 Сообщение: #858352 Сообщение: #859371 Сообщение: #860160 Сообщение: #860255 Сообщение: #860259 Сообщение: #860317 Сообщение: #860368 Сообщение: #860466 Сообщение: #860508 Сообщение: #860720 Сообщение: #861091 Сообщение: #862174 Сообщение: #862617 Сообщение: #867259 Сообщение: #870298 Сообщение: #872053 Сообщение: #876456 Сообщение: #880114 Сообщение: #882889 Сообщение: #884418 Сообщение: #886414 Сообщение: #886989 Сообщение: #887733 Сообщение: #888464 Сообщение: #888487 Сообщение: #888941 Сообщение: #888947 Сообщение: #889040 Сообщение: #889450 Сообщение: #889587 Сообщение: #891772 Сообщение: #891790 Сообщение: #891862 Сообщение: #897758 Сообщение: #897782 Сообщение: #906325 Сообщение: #907991 Сообщение: #943672 Сообщение: #943700 Сообщение: #967735 Сообщение: #1053777 Сообщение: #1054209 Сообщение: #1083853 Сообщение: #1083928 Сообщение: #1131058 Сообщение: #1131359 Сообщение: #1273743 Сообщение: #1275465 Сообщение: #1276743 Сообщение: #1279215 Сообщение: #1282583 Сообщение: #1309088 Сообщение: #1315633 Сообщение: #1366395 Сообщение: #1550164 Сообщение: #1603678 Сообщение: #1604364
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2010, 05:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задачи для тренировки и лучшего понимания (C++):

Прошу примеров для понимания INDY - C++ Builder
Уважаемые коллеги и братья по интересу. Прошу примеров использования Indy UDP Server (TIdUDPServer) и Indy UDP Client (TIdUDPClient) для...

Ищу примеры для понимания взаимодействия Callback + event - C++ WinAPI
Господа, подкиньте плиз какой-нибудь пример для понимания взаимодействия Callback+event С самими Callback функциями вроде разобрался, а...

Элементарные программы, для лучшего понимания языка... - C++
Здравствуйте. Вот сегодня решил что пора изучать с++. Есть пару задач. Начал решать и уже на первой запоролся( суть в том чтобы определить...

Нужны задачи для тренировки - C++
Здравствуйте киньте пожалуйста задания по с++ для человека начинающего изучать Turbo с++

Нужны задачи для тренировки - C++
Киньте задачки на классы......а то в самоучителе, по которому я учу Сишку....приведены задачки, касающиеся только математики.....сами...

Нужны простые задачи для тренировки - C++
Добрый день всем:) Наверное подобных тем как я тут сотни,но всё же. Начал изучать С++(так как необходим для универа)в дальнейшем...

1272
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
15.07.2010, 08:41 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
попробуй эту. в принципе, ничего сложного. можно пофантазировать, и "улучшить" (усложнить) задание...
8
Миниатюры
Задачи для тренировки и лучшего понимания  
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
15.07.2010, 10:08  [ТС] #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
nikkka, Хм. На ООП и наследование... Ну что ж. Можно и попробовать. Виртуальное наследование:

virtual public/private/protected?
Время выхода стрелка на рубеж через псевдослучайные числа?
Так. pokerplayer обязательно использует функцию класса Person, не переопределенную в данном классе?

Добавлено через 39 минут
Для начала так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Person_classes.h
#ifndef PERSON_CLASSES_H_
#define PERSON_CLASSES_H_
#include <string>
class Person
{
    std::string name;
    std::string surname;
public:
    Person(){}
    Person(std::string name_, std::string surname_):name(name_), surname(surname_){}
            ~Person(){}
    void SetInfo(std::string name_, std::string surname_);
    void Show() const;
    Person(const Person&Ob):name(Ob.name), surname(Ob.surname){}
    Person& operator =(Person&Ob);
};
#endif
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//Person_functions.cpp
#include "Person_classes.h"
#include <iostream>
#include <string>
void Person::Show() const
{
    std::cout<<"Name: "<< name <<'\n';
    std::cout<<"Surname: "<< surname <<'\n';
    std::cout<<std::endl;
}
void Person::SetInfo(std::string name_, std::string surname_)
{
    name=name_;
    surname=surname_;
}
Person& Person::operator =(Person &Ob)
{
    if(this==&Ob)
        return *this;
    name=Ob.name;
    surname=Ob.surname;
    return *this;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Person.cpp
#include "Person_classes.h"
#include <iostream>
#include <string>
int main()
{
    Person Temp;
    std::string name;
    std::string surname;
    std::cout<<"Enter name: "; std::getline(std::cin, name);
    std::cout<<"Enter surname: "; std::getline(std::cin, surname);
    Temp.SetInfo(name, surname);
    Temp.Show();
    return 0;
}
Добавлено через 17 минут
Остальное вечером. Уезжать над
5
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
15.07.2010, 15:20 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Написал по первому абзацу классы Person Gunslinger
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
//P_and_G_classes.h - заголовочный файл с классами Person & Gunslinger пока в одном файле
#include <string>
using std::string;
class Person
{
public:
    Person(string name_, string surname_):name(name_),surname(surname_) {};
    Person(){}
    virtual ~Person(){}
    virtual void Show();
    void SetInfo(string name_, string surname_);
    Person& operator=(Person& rhs);
protected:
    string name;
    string surname;
};
 
//------------------------------------------------
 
 
class Gunslinger : virtual public Person
{
public:
    Gunslinger(){}
    Gunslinger(string name_, string surname_,int trunks_):
      trunks(trunks_),
      Person(name_ , surname_) {}
 
    virtual void Show();
    double Draw(){return 0;} // временно
    void SetInfo(string name_, string surname_,int trunks_);
    Gunslinger& operator=(Gunslinger& rhs);
protected:
    int trunks;
};
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
#ifndef _h_
#define _h_
//P_and_G_functions.cpp - файл реализации функций Person & Gunslinger
#include <iostream>
#include "P_and_G_classes.h"
using std::cout;
using std::endl;
void  Person::Show() 
{
    cout<<"Name : "<<name<<endl;
    cout<<"Surname : "<<surname<<endl;
}
 
Person& Person::operator =(Person& rhs)
{
    if(this==&rhs)
        return *this;
    SetInfo(rhs.name , rhs.surname);
    return *this;
}
 
void Person::SetInfo(string name_, string surname_)
    {
        name=name_;
        surname=surname_;
    }
 
void Gunslinger::SetInfo(string name_, string surname_,int trunks_)
    {   
        Person::SetInfo(name_,surname_);
        trunks=trunks_;
    }
 
void Gunslinger::Show()
{
    Person::Show();
    cout<<"Time to Line : "<< Draw()<<endl;
    cout<<"Trunks : "<<trunks<<endl;
}
 
Gunslinger& Gunslinger::operator=(Gunslinger& rhs)
{
    if(this==&rhs)
        return *this;
    SetInfo(rhs.name, rhs.surname, rhs.trunks);
    return *this;
}
 
#endif
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
#include "P_and_G_classes.h" //проверка функциональности классов
#include <iostream>
int main()
{
Person per1;
Person per2;
per2.SetInfo("Max","Payne");
per1=per2;
per1.Show();
Person* pPer;
int choice;
std::cout<<"Enter (1)Person,(2)Gunslinger : ";
std::cin>>choice;
switch(choice)
{
case 1:
    pPer=new Person("Good","Person");
    break;
case 2:
    pPer=new Gunslinger("Bad","Dude",2);
    break;
}
pPer->Show();
delete pPer;
return 0;
}
Как можно в типе double представить время, типа целая часть часы а дробная минуты или как?
И еще Cdraw() должна возвращать случайную карту или следующую по порядку ?
5
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
15.07.2010, 15:30 #5
Цитата Сообщение от [Freeman
;858352]типа целая часть часы а дробная минуты
можно и так, но минут 60, а сотых частей 100...
попробуй сделать так:
time=3.5 - 3 ч. 30 мин.
time=2.333333 - 2 ч. 20 мин.
minin100=(minin60/60)*100

Добавлено через 20 секунд
по другому не представляю..
2
[Freeman]
34 / 34 / 6
Регистрация: 07.06.2010
Сообщений: 118
15.07.2010, 21:29 #6
Вобще не много не корректное задание
2
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.07.2010, 15:26  [ТС] #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Сделал. Но есть пара проблем. А именно.
1) Время выдается все-таки фигово. Но вроде не превышает 24 часов.
2) В
C++
1
2
3
4
else if (n==4)
    {
        Arr=new BadDude("Name", "Surname", 2);
    }
Не читает имя и фамилию. Оставляет пустые строки. В чем трабл понять не могу.

Сам код.
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
//Person_classes.h
#ifndef PERSON_CLASSES_H_
#define PERSON_CLASSES_H_
#include <string>
class Person
{
protected:
    std::string name;
    std::string surname;
public:
    Person(){}
    Person(std::string name_, std::string surname_):name(name_), surname(surname_){}
    virtual~Person(){}
    virtual void SetInfo(std::string name_, std::string surname_);
    virtual void Show();
    Person(const Person&Ob):name(Ob.name), surname(Ob.surname){}
    Person& operator =(Person&Ob);
};
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
class GunLisher:virtual public Person
{
protected:
    int num_of_st;
public:
    GunLisher(){}
    GunLisher(int num_of_st_, std::string name_, std::string surname_):
    Person(name_, surname_), num_of_st(num_of_st_){}
    virtual~GunLisher(){}
    void SetInfo(std::string name_, std::string surname_, int num_of_st_);
    double Draw();
    virtual void Show();
    GunLisher(const GunLisher&Ob);
    GunLisher& operator =(GunLisher&Ob);
};
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
class PokerPlayer:virtual public Person
{
public:
    PokerPlayer(){}
    PokerPlayer(std::string name_, std::string surname_):Person(name_, surname_){}
    virtual ~PokerPlayer(){}
    void SetInfo(std::string name_, std::string surname_);
    int Draw();
    virtual void Show();
};
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
class BadDude:public GunLisher, public PokerPlayer
{
public:
    BadDude(){}
    BadDude(std::string name_, std::string surname_, int num_of_st_):
    GunLisher(num_of_st_, name_, surname_),
        PokerPlayer(name_,surname_){}
    virtual ~BadDude(){}
    double Gdraw();
    int Cdraw();
    virtual void Show();
    void SetInfo(std::string name_, std::string surname_, int num_of_st_);
};
#endif
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
//Person_sunctions.cpp
#include "Person_classes.h"
#include <iostream>
#include <string>
#include <ctime>
void Person::Show()
{
    std::cout<<"Name: "<< name <<'\n';
    std::cout<<"Surname: "<< surname <<'\n';
    std::cout<<std::endl;
}
void Person::SetInfo(std::string name_, std::string surname_)
{
    name=name_;
    surname=surname_;
}
Person& Person::operator =(Person &Ob)
{
    if(this==&Ob)
        return *this;
    name=Ob.name;
    surname=Ob.surname;
    return *this;
}
/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
void GunLisher::Show()
{
    std::cout<<"Name: "<< name <<'\n';
    std::cout<<"Surname: "<< surname <<'\n';
    std::cout<<"Time: "<< Draw() <<'\n';
    std::cout<<"Num_of_st: "<< num_of_st <<'\n';
}
void GunLisher::SetInfo(std::string name_, std::string surname_, int num_of_st_)
{
    name=name_;
    surname=surname_;
    num_of_st=num_of_st_;
}
GunLisher& GunLisher::operator =(GunLisher &Ob)
{
    if(this==&Ob)
        return *this;
    name=Ob.name;
    surname=Ob.surname;
    num_of_st=Ob.num_of_st;
    return *this;
}
GunLisher::GunLisher(const GunLisher &Ob)
{
    name=Ob.name;
    surname=Ob.surname;
    num_of_st=Ob.num_of_st;
}
double GunLisher::Draw()
{
    double hours=0;
    srand(time(NULL));
    hours=1+rand()%(23);
    hours*=60;
    int minutes=0;
    minutes=1+rand()%(59);
    double min=hours+minutes;
    double times=0;
    times=min/60;
    return times;
}
/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
int PokerPlayer::Draw()
{
    int card=0;
    srand(time(NULL));
    card=1+rand()%(52);
    return card;
}
void PokerPlayer::Show() 
{
    Person::Show();
    std::cout<<"Number of card: "<< Draw() <<'\n';
}
void PokerPlayer::SetInfo(std::string name_, std::string surname_)
{
    name=name_;
    surname=surname_;
}
/////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
int BadDude::Cdraw()
{
    int card=0;
    srand(time(NULL));
    card=1+rand()%(52);
    return card;
}
double BadDude::Gdraw()
{
    double hours=0;
    srand(time(NULL));
    hours=1+rand()%(23);
    hours*=60;
    int minutes=0;
    minutes=1+rand()%(59);
    double min=hours+minutes;
    double times=0;
    times=min/60;
    return times;
}
void BadDude::Show()
{
    Person::Show();
    std::cout<<"Num_of_st: "<< num_of_st <<'\n';
    std::cout<<"Time: "<< Gdraw() <<'\n';
    std::cout<<"Card: "<< Cdraw() <<'\n';
}
void BadDude::SetInfo(std::string name_, std::string surname_, int num_of_st_)
{
    name=name_;
    surname=surname_;
    num_of_st=num_of_st_;
}
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
//Person.cpp
#include "Person_classes.h"
#include <iostream>
#include <string>
int main()
{
    Person*Arr;
    int n=0;
    std::cout<<"Enter n: 1 for work with Person class, 2 for work with GunLisher, "
        <<"3 for work with PokerPlayer, 4 for work with BadDude\n "; std::cin>>n;
    if(n==1)
    {
        Arr=new Person("Name", "Surname");
    }
    else if (n==2)
    {
        Arr=new GunLisher(2, "Name", "Surname");
    }
    else if (n==3)
    {
        Arr=new PokerPlayer("Name", "Surname");
    }
    else if (n==4)
    {
        Arr=new BadDude("Name", "Surname", 2);
    }
    else
    {
        std::cout<<"Error\n";
        exit(1);
    }
    Arr->Show();
    return 0;
}
Добавлено через 11 часов 18 минут
Может кто-нибудь объяснить в чем проблема вышла? + Дать еще задание) Посложнее что-ль...
4
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
16.07.2010, 17:17 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Lavroff, на STL?
3
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.07.2010, 17:18  [ТС] #9
nikkka, На С++ вцелом. Потоки, стл, классы и пр.
2
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 18:11 #10
Lavroff, почему файлы содержащие объявление и реализацию класса Person имеют различное название?
2
Lаmer
7 / 7 / 4
Регистрация: 24.03.2010
Сообщений: 25
16.07.2010, 18:15 #11
Я делал так:

1) Открываешь блокнот (ну или emacs);
2) Ищешь по ключевым словам темы, где народ просит написать за них код;
3) Копипастишь в файл, пока не наберешь 10-15 тем;
4) Пишешь программы;
5) Опционально: когда программа написана - сверяешь, для интереса.

Рекомендую.
2
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.07.2010, 18:17  [ТС] #12
CyBOSSeR, Це так важно? Не знаю. Переименовать проблем не возникнет, а по смыслу логичнее. В одном классы, в другом реализация функций. Заметил там печатная ошибка. person_functions.cpp.
0
Lаmer
7 / 7 / 4
Регистрация: 24.03.2010
Сообщений: 25
16.07.2010, 18:19 #13
Цитата Сообщение от Lavroff Посмотреть сообщение
CyBOSSeR, Це так важно? Не знаю. Переименовать проблем не возникнет, а по смыслу логичнее. В одном классы, в другом реализация функций

Не по теме:

Дурной тон, тащемта.

1
ForEveR
В астрале
Эксперт С++
7979 / 4738 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
16.07.2010, 18:21  [ТС] #14
Lаmer, А в чем это дурной тон? Какое название логичнее: Person_classes.cpp или Person_functions.cpp если учитывать, что там описаны функции классов содержащихся в Person_classes.h?
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
16.07.2010, 18:22 #15
Lavroff, если ты один работаешь над проектом - нет. Но это противоречит общепринятым соглашениям, и видя название person_functions, очень сложно догадаться что там реализация класса, а не некие вспомогательные функции для работы с классом. Просто назови person.h и person.cpp.
Цитата Сообщение от Lavroff Посмотреть сообщение
В одном классы, в другом реализация функций
Реализация методов класса не является частью класса?
1
16.07.2010, 18:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.07.2010, 18:22
Привет! Вот еще темы с ответами:

Какая база требуется для понимания C++? - C++
Доброго времени суток! Возникло желание научиться работать в Си, но одолели смутные сомнения. Каюсь, ничего сложнее Pascal ABC в школьные...

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

Киньте задачки для тренировки - C++
Хочу порешать задачки по C++......нужны либо книжки с задачками - либо ваши примеры.....желательно (если книжки) - чтобы там и решение...

Дайте задания для тренировки - C++
День добрый. Учу C++. Я уверен, что тут есть люди которые с ним отлично знаком и работают. Можете ли вы накидать заданий, возможно из...


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

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

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