Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДАШКИНЫ ЛАБЫ.docx
Скачиваний:
7
Добавлен:
16.08.2019
Размер:
769.84 Кб
Скачать

Int main()

{

// Вендовая консоль плохо дружит с юникодом, а

// не в юникоде выводить и русские символы, и знаки фунта

// очень проблематично. Поэтому используется '#, который,

// кстати, является тоже официальным символом.

locale::global(locale("rus"));

int a;

int b;

int c;

while(true)

{

cout << "Введите количество фунтов: ";

cin >> a;

cout << "Заедите количество шиллингов: ";

cin >> b;

cout << "Введите количество пенсов: ";

cin >> c;

if (a > 0 && b > 0 && c > 0)

break;

cout << "Что-то введено неправильно.\n\n";

}

double sum = a + b/20.0 + c/(20.0 * 12.0);

int pounds = static_cast<int>(sum);

int penny = static_cast<int>((sum - pounds) * 100 + 0.5);

cout << "Десятичных футов #" << pounds << "." << penny << "\n";

return 0;

}

№1.11

По умолчанию форматирование вывода производится по правому краю поля. Можно изменить форматирование текста на левостороннее путем использования манипулятора setiosflags(ios::left) (не беспокойтесь о смысле новой формы записи, встретившейся в манипуляторе). Используйте этот манипулятор вместе с setw() для того, чтобы произвести следующий вывод:

Фамилия Имя Адрес Город

Петров Василий Кленовая 16 Санкт-Петербург

Иванов Сергей Осиновая 3 Находка

Сидоров Иван Березовая 21 Калининград

#include "stdio.h"

#include <iostream>

#include <iomanip>

using namespace std;

Int main( )

{

locale::global(locale("rus"));

const int COLUMNS = 4;

const char* headers[COLUMNS] = {"Фамилия", "Имя", "Адрес", "Город"};

const char* rows[][COLUMNS] =

{

{"Петров", "Василий", "Кленовая 16", "Санкт-Петербург"},

{"Иванов", "Сергей", "Осиновая 3", "Находка"},

{"Сидоров", "Иван", "Березовая 21", "Калининград"},

{0, 0, 0, 0}

};

const int COLUMN_SIZE = 15;

cout << setiosflags(ios::left);

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

cout << setw(COLUMN_SIZE) << headers[i];

cout << "\n\n";

for (int i = 0; rows[i][0] != 0; i++)

{

for (int c = 0; c < COLUMNS; c++)

cout << setw(COLUMN_SIZE) << rows[i][c];

cout << "\n";

}

cout << "\n\n\n";

return 0;

}

№1.12

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

фунтов, шиллингов и пенсов. Пример взаимодействия программы с пользователем может выглядеть так:

Введите число десятичных фунтов: 3.51

Эквивалентная сумма в старой форме записи: £3.10.2

Обратите внимание на то, что если вам придется присваивать вещественное значение (например, 12,34) переменной целого типа, то его дробная часть (0,34) будет потеряна, а целая переменная получит значение 12. Чтобы избежать предупреждения со стороны компилятора, используйте явное преобразование типов. Можно использовать операторы, подобные приведенным ниже:

float decpounds: // сумма в десятичных фунтах

int pounds: // сумма в старых фунтах

float decfrac: // десятичная дробная часть

pounds = static_cast<int>(decpounds): //отбрасывание

//дробной части decfrac = decpounds - pounds; //прибавление дробной части

Чтобы получить число шиллингов, следует умножить на 20 значение переменной decfrac. Аналогичным образом можно получить число пенсов.

#include "stdio.h"

#include <iostream>

using namespace std;

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