Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ.
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ
им. К.Э. ЦИОЛКОВКОГО
КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ
Лаботраторные работы второго курса второго семестра.
Руководитель: Чернадский
Дата сдачи: _____________
Студент: Лицентов Д.Б.
Группа: 3ИТ-2-26
1998
Задание: вывести значение функции sinh(x)/sin(x) и её производно на интервале от А до Б в десяти точках. Значения производной функции должно считаться двумя способами: первое прямым вычислением и второе в помощью рядов. Значение производной функции должно считаться до машинного нуля.
Текст программы.
#include <iostream.h>
#include <math.h>
double function(double x)
{ return sinh(x)/sin(x);}
double dir(double x)
{
return (cosh(x)*sin(x)-cos(x)*sinh(x))/(sin(x)*sin(x));
}
double *derives( double (*f) (double),//функция
double *x,//массив значений иксов
double k, //кол-во точек на интервале в которос берется производная
double *D,//массив дельта
double a,//граница отрезка
double b)//граница отрезка
{ x = new double [10];
D = new double [10];
double *pr = new double[10];
double s = 0;
for (int i=0;i<10;i++)
{
x[i] =s+a;
s = (b-a)/k;
a+=s;
double d = s;//дельта
int m = 0;
double d_pred,f_pred,f0=0;
do
{
d = d /2;
f_pred = f0;
f0 = (-f(x[i])+f(x[i]+d))/(d);
m++;
}
while (((f0!=f_pred)&&(m<=100)));//вычисляем до машинного нуля
D[i]=d_pred;//массив значений дельта
pr[i]=f_pred;//значения производной
cout << "\n x[" << i <<"] " << x[i] << "\t" <<f_pred<<"\t"
<<dir(x[i])<<"\t"<<D[i];
cout << "\t"<< m;
}
return pr;
}
void main(void)
{ double a , b , *x , *D, (*f)(double)=function,*result;
int i ;
do
{ i=0;
cout << "Input a:";
cin >> a;
cout << "Input b:";
cin >> b;
if (a>b)
{cout <<"Input a <b";
i=1;}
}
while (i==1);
result = derives(function,x,10,D,a,b);}
Результаты работы.
Input a:1 Input b:5 x[0] 1 0.93704 0.937041 3.9346e-311 33 x[1] 1.8 3.895777 3.895777 3.9346e-311 53 x[2] 2.12 7.899375 7.899994 3.9346e-311 39 x[3] 2.408 17.496182 17.496226 3.9346e-311 33 x[4] 2.6672 46.255806 46.383292 3.9346e-311 43 x[5] 2.90048 203.810226 192.558503 3.9346e-311 47 x[6] 3.110432 11886.359648 11886.359648 3.9346e-311 51 x[7] 3.299389 454.965295 454.757697 3.9346e-311 43 x[8] 3.46945 96.558946 96.562709 3.9346e-311 36 x[9] 3.622505 36.997996 36.99798 3.9346e-311 32 |
Сперва прога просит ввести интервал. Далее вывоти плоды своей работы:
Задание: написать программу которая просит ввести строку, нарезает эту строку на подстроки и выводит их в обратном порядке.
Текст программы.
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
class stroka
{
char *ch;
int len;
friend int operator == (stroka & a , stroka & b);
friend stroka* Friend0(stroka c);
friend istream& operator >>(istream & in, stroka & a );
friend ostream& operator <<(ostream & out, stroka & a );
public :
stroka(int N=80)
{ch = new char [N];
ch[0]='\0';
}
stroka (const char *s)
{
int j=0;
while (ch[j++]);
ch = new char[len];
ch[len] = '\0';
len--;
for (int i=0;i<len;i++)
ch[i]= s[i];
}
void string1(void)
{ int j=0;
while (ch[j++]);
len = j-1;
}
~stroka (){delete [] ch ;}
} ;
void main()
{ stroka s0,*s1;
cin >> s0;
s0.string1();
cout <<"\n"<<*Friend0(s0);
}
stroka* Friend0(stroka c)
{
stroka *GodDame_Mother_F_1;
stroka *GodDame_Mother_F_2;
stroka *GodDame_Mother_F_;
GodDame_Mother_F_1 = new stroka[c.len];
GodDame_Mother_F_2 = new stroka[c.len];
GodDame_Mother_F_ = new stroka[c.len];
int i=0,j=0,k=-1,h=0,g=0,f=0;
for(i=0;i<=c.len;i++){
if(((c.ch[i]==' '||c.ch[i]=='.')&&((c.ch[i+1]!=' ')||(c.ch[i-1]!=' ')))){
//cout<<c.ch[i]<<"\tI won!!!";
k++;
//j=0;
g=0;
for(k;k<i;k++){
if(c.ch[k]!=' '){
//cout<<c.ch[k];
GodDame_Mother_F_1[0].ch[j++]=c.ch[k];
GodDame_Mother_F_2[0].ch[g++]=c.ch[k];
}
}
h++;
//for(f=0;f<g;f++)cout<<GodDame_Mother_F_2[0].ch[f];
//cout<<'\n';
int s,s1;
for(int d=i;d<c.len;d++){
s1=0;
for(f=0;f<g;f++){
s=0;
if(GodDame_Mother_F_2[0].ch[f]!=c.ch[d+f]){
//cout<<"I won!!!!!";
s=1;
}
if(s!=0){s1=1;}
}
if(s1==0&&GodDame_Mother_F_2[0].ch[f+1]==' '){
cout<<"I won!!!!!";
for(int a=0;a<g;a++)cout<<GodDame_Mother_F_2[0].ch[a];
}
}
}
}
return GodDame_Mother_F_;
}
int operator == (stroka & a,stroka & b)
{ int k=0;
a.string1();
b.string1();
if (a.len!=b.len) k--;
else
for (int i=0;i<a.len;i++)
if (a.ch[i]!=b.ch[i]) {k--;break;}
return k;
}
istream &operator >>(istream &in,stroka & A)
{ cout <<"\n\tInput string : ";
in.getline(A.ch,80,'\n');
return in;
}
ostream &operator <<(ostream &out,stroka & A)
{ out << A.ch;
return out;
}
Результат работы.
Input string : demon13 13 mon de |
Написать программу с наследованием классов и виртуальными функциями.
Текст программы.
#include <iostream.h>
class complex
{ public :
double x,y;
virtual void fun (int x=0, int y=0)=0;
};
class What_the_hell_we_got: public complex
{ public :
void fun (int x, int y)
{cout<<"\n What_the_hell_we_got "<< x<<"\t"<<y;}
};
class Plusssssss: public complex
{ public :
void fun (int x=0, int y=0)
{cout<<"\n Plusssssss\tx+y ="<< x+y;}
};
class Umnojinia : public What_the_hell_we_got
{public :
void fun (int x)
{cout<<"\n Umnojinia\tx*x ="<< x*x;}
};
class xz : public Plusssssss , public Umnojinia
{public :
void fun (int x)
{cout<<"\n Xzubla\t\tx^3 ="<< x*x*x;}
};
void main (void)
{ What_the_hell_we_got D, *pcom1 = &D;
Plusssssss C2, *pc2 = &C2;
int k,x;
cin>>x>>k;
pcom1 -> fun(k,x);
pc2 -> fun (k,x);
Umnojinia C3, *pc3 = & C3;
pc3 -> fun (x);
pcom1=pc3;
pcom1->fun(k,x);
xz C4, *pc4 = & C4;
pc4 -> fun (x);
}
3 4 What_the_hell_we_got 4 3 Plusssssss x+y =7 Umnojinia x*x =9 What_the_hell_we_got 4 3 Xzubla x^3 =27 |
Вводим два числа и смотрим что получится при сложение умножении или возведение в третью степень.