Программирование на С

 

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ.

 

МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

им. К.Э. ЦИОЛКОВКОГО

 

 

 

 

 

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ

 

 

Лаботраторные работы второго курса второго семестра.

 

 

 

 

 

 

 

 

Руководитель: Чернадский

 

Дата сдачи: _____________

 

Подпись: _____________

 

Студент: Лицентов Д.Б.

 

 

Группа: 3ИТ-2-26

 

 

 

Москва

1998











Лабораторная работа номер 1

Задание: вывести значение функции 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


Сперва прога просит ввести интервал. Далее вывоти плоды своей работы:

- первый столбик –номер эксперимента

- второй столбук - значение финкйии

- третий столбик значение которое получается «напрямую»

- четвёртый столбик - значение которое получается вычислением с помощью рядов

- пятый столбик – машинный ноль

- шестой столбик - количество итераций которое было необходимо для вычисления производной функции до машинного нуля.

























Лабороторная работа №2

Задание: написать программу которая просит ввести строку, нарезает эту строку на подстроки и выводит их в обратном порядке.


Текст программы.


#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










Лабораторная работа №3


Написать программу с наследованием классов и виртуальными функциями.


Текст программы.


#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


Вводим два числа и смотрим что получится при сложение умножении или возведение в третью степень.


МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ.   МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННО-ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ