1. Лукашик В.И., Иванова Е.В. Сборник задач по физике / 20-е изд. – М.: Просвещение, 2006. – 240 с.
2. CyberForum.ru [электронный ресурс]. - https://www.cyberforum.ru/
3. Язык программирования Си // kpolyakov.spb.ru. - https://kpolyakov.spb.ru/school/c.htm
Исходный код программы
# include <conio.h>
# include <iostream>
# include <stdlib.h>
using namespace std;
float c=0, q=0, y=0, l=0, t0=0, t1=0, m=0, q1=0, t=0;
int type=0, tabl=0, fnd=0, cont=1;
int main()
{
setlocale (LC_ALL, "RUS");
cout<<"ОБРАТИТЕ ВНИМАНИЕ!\nПри больших значениях (1 млн и более) вместо привычного ответа будет число вида Xe+Y\nНапример: 5e+006 или 1,77e-002\nНе пугайтесь таких чисел - запись Xe+Y означает X умноженное на 10 в степени Y\nНапример: 5e+006 означает 5 * 10^6, т.е. 5 000 000\n1,77e-002 означает 1,77 * 10^-2, т.е. 0,0177 и т.д.\n\n\n";
//Выбор типа задач
while (cont == 1)
{
cout<<"Выберите тип задачи:\n1 - Нагревание/остывание в-ва\n2 - Плавление/кристаллизация в-ва\n3 - Парообразование/конденсация\n4 - Сгорание топлива\n";
do
{
cout<<"Введите номер типа задач: ";
cin>>type;
}
while (type!= 1 && type!= 2 && type!= 3 && type!= 4);
//Всё последующее решение
switch (type)
{
case 1:
//Вступление и вывод таблиц
cout<<"\n\nВы выбрали тип задачи 1, т.е. нагревание/остывание в-ва\nВ таких задачах понадобятся следующие величины:\nУдельная теплоёмкость в-ва\nМасса в-ва\nНачальная и конечная температура\nКоличество теплоты";
cout<<"\n\nВНИМАНИЕ!!!\nНе забывайте, что программа не учитывает изменение агрегатного состояния в-ва!\nУбедитесь, что между начальной и конечной температурой не находится температура плавления/кипения!";
cout<<"\nНужно ли вывести на экран таблицу удельной теплоёмкости некоторых в-в?\nЕсли да, введите 1, если нет, введите 0\n";
do
{
cout<<"Вывести таблицу? (введите 1 или 0): ";
cin>>tabl;
}
while (tabl!= 0 && tabl!= 1);
if (tabl == 1)
{
cout<<"\nУДЕЛЬНАЯ ТЕПЛОЁМКОСТЬ (Дж/кг*градус)\nВода - 4200\nАлюминий - 920\nЖелезо - 460\nЛёд - 2100\nМедь - 380\nНикель - 460\nСпирт - 2500\nСеребро - 250\nРтуть - 130\nСвинец - 140\n\n";
}
//Что найти?
cout<<"\nЧто нужно найти - удельную теплоёмкость (1), массу (2), начальную t (3), конечную t (4) или кол-во теплоты (5)?\n\nОбратите внимание!!!\nЕсли вам надо найти начальную или конечную t, то под начальной подразумевается меньшая t";
do
{
cout<<"\n\nВведите цифру, соответствующую переменной, которую надо найти: ";
cin>>fnd;
}
while (fnd!= 1 && fnd!= 2 && fnd!= 3 && fnd!= 4 && fnd!= 5);
switch (fnd)
{
case 1:
//Ввод данных
cout<<"\nНужно найти удельную теплоёмкость\n";
cout<<"Введите массу в-ва (m) в килограммах: ";
cin>>m;
cout<<"Введите начальную t в-ва (t0) в градусах Цельсия: ";
cin>>t0;
cout<<"Введите конечную t в-ва (t1) в градусах Цельсия: ";
cin>>t1;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
t = t1-t0;
if (t<0) t = -t;
c = q1/(m*t);
//Ответ
cout<<"\n\nУдельная теплоёмкость в-ва = "<<c<<" Дж/кг*градус\nЗадача решена";
break;
case 2:
//Ввод данных
cout<<"\nНужно найти массу\n";
cout<<"Введите удельную теплоёмкость в-ва (c) в джоулях на килограмм-градус: ";
cin>>c;
cout<<"Введите начальную t в-ва (t0) в градусах Цельсия: ";
cin>>t0;
cout<<"Введите конечную t в-ва (t1) в градусах Цельсия: ";
cin>>t1;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
t = t1-t0;
if (t<0) t = -t;
m = q1/(c*t);
//Ответ
cout<<"\n\nМасса в-ва = "<<m<<" кг\nЗадача решена";
break;
case 3:
//Ввод данных
cout<<"\nНужно найти начальную температуру\n";
cout<<"Введите удельную теплоёмкость в-ва (c) в джоулях на килограмм-градус: ";
cin>>c;
cout<<"Введите массу в-ва в килограммах: ";
cin>>m;
cout<<"Введите конечную t в-ва (t1) в градусах Цельсия: ";
cin>>t1;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
t = q1/(c*m);
t0 = t1-t;
//Ответ
cout<<"\n\nНачальная t в-ва = "<<t0<<" градусов Цельсия\nЗадача решена";
break;
case 4:
//Ввод данных
cout<<"\nНужно найти конечную температуру\n";
cout<<"Введите удельную теплоёмкость в-ва (c) в джоулях на килограмм-градус: ";
cin>>c;
cout<<"Введите массу в-ва в килограммах: ";
cin>>m;
cout<<"Введите начальную t в-ва (t0) в градусах Цельсия: ";
cin>>t0;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
t = q1/(c*m);
t1 = t0+t;
//Ответ
cout<<"\n\nКонечная t в-ва = "<<t1<<" градусов Цельсия\nЗадача решена";
break;
case 5:
//Ввод данных
cout<<"\nНужно найти кол-во теплоты\n";
cout<<"Введите удельную теплоёмкость в-ва (c) в джоулях на килограмм-градус: ";
cin>>c;
cout<<"Введите массу в-ва в килограммах: ";
cin>>m;
cout<<"Введите начальную t в-ва (t0) в градусах Цельсия: ";
cin>>t0;
cout<<"Введите конечную t в-ва (t1) в градусах Цельсия: ";
cin>>t1;
//Решение
t = t1-t0;
if (t<0) t = -t;
q1 = c*m*t;
//Ответ
cout<<"\n\nКол-во теплоты = "<<q1<<" Дж\nЗадача решена";
break;
}
break;
case 2:
//Вступление и вывод таблиц
cout<<"\n\nВы выбрали тип задачи 2, т.е. плавление/кристаллизация в-ва\nВ таких задачах понадобятся следующие величины:\nУдельная теплота плавления в-ва\nМасса в-ва\nКоличество теплоты";
cout<<"\n\nОбратите внимание!\nУдельная теплота плавления обозначается греч. буквой лямбда\nНО! Она не поддерживается программой, поэтому она заменена здесь буквой y";
cout<<"\n\nНужно ли вывести на экран таблицу удельной теплоты плавления некоторых в-в?\nЕсли да, введите 1, если нет, введите 0\n";
do
{
cout<<"Вывести таблицу? (введите 1 или 0): ";
cin>>tabl;
}
while (tabl!= 0 && tabl!= 1);
if (tabl == 1)
{
cout<<"\nУДЕЛЬНАЯ ТЕПЛОТА ПЛАВЛЕНИЯ (10^4 Дж/кг)\nОлово - 5,9\nАлюминий - 39\nЖелезо - 27\nЛёд - 34\nМедь - 21\nЗолото - 6,7\nПлатина - 11\nСеребро - 10\nРтуть - 1\nСвинец - 2,5\n\n";
}
//Что найти?
cout<<"\nЧто нужно найти - удельную теплоту плавления (1), массу (2) или кол-во теплоты (3)?\n";
do
{
cout<<"Введите цифру, соответствующую переменной, которую надо найти: ";
cin>>fnd;
}
while (fnd!= 1 && fnd!= 2 && fnd!= 3 && fnd!= 4 && fnd!= 5);
switch (fnd)
{
case 1:
//Ввод данных
cout<<"\nНужно найти удельную теплоту плавления\n";
cout<<"Введите массу в-ва (m) в килограммах: ";
cin>>m;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
y = q1/m;
//Ответ
cout<<"\n\nУдельная теплота плавления в-ва = "<<y<<" Дж/кг\nЗадача решена";
break;
case 2:
//Ввод данных
cout<<"\nНужно найти массу\n";
cout<<"Введите удельную теплоту плавления в-ва (y) в джоулях на килограмм: ";
cin>>y;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
m = q1/y;
//Ответ
cout<<"\n\nМасса в-ва = "<<m<<" кг\nЗадача решена";
break;
case 3:
//Ввод данных
cout<<"\nНужно найти полученное/отданное в-вом кол-во теплоты\n";
cout<<"Введите удельную теплоту плавления в-ва (y) в джоулях на килограмм-градус: ";
cin>>y;
cout<<"Введите массу в-ва (m) в килограммах: ";
cin>>m;
//Решение
q1 = y*m;
//Ответ
cout<<"\n\nПолученное/отданное в-вом кол-во теплоты = "<<q1<<" Дж\nЗадача решена";
break;
}
break;
case 3:
//Вступление и вывод таблиц
cout<<"\n\nВы выбрали тип задачи 3, т.е. парообразование/конденсация\nВ таких задачах понадобятся следующие величины:\nУдельная теплота парообразования в-ва\nМасса в-ва\nКоличество теплоты";
cout<<"\n\nНужно ли вывести на экран таблицу удельной теплоты парообразования некоторых в-в?\nЕсли да, введите 1, если нет, введите 0\n";
do
{
cout<<"Вывести таблицу? (введите 1 или 0): ";
cin>>tabl;
}
while (tabl!= 0 && tabl!= 1);
if (tabl == 1)
{
cout<<"\n\nУДЕЛЬНАЯ ТЕПЛОТА ПАРООБРАЗОВАНИЯ (10^6 Дж/кг)\nВода - 2,3\nСпирт - 0,9\nРтуть - 0,3\nЭфир - 0,4\n\n";
}
//Что найти?
cout<<"\nЧто нужно найти - удельную теплоту парообразования (1), массу (2) или кол-во теплоты (3)?\n";
do
{
cout<<"Введите цифру, соответствующую переменной, которую надо найти: ";
cin>>fnd;
}
while (fnd!= 1 && fnd!= 2 && fnd!= 3 && fnd!= 4 && fnd!= 5);
switch (fnd)
{
case 1:
//Ввод данных
cout<<"\nНужно найти удельную теплоту парообразования\n";
cout<<"Введите массу в-ва (m) в килограммах: ";
cin>>m;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
l = q1/m;
//Ответ
cout<<"\n\nУдельная теплота парообразования в-ва = "<<l<<" Дж/кг\nЗадача решена";
break;
case 2:
//Ввод данных
cout<<"\nНужно найти массу\n";
cout<<"Введите удельную теплоту парообразования в-ва (l) в джоулях на килограмм: ";
cin>>l;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
m = q1/l;
//Ответ
cout<<"\n\nМасса в-ва = "<<m<<" кг\nЗадача решена";
break;
case 3:
//Ввод данных
cout<<"\nНужно найти полученное/отданное в-вом кол-во теплоты\n";
cout<<"Введите удельную теплоту парообразования в-ва (l) в джоулях на килограмм-градус: ";
cin>>l;
cout<<"Введите массу в-ва (m) в килограммах: ";
cin>>m;
//Решение
q1 = l*m;
//Ответ
cout<<"\n\nПолученное/отданное в-вом кол-во теплоты = "<<q1<<" Дж\nЗадача решена";
break;
}
break;
case 4:
//Вступление и вывод таблиц
cout<<"\n\nВы выбрали тип задачи 4, т.е. сгорание топлива\nВ таких задачах понадобятся следующие величины:\nУдельная теплота сгорания топлива\nМасса в-ва\nКоличество теплоты";
cout<<"\n\nНужно ли вывести на экран таблицу удельной теплоты сгорания некоторых видов топлива?\nЕсли да, введите 1, если нет, введите 0\n";
do
{
cout<<"Вывести таблицу? (введите 1 или 0): ";
cin>>tabl;
}
while (tabl!= 0 && tabl!= 1);
if (tabl == 1)
{
cout<<"\n\nУДЕЛЬНАЯ ТЕПЛОТА СГОРАНИЯ ТОПЛИВА (10^6 Дж/кг)\nБензин - 46\nВодород - 120\nКаменный/древесный уголь - 30/34\nПриродный газ - 44\nНефть - 44\nКеросин - 46\nСпирт - 27\nПорох - 3,8\n\n";
}
//Что найти?
cout<<"\nЧто нужно найти - удельную теплоту сгорания топлива (1), массу (2) или кол-во теплоты (3)?\n";
do
{
cout<<"Введите цифру, соответствующую переменной, которую надо найти: ";
cin>>fnd;
}
while (fnd!= 1 && fnd!= 2 && fnd!= 3 && fnd!= 4 && fnd!= 5);
switch (fnd)
{
case 1:
//Ввод данных
cout<<"\nНужно найти удельную теплоту сгорания топлива\n";
cout<<"Введите массу в-ва (m) в килограммах: ";
cin>>m;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
q = q1/m;
//Ответ
cout<<"\n\nУдельная теплота сгорания топлива = "<<q<<" Дж/кг\nЗадача решена";
break;
case 2:
//Ввод данных
cout<<"\nНужно найти массу\n";
cout<<"Введите удельную теплоту сгорания топлива (q) в джоулях на килограмм: ";
cin>>l;
cout<<"Введите полученное/отданное в-вом кол-во теплоты (Q) в джоулях: ";
cin>>q1;
//Решение
m = q1/q;
//Ответ
cout<<"\n\nМасса в-ва = "<<m<<" кг\nЗадача решена";
break;
case 3:
//Ввод данных
cout<<"\nНужно найти полученное/отданное в-вом кол-во теплоты\n";
cout<<"Введите удельную теплоту сгорания топлива (q) в джоулях на килограмм-градус: ";
cin>>q;
cout<<"Введите массу в-ва (m) в килограммах: ";
cin>>m;
//Решение
q1 = q*m;
//Ответ
cout<<"\n\nПолученное/отданное в-вом кол-во теплоты = "<<q1<<" Дж\nЗадача решена";
break;
}
break;
}
cout<<"\n\nНужно ли решить ещё одну задачу?\nЕсли да, введите 1, если нет, введите 0\n";
do
{
cout<<"Продолжить решать задачи? (введите 1 или 0): ";
cin>>cont;
}
while (cont!= 1 && cont!= 0);
cout<<"\n\n";
}
cout<<"Спасибо за использование данной программы! Нажмите любую клавишу для выхода";
getch();
}