С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 06.06.2011
Сообщений: 49

Прокомментировать v3.0

15.06.2011, 17:38. Показов 1282. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Цели
Написать программу на языке c++, моделирующую иерархию классов ры-
баков (Fisher), добывающих рыбу. Все рыбаки имеют имена. Улов y (yield)
определяется удачей l 2 (0; 1) (luck) и типом рыбака.
Типы рыбаков:
Любитель (Amateur) Улов прямо пропорционален удаче:
y = A • l.
Максимальный улов для любого любителя A = 20 кг.
Профессионал (Profi) Улов зависит от удачи линейно:
y = A • (0.5 + l).
Максимальный улов для любого профессионала A = 50 кг.
Браконьер (Poacher) Первоначальный улов не зависит от удачи и равен
максимальному. Но с вероятностью
p = 1 − 0.4 • l
весь улов конфискует рыбнадзор.Максимальный улов для любого брако-
ньера A = 400 кг.
В программе завести массив (или другой стандартный контейнер по выбо-
ру) указателей на рыбаков, заполнить указателями на конкретных рыбаков
разных типов. Каждый рыбак выходит на рыбалку 5 раз. Для каждого ры-
бака и каждой рыбалки сгенерировать случайно значение удачи.Подсчитать
и вывести для каждого рыбака улов за каждую рыбалку и суммарный улов.
Программа не должна завершаться аварийно, приводить к утечке или
порче памяти. Объектылюбого из созданных классов должныпозволять кор-
ректную передачу в произвольную функцию по значению, а также возврат
по значению из функции.
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
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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#include <iostream>
#include <cstring>
#include <stdlib.h>
#include <time.h>
 
using namespace std;
 
class Fisher
{
    public:
    Fisher(char *nname):name(new char[strlen(nname)+1]){strcpy(name,nname);};   //Конструктор
    Fisher(Fisher &n)  :name(new char[strlen(n.name)+1]){strcpy(name,n.name);}; //Конструктор копирования
    virtual ~Fisher(){delete[] name;name=0;};                                   //Деструктор
    virtual void fishing()= 0;
    virtual void print(ostream &os) const = 0;                                  //Вывод улова
    void namex() {cout<<name;}                                                  //Вывод имени
  
 
 
 
 
 
 
 
 int luck();                                                                 //Генератор удачи
    private:
    char *name;                                                                 //Имя
};
 
void Fisher::print(ostream &os) const
{
  os << name << ' ';
}
 
int Fisher::luck()
{
    srand(time(NULL));
    return rand()%2;
}
 
ostream& operator<<( ostream &os, const Fisher &rhs)
{
  rhs.print(os);
  return os;
}
 
/***************************** Amateur *****************************/
class Amateur : public Fisher
{
public:
Amateur(char *nname);
virtual void print(ostream &os) const;
void fishing();
 
private:
double y;
static int A;
};
 
void Amateur::print(ostream &os) const
{
  Fisher::print(os);
  os << "caught " << y <<" kg\n";
}
 
Amateur::Amateur(char *nname):Fisher( nname ),y(0){}
int Amateur::A=20;
void Amateur::fishing()
{
    double q;
    q=A*luck();
    y+=q;
    cout<<q<<"kg\n";
 
}
 
/***************************** Profi *****************************/
class Profi : public Fisher
{
public:
Profi(char *nname);
virtual void print(ostream &os) const;
void fishing();
 
private:
double y;
static int A;
};
 
void Profi::print(ostream &os) const
{
  Fisher::print(os);
  os << "caught " << y <<" kg\n";
}
 
Profi::Profi(char *nname):Fisher( nname ),y(0){}
int Profi::A=50;
void Profi::fishing()
{
    double q;
    q=A*(0.5*luck());
    y+=q;;
    cout<<q<<"kg\n";
 
}
 
/***************************** Poacher *****************************/
class Poacher : public Fisher
{
public:
Poacher(char *nname);
virtual void print(ostream &os) const;
void fishing();
 
private:
double y;
static int A;
};
 
void Poacher::print(ostream &os) const
{
  Fisher::print(os);
  os << "caught " << y <<" kg\n";
}
 
Poacher::Poacher(char *nname):Fisher( nname ),y(0){}
int Poacher::A=400;
void Poacher::fishing()
{
    double q,p;
    p=1-0.4*luck();
 
    if(p!=1){q=A;}
    else q=0;
 
    y+=q;
    cout<<q<<"kg\n";
 
}
 
 
 
/*****************************   Main  *****************************/
main()
{
  int i,j;
  Fisher *x[3];
  x[0]= new Amateur ("Petr");
  x[1]= new Profi   ("Ivan");
  x[2]= new Poacher ("Vasil");
 
for(i=0;i<5;i++)                                    //Вывод ежедневного улова
{
 cout<<"\nDay "<<i+1<<" :\n\n";
 
for(j=0;j<3;j++)
 {x[j]->namex();cout<<" caught ";x[j]->fishing();}
 
}
 
cout<<"\nSummary:\n\n";                               //Вывод общего улова за 5 дней
for(j=0;j<3;j++)cout<<*x[j];
 
}

Результат:
Day 1 :
Petr caught 20 kg
Ivan caught 25 kg
Vasil kaught 400kg

Day 2 :
Petr caught 20 kg
Ivan caught 25 kg
Vasil kaught 400kg

Day 3 :
Petr caught 20 kg
Ivan caught 25 kg
Vasil kaught 400kg

Day 4 :
Petr caught 20 kg
Ivan caught 25 kg
Vasil kaught 400kg

Day 5 :
Petr caught 20 kg
Ivan caught 25 kg
Vasil kaught 400kg

Summary :
Petr caught 100 kg
Ivan caught 125 kg
Vasil kaught 2000kg
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2011, 17:38
Ответы с готовыми решениями:

Прокомментировать
Задача такая. Найти произведение в строках между первым и последним нулевыми элементами #include&lt;iostream.h&gt; ...

Прокомментировать
Написать программу на языке C + +, моделирующую поведение строителя пира- миды (Mason) путём создания соответствующего класса. Каждый...

Прокомментировать!
Ребята помогите прокомментировать код плиз! :) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; #include...

1
 Аватар для pito211
187 / 174 / 18
Регистрация: 22.03.2010
Сообщений: 612
15.06.2011, 19:02
Цитата Сообщение от Профан Посмотреть сообщение
Fisher(char *nname):name(new char[strlen(nname)+1]){strcpy(name,nname);}; //Конструктор
char* в с++ нахрен не нужен. Остальное не осилил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2011, 19:02
Помогаю со студенческими работами здесь

Прокомментировать
Пркоментируйте 2 строки...пожалуйста Procedure Dob; var n:integer; begin clrscr; Writeln('Skilku Zapusiv hochete dobavutu? ');...

прокомментировать
Задание: Написать на ассемблере IBM PC программу простейшего планировщика, обеспечивающего параллельное выполнение нескольких процессов. ...

Прокомментировать код
есть код программы, нужно объяснить её программный код. и исправить ошибки.помогите пожалуйста. int dwsp(double* x, double* y); int...

Прокомментировать код
Объясните пожалуйста подробнее операторы и циклы в 2 задачах, в них много непонятного кода и действий с кодом. 1 задача : const ...

Прокомментировать код
Здравствуйте. Большая просьба, разъясните пожалуйста 3 задачи в паскале поподробнее, чтобы разобраться в назначениях циклов и операторов: ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru