Как я учился программировать на языке С++ >> Глава 1 >> Примеры решения задач

Главная
Портфолио
Создание Windows приложений
Полезные ссылки
Справочник
Карта сайта
Контакты
"Нет ничего более раздражающего,
 чем хороший пример
"
  Марк Твен.




Рассмотрим некоторые достаточно простые задачи, которые могут решаться в С++ с применением минимальных программных ресурсов. В этих программах создаются и используются константы и переменные, а также применяются операторы ввода-вывода. Задачи предназначены для закрепления изложенного в Главе 1 материала.

Содержание


Главная

Часть I
Процедурное программирование в С++

Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6

Часть II
Объективно- ориентированное  программирование в С++
 
Глава 7
Глава 8
Глава 9
Глава 10
Глава 11
Глава 12






Часть I - Процедурное программирование в С++
Глава 1 - Основы языка С++
Примеры решения задач
Раздел 1 Раздел 2 Раздел 3 Раздел 4 Раздел 5 Раздел 6
Раздел 7 Раздел 8 Раздел 9 Раздел 10 Раздел 11 Раздел 12
Примеры решения задач к Главе 1
Резюме к Главе 1
Контрольные вопросы к Главе 1
Задачи для самостоятельного решения к Главе 1
Примечания






Примеры решения задач к Главе 1

Координаты брошенного под углом тела
Средняя скорость движения мотоциклиста
  • Высота орбиты спутника
Колебания маятника
Комплексные числа
Прыгающий мячик
Умножение на два в степени
Решение простого уравнения
Атака подводной лодки

Высота орбиты спутника


Следующая задача, которую рассмотрим, состоит в определении высоты орбиты спутника h над поверхностью Земли, если известны масса М≈5.96*1024 (кг) и радиус R≈6.37*106 (м) Земли, масса спутника m, период его обращения Т.

Масса спутника в данном случае при расчете высоты орбиты не нужна, а период обращения вводится пользователем. При решении этой задачи воспользуемся тем, что сила гравитационного притяжения между Землей и спутником равна F=GmM/(R+h)2, где G≈6.672*10-11(Нм2/кг2) - универсальная гравитационная постоянная.

С другой стороны, эту же силу по второму закону Ньютона можно записать как F=ma, где а=ω2(R+h) есть центростремительное ускорение, а частота ω связана с периодом Т соотношением ω=2п/Т. Из этих соотношений получаем 4п2m(R+h)/T2=GmM/(R+h)2, что дает h=(GMT2)1/3*/4п2-R. Соответствующий программный код приведен в листинге 1.12


==========>Листинг 1.12 Высота орбиты спутника

#include<iostream>
#include <cmath>
using namespace std;
int main(){
//Гравитационная постоянная:
const double G=6.672E-11;
//Масса Земли:
const double M=5.96E24;
//Радиус Земли:
const double R=6.37E6;
//Число pi:
const double pi=3.1415;
//Период и высота орбиты:
double T,h;
//Ввод периода (в часах):
cout<<"Введите T = ";
cin>>T;
//Перевод часов в секунды:
T=T*3600;
//Определение высоты:
h=pow(G*M*T*T/4/pi/pi,(double)1/3)- R;
//Перевод в километры:
h=h/1000;
cout<<"Высота орбиты спутника h = "<<h<<" km\n";
cout << "Конец задания для самостоятельной работы!" << endl;
    system ("pause");              // ожидаем нажатия кнопки
return 0;
}


==========>Конец Листинга 1.12  Компилированный исполняемый файл листинга 1.12(120Кб, rar)


Результат выполнения программы может выглядеть следующим образом(жирным выделен ввод пользователя)

Введите T = 5.4
Высота орбиты спутника h = 9244.22 km

В программе использована встроенная функция pow() для вычисления кубического корня. Первым аргументом функции указывается возводимое в степень выражение, второй её аргумент - степень, в которую возводится выражение. В данном случае степень равна 1/3.

Однако в силу автоматического преобразования типов при вычислении выражения 1/3 используется целочисленное деление, в результате чего получаем ноль. Чтобы избежать такой неприятности, во втором аргументе функции
pow() использована инструкция (double) для выполнения явного приведения типов.

Обращаем также внимание читателя на способ ввода больших чисел: они вводятся в формате мантиссы и показателя степени. Например, число(литерал) 6.672*10-11 вводится как
6.672E-11, а число 5.96*1024 - как 5.96E24


* Математическое выражение вида (х)1/3 - "х в степени одна третья" эквивалентно выражению "кубический корень из х", здесь применяется запись такого вида поскольку в Html нет символа выражающего корень энной степени в привычном школьном выражении.



В основу сайта положена информация из книги
"Самоучитель C++ с примерами и задачами. Книга + CD", СПб, Наука и Техника, 2010. - 480с.: ил.(+CD)
2010 - 2011 Все авторские права сохранены
Hosted by uCoz