Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/1010: Рейтинг темы: голосов - 1010, средняя оценка - 4.92
 Аватар для ZarinZomanu4
10 / 10 / 0
Регистрация: 27.05.2013
Сообщений: 92

Решение всех задач из учебника Стивена Праты

23.03.2015, 12:20. Показов 217288. Ответов 271
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!Решил выложить свои решения задач книги С. Прата. Код ни в коем случае не претендует на звание эталонного, если есть замечания с радостью выслушаю и приму к сведению.

Глава 4

Задания




Задача №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
#include <iostream>
 
int main ()
{ 
    using namespace std;
    const int ArSize = 20;
    char Fname[ArSize];
    char Lname[ArSize];
    int age;
    char bit;
    //enum gradeW {A,B,C};
    cout<<"what is your first name "<<endl;
    cin.getline(Fname,ArSize);
    cout<<"what is your last name "<<endl;
    cin.getline(Lname,ArSize);
    cout<<"what letter grade do you deserve(A,B,C) "<<endl;
    cin>>bit;
    cout<<"what is your age "<<endl;
    cin>> age ;
    cin.get();
    cout<<"Name: "<<Lname<<" "<<Fname<<endl;
    cout<<"Age: "<<age<<endl;
    switch (bit)
        {case 'A':
            cout<<"Grade B "<<endl;
            break;
        case 'B':
            cout<<"Grade C"<<endl;
            break;
        case 'C':
            cout<<"Grade D"<<endl;
            break;
        default: cout<<"wrong"<<endl;}
    cin.get();
    return 0;
  }

Задача №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
#include <iostream>
#include <string>
int main ()
{ 
    using namespace std;
    string Fname;
    string Lname;
    int age;
    char bit;
    cout<<"what is your first name "<<endl;
    getline(cin,Fname);
    cout<<"what is your last name "<<endl;
    getline(cin,Lname);
    cout<<"what letter grade do you deserve(A,B,C) "<<endl;
    cin>>bit;
    cout<<"what is your age "<<endl;
    cin>> age ;
    cin.get();
    cout<<"Name: "<<Lname<<" "<<Fname<<endl;
    cout<<"Age: "<<age<<endl;
    switch (bit)
        {case 'A':
            cout<<"Grade B "<<endl;
            break;
        case 'B':
            cout<<"Grade C"<<endl;
            break;
        case 'C':
            cout<<"Grade D"<<endl;
            break;
        default: cout<<"dsfsfsfsfsd"<<endl;}
    cin.get();
    return 0;
  }

Задача №3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
//#include <string>
int main ()
{ 
    using namespace std;
    const int ArSize = 20;
    char Fname[ArSize];
    char Lname[ArSize];
    cout<<"Enter your first name "<<endl;
    cin.getline(Fname,ArSize);
    cout<<"Enter your last name "<<endl;
    cin.getline(Lname,ArSize);
    cout<<"Name: "<<Lname<<",  "<<Fname<<endl;
    cin.get();
    return 0;
  }

Задача №5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
struct CandyBar
    {
        char Name [20];
        double netto;
        int Ccal;
    };
int main ()
{ 
    using namespace std;
    CandyBar snack={"Mocha Much",2.3,350};
    cout<<"Struct )))) "<<snack.Name<<snack.netto<<"     "<<snack.Ccal<<endl;
    cin.get();
    return 0;
  }

Задача №6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
struct CandyBar
    {
        char Name [20];
        double netto;
        int Ccal;
    };
int main ()
{ 
    using namespace std;
    CandyBar snack[3]={
        {"Mocha Much",2.3,350},
        {"sfdsfsdf",2.45,435},
        {"bnderlogi", 2.12 , 777}};
 
    cout<<"Struct  "<<snack[2].Name<<"    "<<snack[2].netto<<"   "<<snack[0].Ccal<<endl;
    cin.get();
    return 0;
  }

Задача №7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
struct Pizza
    {
        char Name [20];
        double netto;
        int Ccal;
    };
int main ()
{   using namespace std;
    Pizza Peper;
    cout<<"Enter Name:"<<endl;
    cin.getline (Peper.Name,20);
    cout<<"Enter diametr:"<<endl;
    cin>>Peper.netto;
    cout<<"Enter ves:"<<endl;
    cin>>Peper.Ccal;
    cout<<"Pizza: "<<Peper.Name<<endl<<"Diametr: "<<Peper.netto<<endl<<"Ves: "<<Peper.Ccal<<endl;
    cin.get();
    cin.get();
    return 0;
  }

Задача №8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
struct Pizza
{
    std :: string Name ;
    double netto;
    int Ccal;
    };
int main ()
{   using namespace std;
    Pizza *pz =new Pizza;
    cout<<"Enter diametr:"<<endl;
    cin>>(*pz).netto;
    cout<<"Enter Name:"<<endl;
    cin>>(*pz).Name ;
    cout<<"Enter ves:"<<endl;
    cin>>(*pz).Ccal;
    cout<<"Pizza: "<<(*pz).Name<<endl;
    cout<<"Diametr: "<<(*pz).netto<<endl<<"Ves: "<<(*pz).Ccal<<endl;
    system ("pause");
    delete pz;
    return 0;
  }

Задача №9
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
#include <iostream>
#include <string>
struct CandyBar
    {
        std::string Name  ;
        double netto;
        int Ccal;
    };
void main ()
{ 
    using namespace std;
    CandyBar *bar= new CandyBar[3];
    bar[0].Name="Mocha Much";
    bar[0].netto=2.3;
    bar[0].Ccal=350;
    bar[1].Name="sfdsfsdf";
    bar[1].netto=2.45;
    bar[1].Ccal=435;
    bar[2].Name="bnderlogi";
    bar[2].netto=2.12;
    bar[2].Ccal=777;
    cout<<"Struct  "<<bar[0].Name<<"    "<<bar[0].netto<<"   "<<bar[0].Ccal<<endl;
    system("pause");
    delete bar;
          }

Задача №10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
int main ()
{ 
    using namespace std;
    int bar[3];
    cout<<"Vvedite rezyltat 1 "<<endl;
    cin>>bar[0];
    cout<<"Vvedite rezyltat 2 "<<endl;
    cin>>bar[1];
    cout<<"Vvedite rezyltat 3 "<<endl;
    cin>>bar[2];
    int Sr=(bar[0]+bar[1]+bar[2])/3;
    cout<<"Rezyltat  "<<bar[0]<<"    "<<bar[1]<<"   "<<bar[2]<<"  Srednee "<<Sr<<endl;
    system("pause");
}


Задачи из глав с 4 о 10, решенные sourcerer
9
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.03.2015, 12:20
Ответы с готовыми решениями:

Нюансы синтаксиса: классы, список инициализации (неясная строка из учебника Стивена Праты)
Вот сам класс #ifndef TABTENN0_H_ #define TABTENN0_H_ #include &lt;string&gt; using std :: string; class...

читаю главу 10 книги стивена праты - "объекты и классы". автор во всех примерах поступает следуйщим образм: объявляет класс в одном фаиле...
...а реализует функции в другом - в том котором создаёт и ползуется объектом. у меня вопросс: а не лучше ли (практичнее, или возможно ли...

Неожиданный консольный вывод (упражнения 3 к главе 6 книги Стивена Праты)
:-| Вообщем имеется код (решение 3 упражнения к главе 6 книги Прата): #include &lt;iostream&gt; #include&lt;cstdlib&gt; ...

271
1 / 1 / 0
Регистрация: 24.11.2020
Сообщений: 13
10.12.2020, 10:45
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от GyJIeBeP Посмотреть сообщение
Текст нельзя копировать и разбирать примеры
Зачем его копировать, если он есть в приложении к книге? В результате первого же запроса есть архив с примерами Examples.rar, в котором тексты программ из книги в cpp файлах
0
1 / 1 / 0
Регистрация: 24.11.2020
Сообщений: 13
10.12.2020, 11:00
Вот мой вариант решения задач с 3 по 18, если кому интересно. Заметил что некоторые мои решения значительно отличаются от представленных тут. В основном из за разницы в понимании самой задачи, а не принципа её реализации.
Вложения
Тип файла: zip Решение задач книги Стивена Прата C++ от Dutch.zip (207.0 Кб, 125 просмотров)
1
11 / 6 / 3
Регистрация: 20.03.2019
Сообщений: 76
28.02.2021, 18:04
Цитата Сообщение от Armatus Посмотреть сообщение
ostream_iterator<long, char> out(cout, " ");
Зачем нужна эта строчка кода?
0
0 / 0 / 0
Регистрация: 30.08.2021
Сообщений: 2
31.08.2021, 05:04
Всем доброго времени суток. Помогите пожалуйста. Написал код к 9 главе 4 задание. Вроде всё правильно, если всё внести в один файл то всё работает. Но когда разделяю по разным файлам то выдеёт ошибку "ссылка на неразрешенный внешний символ". Уже всё перепробывал, но не работает. Почёму main не видит определение функций?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// Sales.h
#ifndef SALES_H_INCLUDED
#define SALES_H_INCLUDED
 
 
 
namespace SALES {
    const int QUARTERS = 4;
 
    struct Sales {
        double sales[QUARTERS];
        double average;
        double max;
        double min;
    };
 
    void setSales(Sales& s, const double ar[], int n);
    void setSales(Sales& s);
    void showSales(const Sales& s);
    void showSales(const Sales& s);
}
 
#endif SALES_H_INCLUDED
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// main.cpp
#include <iostream>
#include "Sales.h"
 
 
using std::cin;
using std::cout;
using std::endl;
 
 
int main() {
 
    SALES::Sales sal_1;
    SALES::Sales sal_2;
 
    SALES::setSales(sal_1);
    SALES::setSales(sal_2, sal_1.sales, SALES::QUARTERS);
    SALES::showSales(sal_1);
    SALES::showSales(sal_2);
 
    return 0;
}
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
//Sales.cpp
#include <iostream>
#include "Sales.h"
 
using namespace SALES;
using std::cin;
using std::cout;
using std::endl;
 
void setSales(Sales& s, const double ar[], int n) {
 
    //MIN Sales
    double temp = ar[0];
    for (int i = 1; i < QUARTERS; i++) {
        if (temp > ar[i]) {
            temp = ar[i];
        }
    }
 
    //0
    s.sales[0] = temp;
    for (int i = 1; i < QUARTERS; i++) {
        s.sales[i] = 0;
    }
 
    //AVERAGE
    temp = 0;
    for (int i = 0; i < QUARTERS; i++) {
        temp += ar[i];
    }
    s.average = temp / QUARTERS;
 
    //MAX
    temp = 0;
    for (int i = 0; i < QUARTERS; i++) {
        if (temp < ar[i]) {
            temp = ar[i];
        }
    }
    s.max = temp;
 
    //MIN
    temp = ar[0];
    for (int i = 1; i < QUARTERS; i++) {
        if (temp > ar[i]) {
            temp = ar[i];
        }
    }
    s.min = temp;
}
 
void setSales(Sales& s) {
 
    double temp = 0;
 
    //ENTER CIN
    for (int i = 0; i < QUARTERS; i++) {
        cout << "Enter sale " << i + 1 << ": ";
        cin >> s.sales[i];
 
        temp += s.sales[i];
    }
 
    //AVERAGE
    s.average = temp / QUARTERS;
 
    //MAX
    temp = 0;
    for (int i = 0; i < QUARTERS; i++) {
        if (temp < s.sales[i]) {
            temp = s.sales[i];
        }
    }
    s.max = temp;
 
    //MIN
    temp = s.sales[0];
    for (int i = 1; i < QUARTERS; i++) {
        if (temp > s.sales[i]) {
            temp = s.sales[i];
        }
    }
    s.min = temp;
 
 
    cout << endl
        << endl;
}
 
void showSales(const Sales& s) {
 
    cout << "Sales: ";
    for (int i = 0; i < QUARTERS - 1; i++) {
        cout << s.sales[i] << ", ";
    }
    cout << s.sales[QUARTERS - 1]
        << endl;
    cout << "Average: " << s.average
        << endl;
    cout << "Max: " << s.max
        << endl;
    cout << "Min: " << s.min
        << endl
        << endl;
}
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,308
31.08.2021, 05:23
Цитата Сообщение от Oxi420 Посмотреть сообщение
Вроде всё правильно, если всё внести в один файл то всё работает.
Вы нас обманываете. Ничего подобного, и в одном файле это не будет компилироваться (линковаться) с теми же ошибками.

Цитата Сообщение от Oxi420 Посмотреть сообщение
Почёму main не видит определение функций?
Потому что их нет.

Предоставленные вами определения функций setSales и т.п. определяют функции глобального пространства имен, а вызывать вы пытаетесь функции из пространства имен SALES. Разумеется, будет ошибка линкера, ибо функции из namespace SALES объявлены, но нигде не определены.

При определении ранее объявленных функций из namespace SALES вы должны либо указывать полное имя

C++
1
2
3
4
5
void SALES::setSales(Sales& s, const double ar[], int n) {
  ...
}
 
...
либо помещать определения внутрь пространства имен

C++
1
2
3
4
5
6
7
8
namespace SALES {
 
void SALES::setSales(Sales& s, const double ar[], int n) {
  ...
}
 
...
}
Ваше using namespace SALES; в файле Sales.cpp не оказывает никакого влияния на определения функций. Это не заставит компилятор считать, что ваши определения - это определения для namespace SALES.
1
0 / 0 / 0
Регистрация: 30.08.2021
Сообщений: 2
31.08.2021, 05:35
Спасибо БОЛЬШОЕ! Заработало. Теперь понял, буду знать.
0
 Аватар для Аноним92
75 / 49 / 30
Регистрация: 14.10.2019
Сообщений: 147
14.03.2022, 07:37
Глава 14. Упражнение 1.
Wine.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
#include <string>
#include <valarray>
 
typedef std::valarray<int> ArrayInt;
typedef std::pair<ArrayInt, ArrayInt> PairArray;
 
using namespace std;
 
class Wine : private string, private PairArray
{
private:
  int years;
public:
  // Инициализация label значением l, количество лет - у, 
  // годы урожая - уr[], количество бутылок - bot [ ] 
  Wine(const char * l, int у, const int yr[], const int bot[]);
  // Инициализация label значением l, количество лет - у, 
  // создаются объекты массива размером у 
  Wine(const char * l, int у);
  void GetBottles();
  string& Label();
  int sum() const;
  void Show() const;
};


Wine.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
#include <string>
#include <iostream>
using namespace std;
#include "Wine.h"
 
// Инициализация label значением l, количество лет - у, 
// годы урожая - уr[], количество бутылок - bot [ ] 
Wine::Wine(const char * l, int y, const int yr[], const int bot[]) : string(l)
{
  years = y;
  ArrayInt tmp_years(yr, y);
  ArrayInt tmp_bottles(bot, y);
  PairArray::operator=(PairArray(tmp_years, tmp_bottles));
}
// Инициализация label значением l, количество лет - у, 
// создаются объекты массива размером у 
Wine::Wine(const char * l, int y) : string(l)
{
  years = y;
  ArrayInt tmp_years(y);
  ArrayInt tmp_bottles(y);
  PairArray::operator=(PairArray(tmp_years, tmp_bottles));
}
 
void Wine::GetBottles()
{
  cout << "Enter " << string(*this) << " data for " << years << " year(s):" << endl;
  ArrayInt tmp_years(years);
  ArrayInt tmp_bottles(years);
  for (int i = 0; i < years; i++)
  {
    cout << "Enter year: ";
    cin >> tmp_years[i];
    cout << "Enter bottles for that year: ";
    cin >> tmp_bottles[i];
  }
  PairArray::operator=(PairArray(tmp_years, tmp_bottles));
}
 
string& Wine::Label()
{
  return (string&)*this;
}
int Wine::sum() const
{
  int summa = 0;
  for (int i = 0; i < years; i++)
  {
    summa += PairArray(*this).second[i];
  }
  return summa;
}
void Wine::Show() const
{
  cout << "Wine:\t" << string(*this) << endl;
  cout << '\t' << "Year" << '\t' << "Bottles" << endl;
  for (int i = 0; i < years; i++)
    cout << '\t' << PairArray(*this).first[i] << '\t' << PairArray(*this).second[i] << endl;
}


main.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
#include "golf.h"
#include <iostream>
#include <string>
 
using namespace std;
int main()
{
  using std::cin;
  using std::cout;
  using std::endl;
  cout << "Enter name of wine: "; // ввод названия вина 
  char lab[50];
  cin.getline(lab, 50);
  cout << "Enter number of years: "; // ввод количества годов сбора винограда 
  int yrs;
  cin >> yrs;
  Wine holding(lab, yrs); // сохранение названия, лет, 
              // создание массивов из yrs элементов 
  holding.GetBottles(); // предложение ввести год и количество бутылок 
  holding.Show(); // вывод содержимого объекта 
  const int YRS = 3;
  int y[YRS] = { 1993, 1995, 1998 };
  int b[YRS] = { 48, 60, 72 };
  // Создание нового объекта, инициализация 
  // с использованием данных из массивов у и b 
  Wine more("Gushing Grape Red", YRS, y, b);
  more.Show();
  cout << "Total bottles for " << more.Label() // используется метод Label() 
    << ": " << more.sum() << endl; // используется метод sum() 
  cout << "Bye\n";
 
  return 0;
}


Подскажите, пожалуйста, почему GetBottles работает, если считывать во временные целочисленные массивы и использовать операцию присваивания, но не работает, если считывать непосредственно в унаследованный объект.

Работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void Wine::GetBottles()
{
  cout << "Enter " << string(*this) << " data for " << years << " year(s):" << endl;
  ArrayInt tmp_years(years);
  ArrayInt tmp_bottles(years);
  for (int i = 0; i < years; i++)
  {
    cout << "Enter year: ";
    cin >> tmp_years[i];
    cout << "Enter bottles for that year: ";
    cin >> tmp_bottles[i];
  }
  PairArray::operator=(PairArray(tmp_years, tmp_bottles));
}
Не работает:
C++
1
2
3
4
5
6
7
8
9
10
11
void Wine::GetBottles()
{
  cout << "Enter " << string(*this) << " data for " << years << " year(s):" << endl;
  for (int i = 0; i < years; i++)
  {
    cout << "Enter year: ";
    cin >> PairArray(*this).first[i];
    cout << "Enter bottles for that year: ";
    cin >> PairArray(*this).second[i];
  }
}
0
1 / 1 / 0
Регистрация: 02.01.2021
Сообщений: 3
03.04.2022, 19:10
Мне нужньі. Еще вопросьі?
0
0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 16
01.06.2022, 22:54
sourcerer, доброго времени суток, 11 глава 2 упражнение. Автор просит "Оставить открытый интерфейс без изменений, (те же открытые методы с теми же аргументами), но изменить закрытую часть, включая некоторые из закрытых методов и их реализации." Т.е. по факту насколько я понимаю у многих людей в данной ветке форума задача решена некорректно т.к. изменять методы magval() нельзя angval(). Как вы решили мне тоже сразу пришло это в голову, но вот только это противоречит условиям задачи. Допустим мы изменяем закрытые методы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
    double Vector::set_mag()
    {
        double mag = sqrt(x * x + y * y);
        return mag;
    }
    double Vector::set_ang()
    {
        double ang;
        if (x == 0.0 && y == 0.0)
            return ang = 0.0;
        else
            return ang = atan2(y, x);
    }
как нам правильно в дальнейшем записать
C++
1
2
        double magval() const {return set_mag();} // сообщает модуль
        double angval() const {return set_ang();} // сообщает угол
в заголовочном файле чтобы не было ошибки, я уже по разному пробовал. Возможно мой ход мыслей не верный и есть другое правильное решение, прошу помощи.
0
 Аватар для Аноним92
75 / 49 / 30
Регистрация: 14.10.2019
Сообщений: 147
04.06.2022, 05:49
Gronfindel,

Методы set_mag и set_ang можно удалить совсем, так как членов mag и ang в классе больше нет.

Методы set_x и set_y теперь будут принимать модуль и угол как параметры. Соответственно, в конструкторе и в методе reset изменится их вызов.

C++
1
2
3
4
5
6
7
8
9
10
       // yстанавливает х по полярным координатам 
    void Vector::set_x(double mag, double ang)
    {
        x = mag * cos(ang);
    }
    // yстанавливает y по полярным координатам 
    void Vector::set_y(double mag, double ang)
    {
        y = mag * sin(ang);
    }
Методы magval и angval теперь вычисляют модуль и угол через x и y, так как членов mag и ang в классе больше нет.
C++
1
2
3
4
5
6
7
8
9
10
11
12
       // Вычисляет модуль из х и у 
    double Vector::magval() const
    {
        return sqrt(x * x + y * y);
    }
    double Vector::angval() const
    {
        if (x == 0.0 && y == 0.0)
            return 0.0;
        else
            return atan2(y, x);
    }
В методе operator<< вместо mag и ang теперь используются вызовы magval и angval.

Таким образом, открытый интерфейс остается без изменений.
0
0 / 0 / 0
Регистрация: 16.05.2022
Сообщений: 16
04.06.2022, 09:42
Ну в таком случае мы ведь изменяем методы magval() и angval() а они открытые, разве изменение реализации этих методов не противоречит условиям задачи?
0
 Аватар для Аноним92
75 / 49 / 30
Регистрация: 14.10.2019
Сообщений: 147
04.06.2022, 10:04
Gronfindel, мы изменяем тело открытых методов, но не изменяем интерфейс открытых методов. То есть пользователи класса смогут использовать все открытые методы класса так же, как прежде. Скорее всего, в задании речь об этом.
1
0 / 0 / 0
Регистрация: 25.08.2022
Сообщений: 4
06.09.2022, 23:24
Мне вот пригодились
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
07.09.2022, 01:44
Походу этотому Прату пора на свалку.

Добавлено через 2 минуты
Цитата Сообщение от Аноним92 Посмотреть сообщение
Gronfindel, мы изменяем тело открытых методов, но не изменяем интерфейс открытых методов. То есть пользователи класса смогут использовать все открытые методы класса так же, как прежде. Скорее всего, в задании речь об этом.
Скорее всего , это тоже самое что :
"расскжаите что вы думаете о мотивах Раскольникова"
"так то так"
"а вот и нет, он думал совсем по другому, ты дебил, садись два"
1
 Аватар для Аноним92
75 / 49 / 30
Регистрация: 14.10.2019
Сообщений: 147
07.09.2022, 06:45
SmallEvil, Вот точная формулировка задания:

Вы должны оставить открытый интерфейс без изменений (те же открытые методы с теми же аргументами), но изменить закрытую часть, включая некоторые из закрытых методов и их реализации. Протестируйте модифицированную версию с помощью программы из листинга 11.15, которая должна остаться неизменной, поскольку открытый интерфейс класса Vector не менялся.

Я думаю, что под "те же открытые методы с теми же аргументами" понимается, что интерфейс открытых методов должен остаться неизменным. А реализацию менять можно, потому что она скрыта от пользователя и в интерфейс класса как бы не входит.

Возможно, неудачный перевод с английского.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
07.09.2022, 09:00
Цитата Сообщение от Аноним92 Посмотреть сообщение
Я думаю, что под "те же открытые методы с теми же аргументами" понимается, что интерфейс открытых методов должен остаться неизменным. А реализацию менять можно, потому что она скрыта от пользователя и в интерфейс класса как бы не входит.
Зачем все это ? Зачем вдалбывать то что должно пониматься ?
Перед тем как решать подобные задачи. Нужно удостоверится что читатель правильно понял что такое интерфейс.
А ведь это не понятие ЯП. Это обобщение. И может расматриватся под разными улами.
На что я и пытался указать.
А перевод, это еще один камень на пути изучения по зарубежным специализированным книгам.
И вижу что большинство форумчан не оценивают наводящие вопросы, грусть, печаль.
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 4
15.02.2023, 18:02
У кого-нибудь есть адекватное решение 5 задачи из гл.12?
0
1 / 1 / 0
Регистрация: 24.11.2020
Сообщений: 13
15.02.2023, 18:30
Посмотрите в моём варианте решения. За адекватность не ручаюсь. А сейчас уже и не помню что там как.
0
0 / 0 / 0
Регистрация: 29.07.2020
Сообщений: 4
15.02.2023, 20:19
Dutch,
Там нет решения (у вас только оригинал из книги лежит в этой папке).
В шестой задаче (где тоже надо определить кол-во клиентов за час, которое приводит к среднему времени ожидания, равному одной минуте) тоже нет ответа на этот вопрос.
0
 Аватар для SmallEvil
4086 / 2975 / 813
Регистрация: 29.06.2020
Сообщений: 11,000
15.02.2023, 23:17
Цитата Сообщение от Kirkiri Посмотреть сообщение
У кого-нибудь есть адекватное решение 5 задачи из гл.12?
Можете озвучить эту задачу тут ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2023, 23:17

Найти причины и способы исправления ошибок в коде (упражнения по книге Стивена Праты)
В общем так . Пробую учить плюсы по книжке Прата . Пробую недавно , и потому полный нуб. От того и нумбский вопрос . В книжке написано что...

Задача из лекций по книге Стивена Праты
Глава 6 задача 5 Напишите программу, которая предлагает пользователю ввести прописную букву. Воспользуйтесь вложенными циклами, чтобы...

Решение задач из учебника Томшина
Я являюсь студентом 1-го курса, и нам дали задачи по c# которые необходимо решить. Задачи взяты из учебника Томшина , который предназначен...

Понятен материал учебника, но не получается самостоятельное решение задач
Здравствуйте. Читаю книжку Дейтелов, переписываю код, который дан в учебнике, потом читаю пояснения к строкам и в общем-то всё понимаю,...

Запишите в файл 2 название команды, количество решенных задач и общее времени, потраченное на решение всех задач
Подскажите как доделать задачу. В файле 1 хранятся данные о названиях команды, номере решенной задачи, времени, потраченном на решение....


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

Или воспользуйтесь поиском по форуму:
240
Ответ Создать тему
Новые блоги и статьи
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот. Ларри Уингет
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru