Задача 60

// Вычисление площади треугольника по двум
// сторонам и величине угла между ними
#include
#include
#include "math.h" // sin и константа М_Р1 - число "ПИ"
void main()
float a,b; // длины сторон
float u; // величина угла, выраженная в градусах
float s; // площадь треугольника
printf("ХпВычисление площади треугольника\п");
printf("Введите в одной строке длины сторон ");
printf("(см) -> ");
scanf("%f%f", &а, &b);
printf("Введите величину угла между сторонами ");
printf("(град.) -> ");
scanf("%f", &u);
/* s=a*h/2, где а - основание, h - высота.
h - может быть вычислена по формуле h=b*sin(u).
Аргумент функции sin должен быть выражен в радианах.
1 рад. = 180/pi, где pi - число "ПИ"). */ s = a*b*sin(u*M_PI/180)/2;
printf("Площадь треугольника: %6.2f kb.cm",s);
printf("\п\пДля завершения нажмите "); getch();

Задача 61

// Вычисление сопротивления электрической цепи,
// состоящей из двух параллельно соединенных элементов.
#include
#include
void main()
{
float rl,r2; // сопротивление элементов цепи
float г; // суммарное сопротивление цепи
printf("ХпВычисление сопротивления электрической цепи\п")
printf("при параллельном соединении элементов\п");
printf("Введите исходные данные:\п");
printf("Величина первого сопротивления (Ом) -> ");
scanf("%f",&rl);
printf("Величина второго сопротивления (Ом) -> ") ;
scanf("%f",&r2);
r=rl*r2/(rl+r2);
printf("Сопротивление цепи: %6.2f Ом",г);
printf("ХпДля завершения нажмите "); getch();

Задача 65

// Вычисление стоимости поездки на дачу и обратно
#include
#include
void main()
float rast; // расстояние до дачи
float potr; // потребление бензина на 100 км. пути
float cena; // цена одного литра бензина
float suinm; // стоимость поездки на дачу и обратно
printf("ХпСтоимость поездки на дачу и обратно\п");
printf("Расстояние до дачи (км) -> ");
scanf("%f",srast);
printf("Расход бензина (литров на 100 км.) -> ");
scanf("%f",Spotr);
printf("Цена литра бензина (руб.) -> ");
scanf("%f",Scena);
suram = 2 * potr/100 * rast * cena;
printf("Поездка на дачу и обратно обойдется");
printf("в %6.2f руб.",summ);
printf("\п\пДля завершения нажмите "); getch();

Задача 66

// Скорость бега
#include
#include void main()
float s; float t; float v; int min; int sek; float ts;
// дистанция
// время
// скорость
// минут
// секунд
// время в секундах
printf("Вычисление скорости бега\п");
printf("Введите длину дистанции (метров) -> ");
scanf("%f", &s);
printf("Введите время (минут, секунд)-> ");
scanf{"%?", st);
min = t;
sek = (t - min) * 100;
ts = min * 60 + sek;
v = (s /1000) / (ts / 3600);
printf("Дистанция: %4.0f м\п", s);
printf ("Время: %i мин %i сек = %4.0f сек\п", min, \
sek, ts);
printf("Вы бежали со скоростью %2.2f км/час\п", v) ;
printf("\пДля завершения нажмите "); getch();

Задача 68

¦// Вычисление площади поверхности цилиндра
#include
#include
#include "raath.h" // константа М_Р1 - число "ПИ"
void main ()
{
float r; // радиус основания цилиндра
float h; // высота цилиндра
float s; // площадь поверхности цилиндра
printf("ХпВычисление площади поверхности цилиндра\п");
printf("Введите исходные данные:\п");
printf("радиус основания цилиндра (см) ->");
scanf("%f", &r);
printf("высота цилиндра (см) ->");
scanf("%f", &h);
s = 2*M_PI*r*r +2*M_PI*r*h;
printf("Площадь поверхности цилиндра %6.2f кв.см\п", s);
printf ("ХпДля завершения наж!.а<1те ") ; getch ();

Задача 70

// Пересчет расстояния из верст в километры #include #include
82
C/C++ в задачах и примерах
void main () {
float v; // расстояние в верстах
float к; // расстояние в километрах
printf("ХпПересчет расстояния из верст в километры\п");
printf("Введите расстояние в верстах ->") ;
scanf("%f", &v);
k = v* 1.0668;
printf("%6.2f версты - это %6.2f км\п", v,k);
printf("ХпДля завершения нажмите ") ;
getch();

Задача 72

// Вычисление дохода по вкладу ttinclude #include void main()
float summ; int srok; float stavka; float dohod;
// сумма вклада
// срок вклада
// процентная ставка
// доход по вкладу
printf ("ХпВьгчисление дохода по вкладуХп");
printf("Введите исходные данные:\п");
printf("Величина вклада (руб.) -> ");
scanf("%f", ssuram);
printf("Срок вклада (дней) -> ");
scanf("%i", Ssrok);
printf("Процентная ставка (годовых) -> ");
scanf("%f", Sstavka);
dohod = summ * stavka/365/100 * srok; // 365 - кол-во
// дней в году summ = summ + dohod;
printf ("-----------------------------------\n") ;
printf ("Доход: %9.2f рубДп", dohod);
printf("Сумма по окончании срока вклада: \ %9.2f руб.\n",summ);
printf("\пДля завершения нажмите "); getch();

Задача 73

// Преобразование величины, выраженной в минутах, //в значение, выраженное в часах и минутах #include #include void main()
int min; // интервал в минутах int h; // количество часов int m; // количество минут
printf("Введите временной интервал (в минутах) -> ");
scanf("%i",Smin);
h = (int)min / 60;
m = min % 60;
printf("%i мин. - это %i 4ac.%i мин.\п", min, h, m);
printf("\пДля завершения нажмите "); getch();

Задача 74

// Преобразование числа в денежный формат #include #include void main()
float f; // дробное число
int r; // целая часть числа (рубли)
int k; // дробная часть числа (копейки)
printf("ХпПреобразование числа в денежный формат\п");
printf("Введите дробное число -> "); scanf("%f",&f);
г = (int)f;
к = f * 100 - r*100;
printf("%6.2f руб. - это %i руб. %i коп.\п", f, r, k) ;
printf("\пДля завершения нажмите "); getch();

Задача 77

// Вычисление частного #include #include void main ()
float a,b,c; // делимое, делитель и частное
printf("ХпВычисление частногоХп");
printf("Введите в одной строке делимое и делитель, ");
printf("затем нажмите ");
printf("-> ");
scanf("%f%f", &a, &b);
if (b != 0}
с = a / b;
printf("частное от деления %5.2f на %5.2f ", a, b);
printf("равно %5.2f", c);
else {
printf("Ошибка! Делитель не должен быть равен"); printf("нулю!\п");
printf("ХпДля завершения нажмите "); getch();

Задача 78

// Вычисление площади кольца #include tinclude void main() {
float rl,r2; // радиус кольца и отверстия
float s; // площадь кольца
printf("ХпВведите исходные данные:\п"); printf("радиус кольца (см) -> "); scanf("%f",&rl);
printf("радиус отверстия (см) -> "); scanf("%f",&r2); if (rl > r2) {
s = 2 * 3.14 * (rl - r2) ;
printf("ХпПлощадь кольца %6.2f кв.см\п", s); }
else {
printf("ХпОшибка! Радиус отверстия не может быть"); printf("больше радиуса кольца.\п"); }
printf("\пДля завершения нажмите "); getch();

Задача 79

// Перевод времени из минут и секунд в секунды
#include
#include
void main()
(
float t; // время в минутах и секундах, например 1.2!
int ts; // время в секундах
int min; // число минут
int sek; // число секунд
88
C/C++ в задачах и примерах
printf("\п* Решение квадратного уравнения *\п");
printf("Введите в одной строке значения коэффициентов");
printf(" и нажмите ");
printf("-> ");
scanf("%f%f%f", &a, Sb, &c); // ввод коэффициентов
d = b*b - 4*a*c; // дискриминант
if (d < 0)
printf("Уравнение не имеет решения\п"); else {
xl = (-b + sqrt (d) ) /(2*a) ;
x2 = (-b - sqrt(d))/(2*a);
printf("Корни уравнения: xl=%3.2f x2=%3.2f\n", xl, x2);
printf("\пДля завершения нажмите "); getch();

Задача 84

// Вычисление стоимости покупки с учетом скидки
#include
#include
void main()
{
float summ; // сумма покупки
printf("ХпВычисление стоимости покупки с учетом скидки\п") printf("Введите стоимость покупки и нажмите "); printf("-> "); scanf("%f", &summ); if (summ < 500)
printf("Скидка не предоставляется.\п"); else {
printf("Вам предоставляется скидка ");
if (summ > 1000) {
printf("5%\n");
summ = 0.97 * summ;
}
else {
printf("3%\n"); summ = 0.97 * summ; printf("Сумма с учетом скидки: %3.2f руб.\п", summ);
printf("\пДля завершения нажмите "); getch();
Проверка знания истории finclude #include void main()
int year; // ответ испытуемого
printf("\nB каком году был основан Санкт-Петербург?\п"); printf("Введите число и нажмите "); printf("-> "); scanf("%i", Syear); if (year == 1703)
printf("Правильно."); else {
printf("Вы ошиблись, ");
printf("Санкт-Петербург бьш основан в ПОЗ году.\п")
printf("\пДля завершения нажмите ") getch (); }

Задача 87

// Проверка знания истории архитектуры
#include
#include
void main()
{
int otv; // номер выбранного варианта ответа
90
C/C++ в задачах и примерах
printf("Архитектор Исаакиевского собора:\п"); printf("l. Доменико ТрезиниХп"); printf("2. Огюст МонферранХп"); printf("3. Карл Pocci-Лп") ;
printf("Введите номер ответа и нажмите "); printf("-> "); scanf("%i", sotv); if (otv = 2)
printf("Правильно."); else {
printf("Вы ошиблись.\п Архитектор Исаакиевского "); printf("собора Огюст Монферран.\n"); }
printf("ХпДля завершения нажмите "); getch();

Задача 89

// Сравнение двух целых чисел
#include
#include
void main ()
{
int a,b; // сравниваемые числа
printf("ХпВведите в одной строке два целых "
printf("числа и нажмите ");
printf("->");
scanf("%i%i", &a, &b);
if (a = b)
printf("Числа равны"); else if (a < b)
printf("%i меньше %i\n", a, b); else printf("%i больше %i\n", a, b);
printf("ХпДля завершения нажмите "); getch();
Часть II. Решения
91

Задача 90

// Проверка умения умножать числа
tinclude
#include
#include // для доступа к srand
#include // для доступа к time
void main()
int ml, m2, p; // сомножители и произведение int otv; // ответ испытуемого time_t t; // текущее время - для инициализации // генератора случайных чисел
srand((unsigned) time(&t));; // инициализация генератора
// случ. чисел
ml = rand() % 9 +1; // остаток от деления rand О на 9
// лежит в диапазоне от 0 до 8 m2 = rand () % 9 +1; р = ml * т2;
printf("Сколько будет %ix%i ?\n", ml, m2); printf("Введите ответ и нажмите "); printf ("-> "); scanf("%i", &otv); if (p = otv)
printf("Правильно."); else
printf("Вы ошиблись.\n%ix%i=%i", ml, m2, p);
printf("ХпДля завершения нажмите "); getch();

Задача 92

// Проверяет на четность введенное с клавиатуры число #include #include void main ()
int n; // введенное пользователем число
. 701
92
C/C++ в задачах и примерах
printf("ХпВведите целое число и нажмите "); printf("-> "); scanf("%i", &n); printf("Число %i "); if (n % 2 == 0)
printf{"четное."); else
printf("нечетное.") ;
printf("\п\пДля завершения нажмите "); getch();

Задача 94

// Вычисление стоимости телефонного разговора с учетом // скидки, предоставляемой по субботам и воскресеньям linclude ttinclu.de void main()
int time; // длительность разговора
int day; // день недели
float summa; // стоимость разговора
printf("ХпВычисление стоимости разговора по"); printf("телефону\п"); printf("Введите исходные данные:\п"); printf("Длительность разговора "); printf("(целое кол-во минут) ->"); scanf("%i",.stime); printf("День недели");
printf(" (1-понедельник,..,7-воскресенье) ->"); scanf("%i", &day);
summa = 2.3 * time; // цена минуты 2.3 руб. if (day == 6 || day = 7) (
printf("Предоставляется скидка 20%\п");
summa = summa * 0.8; ); printf("Стоимость разговора: %3.2f руб.\n",summa);
printf("\пДля завершения нажмите "); getch();

Задача 95

// Контроль веса finclude #include void main() f
float w; // вес
float h; // рост
float opt; // оптимальный вес
float d; // отклонение от оптимального веса
printf("\Введите в одной строке, через пробел,\п");
printf("рост (см) и вес (кг), затем нажмите "
printf("->");
scanf("%f%f", &h, &w);
opt = h - 100;
if (w = opt)
printf("Ваш вес оптимален!"); else
if (w < opt) {
d = opt - w;
printf("Вам надо поправиться на %2.2f кг.\п", d)
else
d = w - opt;
printf("Вам надо похудеть на %2.2f кг.\п", d);
printf("\пДля завершения нажмите "); getch ();

Задача 96

/./ Определение времени года по номеру месяца
#include
#include
void main()
{
int month; // номер месяца
puts("ХпВведите номер месяца (число от 1 до 12)");
printf("-> ");
scanf("%i", Smonth);
if (month < 1 && month > 12)
printf("Число должно быть от 1 до 12"); else if (month >= 3 && month <= 5)
printf("Весна"); else if (month >= 6 && month <= 8)
printf("Лето"); else if (month >= 9 && month <= 11)
printf ("Осень,") ; else printf("Зима");
printf("\п\пДля завершения нажмите "); getch ();

Задача 98

// Дописывает после числа слово "рубль" в правильной форме iinclude ttinclude void main()
int n; // число
int r; // сначала остаток от деления п на 100 (последние // две цифры), затем - на 10 (последняя цифра)
printf("ХпВведите целое число, не больше 999 -> ");
scarif ("%i", Sn) ;
printf ('"ii ", n) ;
// правильная форма слова определяется последней II цифррой, за исключением чисел от 11 до 14 if (n > 100)
г = п % 100; else г = п;
// здесь г - последние две цифры if ( г >= 11 &S г <= 14 )
printf("рублейХп"); else {
г = г % 10;
// здесь г - последняя цифра
if ( г >= 2 && г <= 4 )
printf("рубляХп"); else if (r = 1)
printf("рубльХп"); else printf("рублейХп"); }
printf("ХпДля завершения нажмите "); getch();

Задача 100

// Вычисление даты следующего дня #include #include void main()
int day; int month; int year; int last; int r;
// 1, если текущий день — последний день месяца // если год високосный, то остаток от // деления year на 4 равен нулю
printf("Введите в одной строке (цифрами) printf("сегодняшнюю датуХп"); printf("(число месяц год) -> "); scar.f ("%i%i%i", &day, smonth, Syear) ;
last = 0;
if (month ==2) {
if ((year % 4) != 0 && day == 28) last = 1; if ((year % 4) == 0 && day = 29) last = 1; '}
else if ((month == 4 | | month == 6 I I month = 9 || month == 11)
&& (day == 31)) last = 1;
else if (day = 31) last = 1;
if (last ==1) {
printf("Последний день месяца!\n"); day = 1;
if (month ==12) { month = 1; year++;
printf("С наступающим Новым годом!\п"); }
else month++; }
else day++; printf("Завтра %i %i %i",day,month,year);
printf("\пДля завершения нажмите "); getch();

Задача 101

// Выводит название дня недели #include #include void main()
int nd; // номер дня недели
puts("ХпВведите номер дня недели (1..7"); printf("->"); scanf("%i", Snd) ;
switch (nd) r
1 case 1 puts ( 'Понедельник"); break,
case 2 puts ( 'Вторник" ) ; break,
case 3 puts ( 'Среда") ; break,
case 4 puts ( 'Четверг") ; break,
case 5 puts ( 'Пятница") ; break,
case 6 puts ( 'Суббота"); break,
case 7 puts ( 'Воскресенье") ; break,
97
default: puts("Число должно быть в диапазоне 1..7");
getch();

Задача 102

// Определение стоимости междугородного // телефонного разговора #include finclude void main()
int kod; // код города
float cena; // цена минуты
int dlit; // длительность разговора
float suram; // стоимость разговора
printf("ХпВычисление стоимости разговора по");
printf("телефону.\n");
printf("Введите исходные данные:\n");
printf("Длительность разговора (целое кол-во минут) ->"),
scanf("%i", Sdlit);
puts("Код города");
puts("Владивосток\^432");
puts("MocKBa\t\t095");
puts("MypMaHCK\t815");
puts("CaMapa\t\t846");
printf("->");
scanf("%i", &kod);
printf("Город: ");
switch (kod)
{
case 432: puts("Владивосток"); cena = 2.2; break;
case 95: puts("Москва"); cena = 1; break;
case 815: puts("Мурманск"); cena = 1.2; break;
case 84 6: puts("Самара"); cena = 1.4; break; default: printf("неверно введен код.");
cena = 0; } if (cena != 0} {
summ = cena * dlit;
printf("Цена минуты: %i руб.Хп", cena); printf("Стоимость разговора: %3.2f руб.\п", suram); }
printf("ХпДпя завершения нажмите "); getch ();

Задача 103

//По дате определяет день недели
#include
#include *
void main()
int day,month,year; // день, месяц, год
int c,y; // столетие и год в столетии
int m; // месяц по древнеримскому календарю
int d; // день недели puts("ХпОпределение дня недели по дате");
puts("Введите дату: день месяц год.");
puts("Например, 5 12 2001");
printf("->");
scanf("%i %i %i", Sday, Smonth, &year);
if (month == 1 year—;
I month == 2)
// январь и февраль относятся //к предыдущему году
m = month - 2; // год начинается с марта if (m <= 0) m += 12; II для января и февраля // здесь m - номер месяца по римскому календарю с = year / 100; у = year - с*100;
d = (day+(13*m-l)/5+y+y/4+c/4-2*c+777)%7;
switch (d) {
case 1: puts("Понедельник"); break;
case 2: puts("Вторник"); break;
case 3: puts("Среда"); break;
case 4: puts("Четверг"); break;
case 5: puts("Пятница"); break;
case 6: puts("Суббота"); break;
case 0: puts("Воскресенье"); } printf("\пДля завершения нажмите \n");
getch();

 

Задача 105

// Выводит таблицу квадратов нечетных чисел #include tinclude void main()
int х = 1; // число
int у; // квадрат числа
int i; // счетчик циклов
printf("Таблица квадратов\n");
printf ("----------------\n") ;
printf ("Число\1:Квадрат\n") ;
printf ("----------------\n") ;
for (i - 1; i <= 10; i++)
{
у = х*х;
printf("%3i\t%4i\n", x, у);
х += 2;
}
printf ("----------------\n") ;
printf("\пДля завершения нажмите "); getch(); }

Задача 107

// Вычисляет сумму первых п целых положительных чисел
#include
#include
void main ()
{
int n; // кол-во суммируемых чисел
int summ; // сумма
int i; // счетчик циклов
printf("Вычисление суммы положительных чисел\п");
printf("Введите количество суммируемых чисел -> ");
scanf("%i", &n);
summ = 0;
for (i = 1; i <= n; i++)
summ = summ+i;
printf("Сумма первых %i целых положительных чисел ",п); printf("равна %i", summ);
printf("\п\пДля завершения нажмите "); getch();

Задача 109

// Вычисляет частичную сумму ряда: 1,3,6,9 ... #include #include void main()

{
int e; // член ряда
int n; // кол-во суммируемых членов
int suiran =0; // частичная сумма ряда
int i; // счетчик циклов
printf("Вычисление частичной суммы ряда: ");
printf("1,3,6,9, ...\п");
printf("Введите количество суммируемых членов -> ");
scanf("%i", &n);
е - 1;
for (i = 1; i <= n;
summ += e; e += 2;
}
printf("Сумма первых %i членов ряда равна %i", n, summ);
printf("\пДля завершения нажмите "); getch();

Задача 110

// Вычисление суммы ряда 1+1/2+1/3+ ... #include #include void main()
int n;
// кол-во суммируемых членов ряда
float i; // номер элемента ряда. Если объявить как
// int, то при вычислении 1/i будет выполнено // усечение дробной части
float elem; // значение элемента ряда
float summ =0 ; // сумма элементов ряда
¦
printf("Вычисление частичной суммы ряда"); printf("1+1/2+1/3+..An");
printf("Введите кол-во суммируемых членов ряда\п"); •printf ("-> ") ; scanf("%i",&n); summ = 0; for (i = 1; i <= n; i++) {
elem = 1 / i;
summ += elem;
printf("Сумма первых %i", n);
printf (" членов ряда равна %6.3f",summ);
« printf("\пДля завершения нажмите ");
getch();

Задача 111

// Таблица степеней двойки #inciude #include void main() int n; // показатель степени int x; // значение 2 в степени п
printf("ХпТаблица степеней двойки\п");
х = 1;
for (n = 0; n <= 10; n++)
{
printf("%3i%5i\n", n, x);
x *= 2;
printf("\пДля завершения нажмите ' getch()

Задача 113

// Таблица функции tinclude #include
idefine LB -2.0 // нижняя граница диапазона изменения
// аргумента
Р #define HB 2.0 // верхняя граница диапазона изменения
// аргумента
#define DX 0.5 // приращение аргумента
void main() {
float x,y; // аргумент и значение функции
int n; // кол-во точек int i; // счетчик циклов
п = (НВ - LB)/DX +1;
х = LB;
printf ("
printf(" х |
printf ("-------:
for (i = 1; i<=n; i
\п") ;
у\п") ;
\п") ;
у = -2.4*х*х+5*х-3;
printf("%6.2f ! %6.2f\n" ,x ,y);
x += DX; } printf ("-------------------\n") ;
printf("\пДля завершения нажмите "); getch();

Задача 116

// Среднее арифметическое дробных чисел, вводимых // с клавиатуры #include #include
#define L 5 // количество чисел последовательности
void main() float a; // число
int n; // кол-во введенных чисел
float sum; // сумма введенных чисел
float sred; // среднее арифметическое введенных чисел
printf("ХпОбработка последовательности дробных чисел\п")
printf("После ввода каждого числа нажимайте ");
sum = 0;
for (n = 1; n <= L; n++)
(
printf ("-> ");
scanf("%f", &a);
sum += a;
printf("Введено чисел: %i ", n);
printf("Сумма: %6.2f\n", sum);
sred = sum / L;
printf("Сред, арифметическое: %6.2f\n", sred); printf("\пДля завершения нажмите "); getch();

Задача 117

// Вычисляет среднее арифметическое и определяет
// минимальное и максимальное число последовательности
// дробных чисел, вводимых с клавиатуры
#include
#include
void main()
float a; int n; float sum; float sred; float min; float max; int i;
// очередное число
// количество чисел
// сумма введенных чисел
// среднее арифметическое
// минимальное число последовательности
// максимальное число последовательности
// счетчик циклов
printf("Обработка последовательности дробных чисел.\п")
printf("Введите количество чисел последовательности ->"
scanf("%i", &n);
printf("Введите последовательность.\n");
printf("После ввода каждого числа нажимайте ");
printf("->">;
scanf("%f",&a); // вводим первое число
// последовательности // предположим, что:
min = а; // пусть первое число является минимальным max = а; // пусть первое число является максимальным sum = a;
// введем остальные числа for (i =1; i < n; i++)
printf("->");
scanf("%f", &a);
sum += a;
if (a < min) min = a;
if (a > max) max = a; }
sred = sum / n;
printf("Количество чисел: %i\n", n); printf("Среднее арифметическое: %6.2f\n", sred) printf("Минимальное число: %6.2f\n", min); printf("Максимальное число: %6.2f\n", max);
printf("\пДля завершения нажмите "); getch();

Задача 119

// вычисление среднего арифметического случайных
// последовательностей
#include
#include
#include // для доступа к srand и rand
#include
#define L 10 // длина последовательности #define N 3 // количество последовательностей
void main()
'
int r; // случайное число int sum; // сумма чисел последовательности float sred; // среднее арифметическое int i,j; // счетчики циклов
time t t; // текущее время - для инициализации // генератора случайных чисел
srand((unsigned) time(&t));; // инициализация генератора
// случайных чисел for (i = 1; i <= N; i-
// генерируем последовательность printf("\пСлучайные числа: "); sum =0; //не забыть обнулить ! for (j = 1; j <= L; j
(
r = rand() % 10 +1 ;
printf ("%i ", r) ;
sum += r; }
sred = (float)sum / L; // чтобы не было усечения printf("ХпСред.арифм.: %3.2f\n", sred);
printf("\пДля завершения нажмите "); getch();