Решил выложить решения задач по учебнику Р.Лафоре.
Кликните здесь для просмотра всего текста
- Основы программирования на С++
- Циклы и ветвления
- Структуры
- Функции
- Объекты и Классы
- Массивы и строки
- Перегрузка операций
- Наследование
- Указатели
- Виртуальные функции
- Многофайловые программы
--Основы программирования--
Упражнение 1.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| //Считая, что кубический фут равен 7.481 галлона, написать программу,
//запрашивающую у пользователя число галлонов и выводящую на экран
//эквивалентный объем в кубических футах.
//////////////////////////////////////////////////////////
#include<iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
const float f=7.481;
int gal;
cout<<"Введите количество галлонов: ";
cin>>gal;
cout<<gal<<" галлонов, эквивалентно "<<gal/f<<" футов.";
system("pause");
return 0;
} |
|
Упражнение 2.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| //Напишите программу, выводящую следующую таблицу:
//1990 135
//1991 7290
//1992 11300
//1993 16200
//////////////////////////////////////////////////////////
#include<iostream>
#include<iomanip>//для iomanip
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
int ch1=135,ch2=7290,ch3=11300,ch4=16200;
cout<<setw(6)<<"1990"<<setw(12)<<ch1<<endl<<setw(6)<<"1991"<<setw(12)<<ch2<<endl<<setw(6)<<"1993"<<setw(12)<<ch3<<endl<<setw(6)<<"1993"<<setw(12)<<ch4;
system("pause");
return 0;
} |
|
Упражнение 3.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| //Напишите программу генерирующую следующий вывод.
//10->20->19
//Используйте представление числа 10 в виде целой константы.
//Для вывода числа 20 воспользуйтесь одной из арифметических операций
//с присваиванием, а для вывода числа 19 - операцией декремента.
//////////////////////////////////////////////////////////
#include<iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
int ch;
cout<<"Введите число: ";
cin>>ch;
cout<<ch<<endl;
ch+=10;
cout<<ch<<endl;
--ch;
cout<<ch;
return 0;
} |
|
Упражнение 4.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
| //Напишите программу, выводящую на экран ваше
//любимое стихотворение. Для разбиения на строчки используйте подходящую управляющую последовательность.
//////////////////////////////////////////////////////////
#include<iostream>
#include<iomanip>
//////////////////////////////////////////////////////////
using namespace std;
int main()
{
cout<<"Ночь, улица, фонарь, аптека"<<endl<<"Бессмысленный и тусклый свет."<<endl<<"Живи еще хоть четверть века - "<<endl<<"Все будет так. Исхода нет."<<endl<<endl<<"Умрешь - начнешь опять сначала"<<endl<<"И повторится все как встарь"<<endl<<"Ночь, ледяная гладь канала"<<endl<<"Аптека, улица, фонарь"<<endl<<endl<<setw(23)<<" "<<"А. Блок";
system("pause");
return 0;
} |
|
Упражнение 5.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| //Напишите программу, которая принимает букву от пользователя,
//а затем выводит нулевое или ненулевое значение в зависимости
//от того, является ли буква строчной или нет.
//////////////////////////////////////////////////////////
#include<iostream>
#include<ctype.h>// для функции islower()
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
char s;
cout<<"Введите букву: ";
cin>>s;
cout<<islower(s);
system("pause");
return 0;
} |
|
Упражнение 6.
Кликните здесь для просмотра всего текста
| 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
| //На биржевых торгах за 1 фунт стерлингов давали $1.487
//за франк - $0.172, за немецкую марку - $0.584, а за
//японскую иену - 0.00955. Напишите программу, которая
//запрашивает денежную сумму в долларах, а затем выводит
//эквивалентные суммы в других валютах.
//////////////////////////////////////////////////////////
#include<iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
const float pound=1.487;
const float franc=0.172;
const float mark=0.584;
const float JPY=0.00955;
int dollar;
cout<<"Введите количество долларов: $";
cin>>dollar;
cout<<"1 фунт = $"<<dollar/pound;
cout<<"\n1 франк = $"<<dollar/franc;
cout<<"\n1 нем. марка = $"<<dollar/mark;
cout<<"\n1 японская иена = $"<<dollar/JPY;
system("pause");
return 0;
} |
|
Упражнение 7.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| //Температуру измеренную в градусах по Цельсию, можно
//перевести в градусы по Фаренгейту, путем умножения на 9/5
//и сложения с числом 32. Напишите программу, запрашивающую
//температуру в градусах по Цельсию и отображающую ее эквивалент
//по Фаринтейту.
//////////////////////////////////////////////////////////
#include<iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
float celsius;
cout<<"Введите значение градусов по шкале Цельсия: ";
cin>>celsius;
cout<<celsius<<" градусов по цельсию = "<<(celsius*9/5)+32<<" градусов по фарингейту.";
system("pause");
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
24
25
26
| //Когда размер величины, выводимой на экран с помощью манипулятора
//setw(), оказывается меньше размера зарезервированного поля, по умолчанию
//незаполненные поля заполняются пробелами. Манипулятор setfill() принимает
//в качестве аргумента один символ, который замещает все пробелы на незаполненных
//позициях поля. Модифицируйте пример WIDTH так, что бы символы, разделяющие пары
//значений из столбцов, были не пробелами, а точками.
//////////////////////////////////////////////////////////
#include<iostream>
#include<iomanip>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
long
pop1=4789426,
pop2=274124,
pop3=9761;
cout<<"Город "<<setw(15)<<setfill('.')<<" Нас "<<endl
<<"Москва "<<setw(14)<<setfill('.')<<pop1<<endl
<<"Киров "<<setw(14)<<setfill('.')<<pop2<<endl
<<"Угрюмовка "<<setw(8)<<setfill('.')<<pop3;
system("pause");
return 0;
} |
|
Упражнение 9.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| //Напишите программу запрашивающую у пользователя
//значение двух дробей, а затем выводящую результат,
// так же записанный в форме дроби.
//////////////////////////////////////////////////////////
#include<iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
int a,b,c,d;
char zn='/';
cout<<"Введите первую дробь ";
cin>>a>>zn>>b;
cout<<"Введите вторую дробь ";
cin>>c>>zn>>d;
cout<<a<<"/"<<b<<" + "<<c<<"/"<<d<<" = "<<((a*d)+(b*c))<<"/"<<(b*d);
system("pause");
return 0;
} |
|
Упражнение 10.
Кликните здесь для просмотра всего текста
| 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
| //Устаревшая денежная система Великобритании состояла из фунтов, шиллингов и пенсов. 1 фунт был
//равен 20 шилингам, 1 шилинг - 12 пенсам....Например, запись 5.2.8 обозначала 5 фунтов, 2 шиллинга и 8
//пенсов(пенс - множественное число от пенни). Современная денежная система состоит только из фунтов
//и пенсов, причём один фунт равен 100 пенсам. Такой фунт называют десятичным. таким образом 5.2.8 = 5.13(если //быть точнее 5.133333). 7.17.9(по старой системе) = 7.89(по новой). Напишите программу которая будет
//преобразовывать сумму записанную в старом формате в новый формат.
//////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
setlocale(LC_ALL,"Russian");
float funt,shil,pens,dfunt,dshil;
const float pr=2.4,fun = 20,pen=12,nfunt=100;
cout<<"Программа преобразования Валюты Великобритании из старого в новый формат:"<<endl;
cout<<"Введите количество фунтов: ";
cin>>funt;
cout<<"Введите количество шилингов: ";
cin>>shil;
cout<<"Введите количество пенсов: ";
cin>>pens;
dfunt=funt*fun*pen+pens;
dshil=shil*pen;
dfunt+=dshil;
dfunt/=nfunt;
dfunt/=pr;
cout<<"Десятичных фунтов: "<<dfunt<<endl;
system("pause");
return(0);
} |
|
Упражнение 11.
Кликните здесь для просмотра всего текста
| 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
| //////////////////////////////////////////////////////////
#include <iostream>
#include <iomanip>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
cout << setiosflags(ios::left)<< setfill('.') << setw(10) << "Фамилия"
<< setfill('.') << setw(10) << "Имя"
<< setfill('.') << setw(15) << "Адрес"
<< setfill('.') << setw(12) << "Город"<<"\n"
<< setfill('.') << setw(10) << "Иванов"
<< setfill('.') << setw(10) << "Иван"
<< setfill('.') << setw(15) << "Московская 23"
<< setfill('.') << setw(12) << "Москва"<<"\n"
<< setfill('.') << setw(10) << "петров"
<< setfill('.') << setw(10) << "Петр"
<< setfill('.') << setw(15) << "Правды 4"
<< setfill('.') << setw(12) << "Киров"<<"\n"
<< setfill('.') << setw(10) << "Сидоров"
<< setfill('.') << setw(10) << "Иван"
<< setfill('.') << setw(15) << "Энгельса 1"
<< setfill('.') << setw(12) << "Саратов"<<"\n";
system("pause");
return 0;
} |
|
Упражнение 12.
Кликните здесь для просмотра всего текста
| 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
| //Напишите программу, выполняющую действия, обратные тем,
//которые описаны в упр.10.
//Ведите число десятичных фунтов: 3.51
//Эквивалентная сумма в старой форме записи: 3.10.2
//////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
float dePound, Pen1, Pen2, temp, temp2, shilling, pens;
cout << "Ведите число десятичных фунтов ";
cin >> dePound;
Pen1 = dePound * 240;
dePound = static_cast<int>(dePound);
Pen2 = dePound * 240;
temp = Pen1 - Pen2;
temp = static_cast<int>(temp);
shilling = temp /12;
shilling = static_cast<int>(shilling);
temp2 = shilling * 12;
pens = temp - temp2;
cout << "Эквивалентная сумма в старой форме записи: " << dePound << "." << shilling << "." << pens << endl;
system("Pause");
return 0;
} |
|
--Циклы и ветвления--
Упражнение 1.
Кликните здесь для просмотра всего текста
| C++ | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| //Предположим вы хотите создать таблицу умножения на заданное число.
//Напишите программу, которая позволяет пользователю ввести это число,
//а затем генерирует таблицу размером 20 строк на 10 столбцов.
//////////////////////////////////////////////////////////
#include <iostream>
using namespace std;
//////////////////////////////////////////////////////////
int main()
{
int s,temp;
cout<<"Введите число: ";
cin>>s;
for(int j=1;j<=200;j++){
temp=s*j;
if(s==temp%10){
cout<<endl;}
cout<<temp;}
system("pause");
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
| //////////////////////////////////////////////////////////
#include<iostream>
using namespace std;
/////////////////////////////////////////////////////////
int main()
{
char var;
go: cout<<"Выбирите нужное действие"<<endl;
cout<<"\n1. Перевод температуры из Цельсия в Фарингейты.";
cout<<"\n2. Перевод температуры из Фаринтета в Цельсия."<<endl;
cout<<"\nДействине номер: ";
cin>>var;
cout<<endl<<endl;
switch (var)
{
case '1':
cout<<"Перевод температуры из Цельсия в Фарингейты."<<endl;
float celsius;
cout<<"\nВведите значение градусов по шкале Цельсия: ";
cin>>celsius;
cout<<endl<<celsius<<" градусов по цельсию = "<<(celsius*9/5)+32<<" градусов по фарингейту.";break;
case '2':
cout<<"Перевод температуры из Фарингета в Цельсия."<<endl;
float faringet;
cout<<"\nВведите значение градусов по шкале Фарингейта: ";
cin>>faringet;
cout<<endl<<faringet<<" градусов по Фарингейту = "<<(faringet-32)/1.8<<" градусов по Цельсия."<<endl;;break;
default: cout<<"Неверный ввод, попробуйте еще раз!"<<endl;goto go;
}
system("pause");
return 0;
} |
|
|