Кафедра прикладной и теоритической физики
Факультет радиотехники и электроники
Расчетно-графическое задание по курсу «Информатика»
Вариант №17
Задание РГЗ №1 | Задание РГЗ №2 | Задание РГЗ №3 | Задание РГЗ №4 |
Выполнил:
студент группы РТВ14-22
Полященков В.В
Проверил:
преподаватель Дуркин В.В.
Новосибирск 2012
Содержание:
1. Задание РГЗ №1…………………………………………………………………..3-5
2. Задание РГЗ №2…………………………………………………………………6-10
3. Задание РГЗ №3……………………………………………………………….11-14
4. Задание РГЗ №4……………………………………………………………….15-17
Задание РГЗ №1
1. Задание:
С помощью оператора if определить, находится ли точка на плоскости в замкнутой области. Если находится, то вычислить значение функции f1 (x,y), если нет – то значение фунции f2 (x,y). Результаты выдать на экран монитора. Значения x и y ввести с клавиатуры компьютера.
X |
-3 |
y + x = 4 |
y |
2. Схема алгоритма.
Начало |
P AAAAZHJzL2Rvd25yZXYueG1sTI/BTsMwDIbvSLxDZCRuLCWDFUrTCRAFoZ0YCK5ZY9pqiVM12Vbe HiMOcLT96ff3l8vJO7HHMfaBNJzPMhBITbA9tRreXuuzKxAxGbLGBUINXxhhWR0flaaw4UAvuF+n VnAIxcJo6FIaCilj06E3cRYGJL59htGbxOPYSjuaA4d7J1WWLaQ3PfGHzgx432GzXe+8huwpzB9d XZvt+/PdZfqglV095Fqfnky3NyASTukPhh99VoeKnTZhRzYKp2Geq2tGNVzkCgQDv4sNk0otQFal /F+h+gYAAP//AwBQSwECLQAUAAYACAAAACEAtoM4kv4AAADhAQAAEwAAAAAAAAAAAAAAAAAAAAAA W0NvbnRlbnRfVHlwZXNdLnhtbFBLAQItABQABgAIAAAAIQA4/SH/1gAAAJQBAAALAAAAAAAAAAAA AAAAAC8BAABfcmVscy8ucmVsc1BLAQItABQABgAIAAAAIQDF3tgG/wEAAAYEAAAOAAAAAAAAAAAA AAAAAC4CAABkcnMvZTJvRG9jLnhtbFBLAQItABQABgAIAAAAIQA4bQZT3QAAAAoBAAAPAAAAAAAA AAAAAAAAAFkEAABkcnMvZG93bnJldi54bWxQSwUGAAAAAAQABADzAAAAYwUAAAAA " strokecolor="black [3040]" strokeweight="1.5pt">
«введите x, y» |
x, y, f |
x, y |
НЕТ -----Да-------[ ((x<=3&&y<=3&&x>=0&&y>=0)
||(x<=0&&x>=-3&&y>=0&&y<=3)
||(x>=0&&y<=0&&(x*x+y*y)<=4))
«входит» |
«не входит» |
f=sin(x)*sin(x)+log(fabs(y)) |
f=(x+sin(y))/cos(x*y) |
«f=», f |
конец |
3. Текст программы.
#include<iostream>
#include<math.h>
using namespace std;
void main ()
{
setlocale(LC_ALL,"rus_rus.1251");
float x,y,f;
cout<<"введите x,y"<<endl;
cin>>x>>y;
if ((x<=3 && y<=3 && x>=0 && y>=0)
|| (x<=0 && x>=-3 && y>=0 && y<=3)
|| (x>=0 && y<=0 && (x*x+y*y)<=4))
{
f=sin(x)*sin(x)+log(fabs(y));
cout<<"входит"<<endl;
}
else
{
f=(x+sin(y))/cos(x*y);
cout<<"не входит"<<endl;
}
cout<<"f="<<f;
}
4. Тестовый пример:
Введите x, y
“входит”
f= 1,92543
Задание РГЗ №2
1. Задание:
С помощью оператора цикла for вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Шаг изменения переменных i и j указывается только в том случае, если он отличается от единицы.
a)
n>=2
б)
2. Схема алгоритма.
Начало |
а)
s,a,p, pi=3.1415, n,k,i |
«введите n» |
“введите n>2”,n |
K=2; k<=n; k++ |
i=1;i<=(k-1); i++ |
a=sin(pi*i/k) |
s+=p |
p*=a |
s=0 |
конец |
p=1 |
“s=”, s |
Начало |
s+=exp(cos(pi*i/8*m)) |
конец |
s,pi=3.1415 I,n,m |
“введите n>2, m” |
n,m |
i=2; i<=m*n; i++ |
“s=”,s |
s=0 |
3. Текст программы.
а)
#include<iostream>
#include<math.h>
using namespace std;
void main()
{
setlocale(LC_ALL,"rus_rus.1251");
float s,a,p,pi=3.1415;
int n,k,i;
cout<<"введите n > 2"<<endl;
cin>>n;
s=0;
for(k=2; k<=n;k++)
{
p=1;
for(i=1; i<=(k-1); i++)
{
a=sin(pi*i/k);
p*=a;
}
s+=p;
}
cout<<"s="<<s;
}
б)
#include<iostream>
#include<math.h>
using namespace std;
void main()
{
setlocale(LC_ALL,"rus_rus.1251");
float s,pi=3.1415;
int i,n,m;
cout<<"введите n>2 m "<<endl;
cin>>n>>m;
s=0;
for(i=2; i<=m*n; i++)
{
s+=exp(cos(pi*i/8*m));
}
cout<<"s="<<s;
}
4. Тестовый пример.
а)
Введите n > 2
S= 2.25004
б)
Введите n>2 m
2 3
s=3.35391
Задание РГЗ №3
1. Задание:
Определить: 10 членов ряда; абсолютную разность между табличной функцией и суммой ряда. Функцию pow() в программе не применять! Для вычисления члена ряда необходимо использовать рекуррентные соотношения, т.е. выражать последующий член суммы через предыдущий Выражение для D(n) студент должен найти самостоятельно. Значение x вводить с клавиатуры.
Функция: (
Ряд:
Общий член:
Область допустимых значений: 0.1 x 1
2. Выражение D(n)
D= = =
3. Схема алгоритма:
Начало |
s,b,x,n,y,d,a |
“введите 0.1<=x<=1” |
x |
s=0 y=1 |
n=1;n<=10;n++ |
-----------[d=((n*n+1)*x)/(2*n*((n-1)*(n-1)+1))] |
y*=d |
s+=y |
" ",n, " ",d |
конец |
“абсолютная разность=”, b |
“значение функции = “, a |
b=fabs(a-s) |
a=(x*x/4+x/2+1)*exp(x/2) |
------------["сумма ряда = ",s] |
4. Текст программы.
#include<iostream>
#include<math.h>
using namespace std;
void main()
{
setlocale(LC_ALL,"rus_rus.1251");
int n;
float d,a,x,s,b,y;
cout<<"введите 0.1<=x<=1"<<endl;
cin>>x;
s=1;
y=1;
for(n=1;n<=10;n++)
{
d=((n*n+1)*x)/(2*n*((n-1)*(n-1)+1));
y*=d;
s+=y;
cout<<" "<<n<<" "<<d<<endl;
}
a= (x*x/4+x/2+1)*exp(x/2);
b=fabs(a-s);
cout<<"значение функции = "<<a<<endl;
cout<<"абсолютная разность = "<<b<<endl;
cout<<"сумма ряда = "<<s<<endl;
}
5. Тестовый пример.
Введите 0.1<= x<=1
0.66
1 0.66
2 0.4125
3 0.22
4 0.14025
5 0.100941
6 0.0782692
7 0.0637066
8 0.0503625
9 0.0462564
10 0.0406463
Значение функции = 2,00146
Абсолютная разность = 0
Сумма ряда = 2.00146
Задание РГЗ №4
1. Задание:
Написать и протестировать функцию, которая определяет номера столбцов и строк, на пресечении которых находится минимальный и максимальный элементы.
2. Схема алгоритма:
Начало |
max=0; min=100; xmax=0; ymin=0; |
i=1;i<6; i++ |
j=1; j<6; j++ |
a[i][j]=rand()%89+10 |
a[i][j], “ “ |
-------------[max,min,xmin,xmax,ymin,ymax, i,j,a[6][6]] |
j=1; j<6; j++ |
i=1; i<6; i++ |
a[i][j]>max |
ymax=j |
max=a[i][j] |
xmax=i |
a[i][j]<min |
Нет |
Да |
Нет |
Да |
конец |
min=a[i][j] |
xmin=i |
ymin=j |
--------["минимальное число = ",min,"№ строчки = "xmin,"№ столбца = ",ymin] |
------[“максимальное число =”,max,"№ строчки = ",xmax,"№ столбца = "<<ymax] |
3. Текст программы.
#include<iostream>
#include <math.h>
using namespace std;
void main ()
{
setlocale(LC_ALL,"rus_rus.1251");
int max,min,xmin,xmax,ymin,ymax,i,j,a[6][6];
max=0;
min=100;
xmax=0;
ymin=0;
for (i=1;i<6;i++)
{
for (j=1;j<6;j++)
{
a[i][j]=rand()%89+10;
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<endl;
for (i=1;i<6;i++)
for (j=1;j<6;j++)
{
if (a[i][j]>max)
{
max=a[i][j];
xmax=i;
ymax=j;
}
if (a[i][j]<min)
{
min=a[i][j];
xmin=i;
ymin=j;
}
}
cout<<"максимальное число = "<<max<<endl<<"№ строчки = "<<xmax<<endl<<"№ столбца = "<<ymax<<endl;
cout<<"минимальное число = "<<min<<endl<<"№ строчки = "<<xmin<<endl<<"№ столбца = "<<ymin<<endl;
}
4. Тестовый пример.
51 54 25 77 44
70 96 87 94 88
19 31 62 16 92
56 68 26 31 17
94 18 85 74 35
Максимальное число = 96
№ строчки = 2
№ столбца = 2
Минимальное число = 16
№ строчки = 3
№ столбца = 4