Задание 1.
Кинематическое уравнение движения материальной точки по прямой (ось х) имеет вид х = A·t+B·t2+С·t3, где А=5 м, В = 4 м/с, С = -1 м/с2. Составить программу для определения средней скорости за интервал времени от t1= 1 c, t2 = 6 c.
Анализ задачи
Средняя скорость точки, двигающейся по прямой, равна отношению перемещения точки к промежутку времени, в течение которого это перемещение произошло. Следовательно
Текст программы
program P_1_14;
uses crt;
Var
vsr, t1, t2, x1, x2, A, B, C: real;
Begin
ClrScr; //{ Очистка экрана }
{ Ввод исходных данных }
write(' Введите A = ');
readln(A);
write(' Введите B = ');
readln(B);
write(' Введите C = ');
readln(C);
write(' Введите t1 = ');
readln(t1);
write(' Введите t2 = ');
readln(t2);
{ Вычисление координаты точки }
x1:=t1*(A+B*t1+C*t1*t1);
x2:=t2*(A+B*t2+C*t2*t2);
{ Вычисление средней скорости }
vsr:=(x2-x1)/(t2-t1);
{ Вывод результата }
writeln;
writeln(' Средняя скорость = ', vsr:8:2,' м/с.');
end.
Результат программы:
Задание 2.
На плоскости задана прямоугольная система координат с осями Х и У. Составить программу, которая вводит с клавиатуры координаты точки (х, у) и сообщает, принадлежит эта точки кругу с центром в начале координат и радиусом r (значение которого также вводится с клавиатуры) или лежит на границе его окружности или за ее пределами.
Анализ задачи
Для точки (х, у) внутри круга с центром в начале координат и радиусом r выполняется неравенство
x2 + y2 < r2
Для точки (х, у) на границе круга выполняется равенство
x2 + y2 = r2
Для точки (х, у) за пределами круга выполняется неравенство
x2 + y2 > r2
Текст программы
program P_2_17;
uses crt;
Var
x, y, r: real;
Begin
ClrScr; { Очистка экрана }
{ Ввод исходных данных }
write(' Введите координату точки x = ');
readln(x);
write(' Введите координату точки y = ');
readln(y);
write(' Введите радиус круга r = ');
readln(r);
{ Анализ положения точки }
if (x*x+y*y<r*r) then
writeln(' Точка расположена внутри круга.');
if (x*x+y*y=r*r) then
writeln(' Точка расположена на границе круга.');
if (x*x+y*y>r*r) then
writeln(' Точка расположена за пределами круга.');
end.
Результаты программы:
Задание 3.
Запросить имя пользователя и напечатать «Привет, Вася!» 10 раз, если Вася – имя пользователя.
program vasja;
uses crt;
var
name:string[20];
i:integer;
begin clrscr;
write('Введите ваше имя: ');
readln(name);
i:=1;
repeat
writeln(i,'Привет, ',name);
i:=i+1;
until i>10;
readln;
end.
Результат программы:
Задание 4.
Одномерный массив a задается пользователем. Сформируйте такой массив b, который содержит копию отрицательных элементов массива а.
Program mas;
uses crt;
const max=100;
var a,b:array[1..max] of integer;
n,i,k:byte;
begin
clrscr;
randomize;
repeat
write('Размер массива A n=');
readln(n);
until n in [1..max];
writeln('Исходный массив:');
k:=0;
for i:=1 to n do
begin
a[i]:=random(100)-50;
write(a[i]:4);
if a[i]<0 then
begin
k:=k+1;
b[k]:=a[i];
end;
end;
writeln;
writeln;
if k=0 then write('В массиве А нет положительных элементов!')
else
begin
writeln('Массив В отрицательных чисел:');
for i:=1 to k do
write(b[i]:5);
end;
readln
end.
Результат программы:
Задание 5.
Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях.
14. . | При x = 12.3´10-1, y = 15.4, z = 0.252´103: 82.825623. |
#include "pch.h"
#include <iostream>
#include<stdio.h>
#include <cmath>
int main()
{
float x, y, z, g; // описание действительных переменных
printf(" x = "); // вывод подсказки
scanf_s("%e", &x); // ввод x
printf(" y = ");
scanf_s("%e", &y); // ввод y
printf(" z = ");
scanf_s("%e", &z); // ввод z
// расчет g
g = pow(y,x+1) / (pow(fabs(y-2),1/3.)+3);
g += (x + y / 2) / 2 / fabs(x + y)*pow(x + 1, -1 / sin(z));
printf("\n g = %10.6f\n", g); // вывод g на экран
system("pause"); // задержка экрана
}
Результат программы:
Задание 6.
Вычислить значение y в зависимости от выбранной функции j(x), аргумент которой определяется из поставленного условия.
Возможные значения функции j(x): 2 x, x 2, х /3 задаются пользователем с клавиатуры.
Предусмотреть вывод сообщений, показывающих, при каком условии и с какой функцией производились вычисления у.
, где
#include "pch.h"
#include <iostream>
#include <cmath>
#include <stdio.h>
int main()
{
float a, b, z, x, y; // описание действительных переменных
int k;
setlocale(LC_CTYPE, "rus"); // поддержка русских букв в консоли
printf(" a = "); // вывод подсказки
scanf_s("%e", &a); // ввод a
printf(" b = "); // вывод подсказки
scanf_s("%e", &b); // ввод b
printf(" z = "); // вывод подсказки
scanf_s("\n%e", &z); // ввод z
printf(" 1) f(x)=2x\n");
printf(" 2) f(x)=x^2\n");
printf(" 3) f(x)=x/3\n");
printf(" Введите номер функции f(x) = "); // ввод номера функции
scanf_s("%d", &k);
if (z < 1) // вычисление х
{
x = 2 + z;
printf(" z<1 x = 2+z = %4.1f\n",x);
}
else
{
x = sin(z)*sin(z);
printf(" z>=1 x = sin(z)^2 = %4.1f\n",x);
}
if (k==1) // вычисление у с первой функцией
{
y = (2 * a * 2*x + b * cos(sqrt(fabs(x)))) / (x*x + 5);
printf(" f(x) = 2x y= %9.5f\n",y);
}
if (k == 2) // вычисление у со второй функцией
{
y = (2 * a * x*x + b * cos(sqrt(fabs(x)))) / (x*x + 5);
printf(" f(x) = x^2 y = %9.5f\n", y);
}
if (k == 3) // вычисление у с третьей функцией
{
y = (2 * a * x/3. + b * cos(sqrt(fabs(x)))) / (x*x + 5);
printf(" f(x) = x/3 y = %9.5f\n", y);
}
if ((k<1)||(k>3))
printf(" Функция f(x) не определена.\n");
system("pause");
}
Результаты программы:
Задание 7.
Функция Y(x) представляет собой функцию гиперболический синус sh(x). Функция S(x) – первые n членов разложени гиперболического синуса в ряд. При увеличении значеня n S(x)® Y(x).
Для упрощения расчетов получим реккурентную формулу для элементов ряда
#include "pch.h"
#include <iostream>
#include <cmath>
#include <stdio.h>
int main()
{
float a, b, h, x, S, Y; // описание действительных переменных
float ak;
int n;
printf(" a = "); // вывод подсказки
scanf_s("%e", &a); // ввод a
printf(" b = "); // вывод подсказки
scanf_s("%e", &b); // ввод b
printf(" h = "); // вывод подсказки
scanf_s("%e", &h); // ввод h
printf(" n = "); // вывод подсказки
scanf_s("%d", &n); // ввод n
printf(" x Y(x) S(x) |Y(x)-S(x)|\n");
x = a;
while (x <= b + h / 10) // цикл по х
{
S = ak = x;
for (int k=0; k<n; k++) // цикл по элементам ряда
{
ak *= x * x/(2 * k + 2) / (2 * k + 3);
S += ak; // подсчет суммы ряда
}
Y = (exp(x) - exp(-x)) / 2;
printf(" %4.1f %9.7f %9.7f %9.7f\n",x,Y,S,fabs(Y-S));
x += h;
}
system("pause");
}
Результат программы:
Задание 8.
Сумму элементов массива, расположенных между первым и последним нулевыми элементами.
#include "pch.h"
#include <iostream>
#include <stdio.h>
int main()
{
int Summa = 0; // сумма элементов
int k1, k2; // вспомогательные переменные
int i; // вспомогательные переменные
int n; // размер массива
int m; // число нулевых элементов в массиве
int a[20]; // описание массива а
setlocale(LC_CTYPE, "rus"); // поддержка русских букв в консоли
printf(" Введите число элементов массива n = ");
scanf_s("%d", &n);
// ввод массива с подсчетом нулевых элементов
m = 0;
printf(" Введите элементы массива.\n");
for (i = 0; i <= n - 1; i++)
{
printf(" a[%d] = ", i);
scanf_s("%d", &a[i]);
if (a[i] == 0) m++;
}
if (m < 2)
printf(" В массиве нет двух или более нулевых элементов.\n");
else
{
// находим номер первого нулевого элеллмента
k1 = 0;
while (a[k1]!= 0) k1++;
// находим номер последнего нулевого элеллмента
for (i = 0; i <= n - 1; i++)
if (a[i] == 0) k2 = i;
// поддсчет суммы элементов между первым и последним нулевыми элементами
for (i = k1; i <= k2; i++)
Summa += a[i];
printf(" Номер первого нулевого элемента = %d\n", k1);
printf(" Номер последнего нулевого элемента = %d\n", k2);
if (k2==k1+1)
printf(" Нулевые элементы расположены рядом.\n");
else
printf(" Сумма = %d\n", Summa);
}
system("pause");
}
Результаты программы:
Задание 9.
В матрице размером N ´ M поменять местами строку, содержащую элемент с наибольшим значением со строкой, содержащей элемент с наименьшим значением.
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
setlocale(LC_ALL,"rus");
srand(time(0));
int arr1[3][3];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
arr1[i][j]=rand()%100;
cout<<"Исходный массив: "<<endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
cout<<arr1[i][j]<<" ";
cout<<endl;
}
int max,rowMax=0;
int min,rowMin=0;
max=arr1[0][0];
min=arr1[0][0];
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; j++)
{
if(max<arr1[i][j])
{
max=arr1[i][j];
rowMax=i;
}
if(min>arr1[i][j])
{
min=arr1[i][j];
rowMin=i;
}
}
int temp;
for (int i = 0; i < 3; i++)
{
temp=arr1[rowMax][i];
arr1[rowMax][i]=arr1[rowMin][i];
arr1[rowMin][i]=temp;
}
cout<<"Массив после замены строк: "<<endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
cout<<arr1[i][j]<<" ";
cout<<endl;
}
system("pause");
return 0;
}
Результат программы:
Задание 10.
В строке, состоящей из групп нулей и единиц, найти и вывести на экран самую короткую группу.
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
char str[256] = "000011111000011100000111111100000111111110000001111111\0";
int max = 256, max_pos = 0;
for (int i = 0; str[i]!= '\0'; i++)
{
int k = i;
while (str[i] == str[i+1] &&
str[i]!= '\0') i++;
int len = abs((k+1)-i);
if (len < max) { max = len; max_pos = k; }
}
printf("str = %s\nmax_pos = %d max_len = %d\n",str,max_pos,max);
return 0;
}
Результат программы:
Список используемых источников
1. Березин Б. И., Березин С. Б. Начальный курс C++. – М.: ДИАЛОГ-МИФИ, 2003. – 288 с.
2. Основы алгоритмизации и программирования. Язык Си: учеб. пособие М. П. Батура (и др.) / – Минск: БГУИР, 2007.
3. Павловская, Т. А. С/С++. Программирование на языке высокого уровня Павловская Т. А. – СПб.: Питер, 2004.