Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
231112.docx
Скачиваний:
16
Добавлен:
01.03.2025
Размер:
2 Мб
Скачать
☆

Int main()

{

using namespace std;

travel_time day1 = {5, 45}; // 5 hrs, 45 min

travel_time day2 = {4, 55}; // 4 hrs, 55 min

travel_time trip = sum(day1, day2);

cout << "Two-day total: ";

show_time(trip);

travel_time day3= {4, 32};

cout << "Three-day total: ";

show_time(sum(trip, day3));

getchar();

return 0;

}

travel_time sum(travel_time t1, travel_time t2)

{

travel_time total;

total.mins = (t1.mins + t2.mins) % Mins_per_hr;

total.hours = t1.hours + t2.hours +

(t1.mins + t2.mins) / Mins_per_hr;

return total;

}

void show_time(travel_time t)

{

using namespace std;

cout << t.hours << " hours, "

<< t.mins << " minutes\n";

}

Здесь travel_time действует как имя обычного стандартного типа; его можно использовать для объявления переменных, типа возврата функций и типа аргументов функций. Поскольку такие переменные, как total и t1, являются структурами travel_time, вы можете применять к ним операцию точки, чтобы обращаться к членам. Обратите внимание, что поскольку функция sum() возвращает структуру travel_time, ее можно использовать в качестве аргумента функции show_time (). А так как функции C++ по умолчанию передают аргументы по значению, то вызов show_time (sum (trip, day3) ) сначала вычислит sum(trip, day3), чтобы получить ее возвращаемое значение. Затем это значение (а не сама функция) передается show_time().

Функции и объекты класса string

Хотя строки в стиле С и класс string служат в основном одним и тем же целям, класс string больше похож на структуру, чем на массив. Например, структуру можно присвоить другой структуре, а объект — другому объекту. Структуру можно передавать как единую сущность в функцию, и точно так же можно передавать объект. Когда требуется несколько строк, можно объявить одномерный массив объектов string вместо двумерного массива char.

В листинге представлен короткий пример, в котором объявляется массив объектов string и передается функции, отображающей их содержимое.

#include <iostream>

#include <string>

using namespace std;

const int SIZE = 5;

void display(const string sa[], int n);

Int main()

{

string list[SIZE]; // an array holding 5 string object

cout << "Enter your " << SIZE << " favorite astronomical sights:\n";

for (int i = 0; i < SIZE; i++)

{

cout << i + 1 << ": ";

getline(cin,list[i]);

}

cout << "Your list:\n";

display(list, SIZE);

// cin.get();

return 0;

}

void display(const string sa[], int n)

{

for (int i = 0; i < n; i++)

cout << i + 1 << ": " << sa[i] << endl;

}

В этом примере важно отметить, что если не принимать во внимание функцию getline (), то эта программа воспринимает объекты string как любой встроенный тип, подобный int. Если вам нужен массив string, вы просто используете обычный формат объявления массива:

string list[SIZE]; // массив из 5 объектов string

Каждый элемент массива list — это объект string, и он может использоваться следующим образом:

getline(cin,list[i]);

Аналогично, формальный аргумент sa является указателем на объект string, поэтому sa [ i ] — объект типа string, и он может использоваться соответственно:

cout << i + 1 << " : " << sa[i] << endl;

8я задача:

Напишите программу, которая запрашивает у пользователя 10 результатов игры, сохраняя их в массиве. Программа должна отобразить все результаты в одной строке и сообщить их среднее значение. Реализуйте ввод, отображение и вычисление среднего в трех отдельных функциях, работающих с массивами.

9я задача:

Ввести 2 числа, найти НОД и НОК.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]