К основному контенту

2 глава. Лафоре Р.

Лафоре Р. Решение задач по третьей главе:
сразу предупреждаю, правильность не гарантирована, но, код работает. по возможности откомментирован. задачи могут быть не все, какие-то опущены по разным причинам.


Задачи

*1. Считая, что кубический фут равен 7.481 галлона, написать программу,
запрашивающую у пользователя число галлонов и выводящую на экран
эквивалентный объем в кубических футах.


*2. Напишите программу, выводящую следующую таблицу:
1990 135
1991 7290
1992 11300
1993 16200
В программе использовать только один оператор с cout.
*3. Напишите программу, генерирующую следующий вывод:
10
20
19
Используйте представление числа 10 в виде целой константы. Для выво-
да числа 20 воспользуйтесь одной из арифметических операций с при-
сваиванием, а для вывода числа 19 — операцией декремента.
4. Напишите программу, выводящую на экран ваше любимое стихотворе-
ние. Для разбиения на строчки используйте подходящую управляющую
последовательность.
5. Библиотечная функция islower() принимает в качестве аргумента один сим-
вол (букву) и возвращает ненулевое целое значение в том случае, если
буква является строчной, и нулевое, если буква является заглавной. Опи-
сание функции хранится в файле CTYPE.H. Напишите программу, которая
принимает букву от пользователя, а затем выводит нулевое или ненуле-
вое значение в зависимости от того, является ли буква строчной или нет.
6. На биржевых торгах за 1 фунт стерлингов давали $1.487, за франк — $0.172,
за немецкую марку — $0.584, а за японскую йену — $0.00955. Напишите
программу, которая запрашивает денежную сумму в долларах, а затем вы-
водит эквивалентные суммы в других валютах.
7. Температуру, измеренную в градусах по Цельсию, можно перевести в гра-
дусы по Фаренгейту путем умножения на 9/5 и сложения с числом 32.
Напишите программу, запрашивающую температуру в градусах по Цель-
сию и отображающую ее эквивалент по Фаренгейту.
8. Когда размер величины, выводимой на экран с помощью манипулятора
setw(), оказывается меньше размера зарезервированного поля, по умолча-
нию незаполненные поля заполняются пробелами. Манипулятор setfill()
принимает в качестве аргумента один символ, который замещает все про-
белы на незаполненных позициях поля. Модифицируйте пример WIDTH
так, чтобы символы, разделяющие пары значений из столбцов, были не
пробелами, а точками, например
Москва 8425785
9. Две дроби а/b и c/d можно сложить следующим образом:
a/b + c/d = (a*d + b*c)/(b*d)
Например, 1/4 + 2/3 = (1*3 + 4*2)/4*3 = 11/12
Напишите программу, запрашивающую у пользователя значения двух
дробей, а затем выводящую результат, также записанный в форме дроби.
Взаимодействие программы с пользователем может выглядеть, например,
следующим образом:
Введите первую дробь: 1/2
Введите вторую дробь: 2/5
Сумма равна 9/10
Вы можете использовать тот факт, что операция извлечения >> может
считывать более одного значения за раз:
cin >> а >> dummychar >> b; 
10. Устаревшая денежная система Великобритании состояла из фунтов, шил-
лингов и пенсов. 1 фунт был равен 20 шиллингам, а 1 шиллинг — 12 пен-
сам. Для записи использовалась система, состоящая из знака £ и трех деся-
тичных значений, разделенных точками. Например, запись £5.2.8 обозна-
чала 5 фунтов, 2 шиллинга и 8 пенсов (пенс — множественное число от
пенни). Современная денежная система, принятая в 50-е годы XX века, со-
стоит только из фунтов и пенсов, причем один фунт равен 100 пенсам.
Такой фунт называют десятичным. Таким образом, в новой денежной
системе указанная сумма будет обозначаться как £5.13 (если быть точнее,
£5.1333333). Напишите программу, которая будет преобразовывать сум-
му, записанную в старом формате (фунты, шиллинги, пенсы), в новый
формат (фунты, пенсы). Форматом взаимодействия программы с пользо-
вателем может являться следующий:
Введите количество фунтов: 7
Заедите количество шиллингов: 17
Введите количество пенсов: 9
Десятичных фунтов: £7.89
В большинстве компиляторов для представления знака £ используется
десятичный код 156. Некоторые компиляторы позволяют скопировать
знак фунта прямо из таблицы символов Windows.
11. По умолчанию форматирование вывода производится по правому краю
поля. Можно изменить форматирование текста на левостороннее путем
использования манипулятора setiosflags(ios::left) (не беспокойтесь о смысле
новой формы записи, встретившейся в манипуляторе). Используйте этот
манипулятор вместе с setw() для того, чтобы произвести следующий вывод:
Фамилия Имя Адрес Город
-------------------------------------------------------------------
Петров Василий Кленовая 16 Санкт-Петербург
Иванов Сергей Осиновая 3 Находка
Сидоров Иван Березовая 21 Калининград

Решения:

1)


#include <iostream>
#include "stdafx.h"
using namespace std;
int main()
{
       double Fut = 7.481;
  double Gall;
  cout << "Vvedite kolichestvo gallonov" << endl;
  cin >> Gall;
  cout << "Kolichestvo kubicheskikh futov = " << Gall/Fut << endl;
  system ("pause");
  return 0;
}

2)




#include <iostream>
#include "stdafx.h"
#include <iomanip>
using namespace std;
int main()
{
      int god = 1990, god1 = 1991, god2 = 1992, god3 = 1993;
 cout << setw(10) << god << setw(10) << "135" << endl
 << setw(10) << god1 << setw(10) << "7290" << endl
 << setw(10) << god2 << setw(10) << "11300" << endl
 << setw(10) << god3 << setw(10) << "16200" << endl;
    system ("pause");
  return 0;
}



3)

#include <iostream>
using namespace std;

int main()
{
int var = 10;

cout << var << endl;    // переменная равна 10
var *= 2;               // ее значение стало 20
cout << var--<< endl;   // выводит и декрементирует перем.
cout << var << endl;    // переменная равна 19

return 0;
}


5)



#include <iostream>
#include "stdafx.h"
using namespace std;
int main()
{
    char c;
    cin >> c;
        cout << islower((char)c)  << endl;
  system ("pause");
    return 0;
}



6)


#include <iostream>
#include "stdafx.h"
#include <iomanip>
using namespace std;
int main()
{
  double dollar;
  double funt = 1.487;
  double frank = 0.172;
  double yena = 0.00955;
  cout << "Vvedite kolichestvo dollarov" << endl;
  cin >> dollar;
  cout << setw(10) << dollar/funt << setw(10) << " Funtov" << endl
       << setw(10) << dollar/frank << setw(10) << " Frankov" << endl
 << setw(10) << dollar/yena << setw(10) << " yen" << endl;
  system ("pause");
    return 0;
}



7)



#include <iostream>
#include "stdafx.h"
#include <iomanip>
using namespace std;
int main()
{
float C, F;
cout << "Vvedite t po Tselsiu" << endl;
 cin >> C;
 F = C*9/5+32;
 cout << F << endl;
  system ("pause");
    return 0;
}

8)

#include "stdafx.h"
#include <iostream>
#include <iomanip> // для использования setw
using namespace std;
int main()
{

long pop1 = 8425785, pop2 = 47, pop3 = 9761;
setlocale (0, "");
cout << setfill('.') << setw(9) << "Город" << setw(12)
<< "Население" << endl
<< setw(9) << "Москва"    << setw(12) << pop1 << endl
<< setw(9) << "Киров"     << setw(12) << pop2 << endl
<< setw(9) << "Угрюмовка" << setw(12) << pop3 << endl;
  system ("pause");
return 0;
}


9)




#include "stdafx.h"
#include <iostream>
#include <iomanip> // для использования setw
using namespace std;
int main()
{
int a, b, c, d, e, f;
char charvar = '/';
cout << "Vvedite 1-y drob" << endl;
cin >> a >> charvar >> b;
cout << "Vvedite 2-y drob" << endl;
cin >> c >> charvar >> d;
e = a*d + b*c;
f = b*d;
cout << e << charvar << f << endl;
  system ("pause");
return 0;                                                     
}



10)



#include "stdafx.h"
#include <iostream>
#include <iomanip> // для использования setw
using namespace std;
int main()
{
float funt, shill, pens, sumstarpens, sumnovpens;
cout << "Vvedite kol-vo funtov" << endl;
cin >> funt;
cout << "Vvedite kol-vo shillingov" << endl;
cin >> shill;
cout << "Vvedite kol-vo pensov" << endl;
cin >> pens;
sumstarpens = pens + shill * 12 + (funt*20) * 12;
sumnovpens = (sumstarpens / 2.4) / 100;
cout << "J" << sumnovpens << endl;
  system ("pause");
return 0;                                                     
}


11)



#include "stdafx.h"
#include <iostream>
#include <iomanip> // для использования setw
using namespace std;
int main()
{

setlocale (0, "");
cout << setiosflags(ios::left) <<  setw(12) << "Фамилия" << setw(12) << "Имя"<< setw(20) << "Адрес"<< setw(12) << "Город" << endl;
cout << setfill('-') << setw(60) << "-" << endl;
cout << setfill(' ') << setw(12) << "Петров" << setw(12) << "Василий" << setw(20) << "Кленовая 16" << setw(12) << "Санкт-Петербург" << endl
<< setw(12) << "Иванов" << setw(12) << "Сергей" << setw(20) << "Осиновая 3" << setw(12) << "Находка" << endl
<< setw(12) << "Сидоров" << setw(12) << "Иван" << setw(20) << "Березовая 21" << setw(12) << "Калининград" << endl;
  system ("pause");
return 0;
}





Комментарии

Популярные сообщения из этого блога

ВОПРОС К ЧИТАТЕЛЯМ

Уважаемые читатели моего блога и просто проходящие мимо! У меня появилась идея заняться созданием уроков по интересующим вас темам. Предпочтительно на C++, но не ограничиваясь ими, я хочу поделиться своими знаниями не только в виде готового кода но и подробными объяснениями что к чему. Прошу вас, если вы имеете идею и хотели бы разобраться в какой-то теме - отпишитесь в комментариях, что было бы вам интересно. Постараюсь помочь. 

7 глава, Лафоре Р

*1. Напишите функцию reversit(), которая переворачивает строку (массив типа char). Используйте цикл for, который меняет местами первый и последний символы, затем следующие и т. д. до предпоследнего. Строка должна пере- даваться в функцию reversit() как аргумент. Напишите программу для выполнения функции reversit(). Программа долж- на принимать строку от пользователя, вызывать функцию reversit(), а за- тем выводить полученный результат. Используйте метод ввода, который позволяет использовать внутренние пробелы. Протестируйте программу на примере фразы «Аргентина манит негра».

6 глава, Лафоре Р

*1. Создайте класс Int, имитирующий стандартный тип int. Единственное поле этого класса должно иметь тип int. Создайте методы, которые будут устанавливать значение поля, равным нулю, инициализировать его целым значением, выводить значение поля на экран и складывать два значения типа Int. Напишите программу, в которой будут созданы три объекта класса Int, два из которых будут инициализированы. Сложите два инициализирован- ных объекта, присвойте результат третьему, а затем отобразите результат на экране.