*1. Предположим, вы хотите создать таблицу умножения на заданное число.
Напишите программу, которая позволяет пользователю ввести это число,
а затем генерирует таблицу размером 20 строк на 10 столбцов. Первые
строки результата работы программы должны выглядеть примерно сле-
дующим образом:
Введите число: 7
7142128354249566370
77849198105112119126133140
147154161168175182189196203210
*2. Напишите программу, предлагающую пользователю осуществить перевод
температуры из шкалы Цельсия в шкалу Фаренгейта или наоборот, а затем
осуществите преобразование. Используйте в программе переменные веще-
ственного типа. Взаимодействие программы с пользователем может вы-
глядеть следующим образом:
Нажмите 1 для перевода шкалы Цельсия в шкалу Фаренгейта,
2 для перевода шкалы Фаренгейта в шкалу Цельсия: 2
Введите температуру по Фаренгейту: 70
Значение по Цельсию: 21.111111
*3. Операции ввода, такие, как cin, должны уметь преобразовывать последо-
вательность символов в число. Напишите программу, которая позволяет
пользователю ввести шесть цифр, а затем выводит результат типа long на
экране. Каждая цифра должна считываться отдельно при помощи функ-
ции getche(). Вычисление значения переменной производится путем ум-
ножения текущего ее значения на 10 и сложения с последней введенной
цифрой (для того, чтобы из кода символа получить цифру, вычтите из не-
го 48 или '0'). Примером результата работы программы может служить
следующий:
Введите число: 123456
Вы ввели число 123456
*4. Создайте эквивалент калькулятора, выполняющего четыре основных ариф-
метических операции. Программа должна запрашивать ввод пользовате-
лем первого операнда, знака операции и второго операнда. Для хранения
операндов следует использовать переменные вещественного типа. Выбрать
операцию можно при помощи оператора switch. В конце программа долж-
на отображать результат на экране. Результат работы программы с поль-
зователем может выглядеть следующим образом:
Введите первый операнд, операцию и второй операнд: 10 / 3
Результат равен 3.333333
Выполнить еще одну операцию (y/n)? y
Введите первый операнд, операцию и второй операнд: 12 + 100
Результат равен 112
Выполнить еще одну операцию (y/n)? n
5. При помощи цикла for изобразите на экране пирамиду из символов 'X'.
Верхняя часть пирамиды должна выглядеть следующим образом:
х
ххх
ххххх
ххххххх
ххххххххх
Вся пирамида должна быть высотой не 5 линий, как изображено здесь,
а 20 линий. Одним из способов ее построения может служить использова-
ние двух вложенных циклов, из которых внутренний будет заниматься
печатанием символов 'X' и пробелов, а другой осуществлять переход на
одну строку вниз.
6. Измените программу factor, приведенную в этой главе, таким образом,
чтобы она циклически запрашивала ввод пользователем числа и вычисля-
ла его факториал, пока пользователь не введет 0. В этом случае програм-
ма должна завершиться. При необходимости вы можете использовать со-
ответствующие операторы программы factor в цикле do или while.
7. Напишите программу, рассчитывающую сумму денег, которые вы получи-
те при вложении начальной суммы с фиксированной процентной ставкой
дохода через определенное количество лет. Пользователь должен вводить
с клавиатуры начальный вклад, число лет и процентную ставку. Приме-
ром результата работы программы может быть следующий:
Введите начальный вклад: 3000
Введите число лет: 10
Введите процентную ставку: 5.5
Через 10 лет вы получите 5124.43 доллара.
В конце первого года вы получите 3 000 + (3 000*0.055) = 3165 долларов.
В конце следующего года вы получите 3 165 + (3 165*0.055) = 3339.08 дол-
ларов. Подобные вычисления удобно производить с помощью цикла for.
8. Напишите программу, которая циклически будет запрашивать ввод поль-
зователем двух денежных сумм, выраженных в фунтах, шиллингах и пен-
сах (см. упражнения 10 и 12 главы 2). Программа должна складывать
введенные суммы и выводить на экран результат, также выраженный в
фунтах, шиллингах и пенсах. После каждой итерации программа должна
спрашивать пользователя, желает ли он продолжать работу программы.
При этом рекомендуется использовать цикл do. Естественной формой
взаимодействия программы с пользователем была бы следующая:
Введите первую сумму £5 10 6
Введите первую сумму £3 2 6
Всего £8 13 0
Продолжить(y/n) ?
Для того чтобы сложить две суммы, вам необходимо учесть заем одного
шиллинга в том случае, если число пенсов окажется больше 11, и одного
фунта, если число шиллингов окажется больше 19.
9. Представьте, что вы собираетесь пригласить к себе шестерых гостей, но за
вашим столом могут разместиться всего лишь 4 человека Сколькими
способами можно разместить четырех из шести гостей за обеденным сто-
лом? Каждый из шести гостей может разместиться на первом стуле. Каж-
дый из оставшихся пяти гостей может занять второй стул. На третьем
стуле может разместиться один их четырех гостей, и на четвертом — один
из трех оставшихся гостей. Двоим из гостей не достанется ни одного
места. Таким образом, число возможных рассадок гостей за столом равно
6*5*4*3 = 360. Напишите программу, которая будет производить аналогич-
ные вычисления для любого числа гостей и любого числа мест за столом
(при этом предполагается, что число гостей не меньше числа мест). Про-
грамма не должна быть сложной, и вычисление можно организовать с по-
мощью простого цикла for.
10. Модифицируйте программу, описанную в упражнении 7, так, чтобы вме-
сто вычисления текущей суммы на вашем счете она вычисляла, сколько
лет потребуется для того, чтобы при заданной процентной ставке и вели-
чине начального вклада сумма на вашем счете достигла запрашиваемого
вами значения. Для хранения найденного числа лет используйте перемен-
ную целого типа (можно отбросить дробную часть значения, полученного
в результате расчета). Самостоятельно выберите тип цикла, подходящий
для решения задачи.
11. Создайте калькулятор, выполняющий действия над денежными суммами,
выраженными в фунтах, шиллингах и пенсах (см. упражнения 10 и 12
главы 2). Калькулятор должен складывать и вычитать вводимые значе-
ния, а также производить умножение денежной суммы на вещественное
число (операция умножения двух денежных сумм не имеет смысла, по-
скольку квадратных денежных единиц не существует. Деление одной де-
нежной суммы на другую мы тоже не будем рассматривать). Организация
взаимодействия с калькулятором описана в упражнении 4 этой главы.
12. Создайте калькулятор, выполняющий четыре арифметических действия
над дробями (см. упражнение 9 главы 2 и упражнение 4 этой главы).
Формулы, демонстрирующие выполнение арифметических операций над
дробями, приведены ниже.
Сложение: a/b+c/d=(a*d+b*c)/(b*d)
Вычитание: a/b-c/d=(a*d-b*c)/(b*d)
Умножение: a/b*c/d=(a*c)/(b*d)
Деление: a/b/c/d = (a*d)/(b*c)
Пользователь должен сначала ввести первый операнд, затем знак опера-
ции и второй операнд. После вычисления результата программа должна
отобразить его на экране и запросить пользователя о его желании произ-
вести еще одну операцию.
1)
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int j, num;
char ch;
cout << "Vvedite chislo: ";
cin >> num;
for (j=1; j<=200; j++)
{
ch = (j%10) ? ' ' : '\n';
cout << setiosflags (ios::left) << setw (6) << num*j << ch;
}
cout << endl;
system ("pause");
return 0;
}
2)
#include <iostream>
#include "stdafx.h"
#include <iomanip>
using namespace std;
int main()
{
float C, F, k;
cout << "Nazhmite 1 dla perevoda shkaly Zelsiya v shkalu Faringeyta i 2 dlya perevoda shkaly Faringeyta v shkalu Zelsiya" << endl;
cin >> k;
if (k == 1)
{
cout << "Vvedite t po Tselsiu" << endl;
cin >> C;
F = C*1.8+32;
cout << "po Faringeytu " << F << endl;
system ("pause");
}
else
{
cout << "Vvedite t po Faringeytu" << endl;
cin >> F;
C = (F-32)/1.8;
cout << "po Zelsiu " << C << endl;
system ("pause");
}
return 0;
}
4)
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
double op, oper, rez;
char ch;
setlocale (0, "");
do {
cout << "Введите первый операнд, операцию и второй операнд:" << endl;
cin >> op >> ch >> oper;
switch (ch)
{
case '+': rez = op + oper; break;
case '-': rez = op - oper; break;
case '*': rez = op * oper; break;
case '/': rez = op / oper; break;
default:rez = 0;
}
cout << "результат равен" << rez << endl;
cout << "выполнить еще одну операцию? (y,n)";
cin >> ch;
}
while (ch != 'n');
return 0;
}
5)
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <conio.h>
int main()
{
int y = 39, x=1;
do {
int j = y;
int d = x;
do {
cout<<' '; j--;
}
while (j!=0);
do {
cout<<'X'; d--;
}
while (d!=0);
y-=2;
x+=2;
cout<<endl;
}
while (y>0);
_getche();
return 0;
}
6)
// factor.cpp
// подсчет факториала числа с помощью цикла for
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
unsigned int j;
unsigned long fact = 1;
int ch;// тип long для результата
setlocale (0, "");
do
{
fact =1;
cout << "Введите целое число: ";
cin >> j;
for(j; j > 0; j--) // умножение 1 на
fact *= j; // numb, numb-1, ..., 2, 1
cout << "Факториал числа равен " << fact << endl;
cout << "еще раз? (нет - 0, да - 1)" << endl;
cin >> ch;
}
while (ch != 0);
return 0;
}
7)
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
double vklad, let, proz, s, sum;
setlocale (0, "");
cout << "введите начальный вклад: ";
cin >> vklad;
cout << " \nВведите число лет: ";
cin >> let;
cout << "\nВведите процентную ставку: ";
cin >> proz;
sum=vklad;
for (int j = let; j>0; j--)
{
s = sum/100*proz;
sum = s + sum;
}
cout << "Через " << let << " лет вы получите " << sum << " долларов" << endl;
system ("pause");
return 0;
}
8)
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int funt, funt1, shill, shill1, pens, pens1, funt2, shill2, pens2;
char ch;
do {
cout << "Vvedite pervuy summu: " << endl;
cin >> funt1 >> ch >> shill1 >> ch >> pens1;
cout << "Vvedite vtoruy summu: "<< endl;
cin >> funt2 >> ch >> shill2 >> ch >> pens2;
funt = funt1 + funt2;
shill = shill1 + shill2;
if (shill > 19)
{
funt++;
shill = shill - 20;
}
pens = pens1+pens2;
if (pens > 11)
{
shill++;
pens = pens - 12;
}
cout << "Vsego: " << funt << ch << shill << ch << pens << endl;
cout << "Prodolzhyt'? (y/n)" << endl;
cin >> ch;
}
while (ch != 'n');
return 0;
}
9)
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int guest, place, var, variant=1;
cout << "Vvedite kol-vo gostey: ";
cin >> guest;
cout << "\nVvedite kol-vo mest: ";
cin >> place;
var = guest - place;
for (int j = guest; j>var; j--)
variant *= j;
cout << "Chislo variantov: " << variant << endl;
system ("pause");
return 0;
}
10)
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
double vklad, zhel, proz, s, sum, let=0;
setlocale (0, "");
cout << "введите начальный вклад: ";
cin >> vklad;
cout << " \nВведите желаемую сумму: ";
cin >> zhel;
cout << "\nВведите процентную ставку: ";
cin >> proz;
sum = vklad;
do
{
s = sum/100*proz;
sum = s + sum;
let++;
}
while (sum <= zhel);
cout << "Через " << let << " лет вы получите " << sum << " долларов" << endl;
system ("pause");
return 0;
}
11)
#include <iostream>
#include <cstdlib>
int pens_in_ster(int st, int sh, int pn)
{
return (st*240 + sh*12 + pn);
}
void pens_to_ster(int sump, int& st, int& sh, int& pn)
{
st = sump/240;
sh = sump%240/12;
pn = sump%240%12;
}
int main()
{
setlocale(LC_ALL, "");
int st, sh, pn, op, sum, sum1, sum2;
char ch, div;
std::cout << "Введите первый операнд: ";
std::cin >> st >> div >> sh >> div >> pn;
sum1 = pens_in_ster(st, sh, pn);
std::cout << "Введите операцию: ";
std::cin >> ch;
std::cout << "Введите второй операнд: ";
if (ch == '*')
std::cin >> op;
else
{
std::cin >> st >> div >> sh >> div >> pn;
sum2 = pens_in_ster(st, sh, pn);
}
switch (ch)
{
case '+': sum = sum1 + sum2; break;
case '-': sum = abs(sum1 - sum2); break;
case '*': sum = sum1 * op;
}
pens_to_ster(sum, st, sh, pn);
std::cout << st << div << sh << div << pn << std::endl;
return 0;
}
или
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
int funt, shill, pens, pens1, pens2, sumpens, operand;
char ch, dot;
setlocale (0, "");
cout << "Введите первый операнд " << endl;
cin >> funt >> dot >> shill >> dot >> pens;
pens1 = funt*20*12 + shill*12 + pens;
cout << "операцию " << endl;
cin >> ch;
cout << " и второй операнд:" << endl;
if (ch == '*')
cin >> operand;
else
cin >> funt >> dot >> shill >> dot >> pens;
pens2 = funt*20*12 + shill*12 + pens1;
switch (ch)
{
case '+': sumpens = pens+pens2; break;
case '-': sumpens = pens-pens2; break;
case '*': sumpens = pens*operand; break;
}
cout << "Всего: J" << sumpens/(20*12) << dot << sumpens%(20*12)/12 << dot << sumpens%(20*12)%12 << endl;
system ("pause");
return 0;
}
12)
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int a, b, c, d, e, f;
char ch, zn;
do
{
cout << "Vvedite 1-y drob" << endl;
cin >> a >> ch >> b;
cout << "Vvedite znak" << endl;
cin >> zn;
cout << "Vvedite 2-y drob" << endl;
cin >> c >> ch >> d;
switch (zn)
{
case '+': e =a*d + b*c;
f = b*d; break;
case '-': e = a*d - b*c;
f = b*d; break;
case '*': e = a*c;
f = b*d; break;
case '/': e = a*d;
f = b*c; break;
}
cout << e << ch << f << endl;
cout << "esche raz? (y,n)" << endl;
cin >> ch;
}
while (ch != 'n');
return 0;
}
Комментарии
Отправить комментарий