приложение. Примеры программ

 

Пример 1. Преобразование массивов путем удаления (включения) одного или нескольких элементов.

Задание. Дан массив Х1,Х2,...,Х15. Исключить из него 5-ый и 7-ой отрицательные элементы.

 

#invlude<iostream.h> //подключение заголовочного файла библиотеки

//ввода-вывода

void main(void)

{ //Здесь начинается тело функции main

int mas[15]={-5,3,1,-8,7,-7,-6,-5,4,-5,-5,-4,-3,-7, -9}; //описание и

//инициализация массива

int mas1[13]; int i, n=0, j=0; //Описание и инициализация данных

for(i=0;i<15;i++) //Цикл для просмотра и преобразования элементов массива

{if(mas[i]>=0){mas1[j]=mas[i];j++;}

else{n++;

if((n!=5)&&(n!=7)){mas1[j]=mas[i];j++;}}};

cout<<"Заданный массив: \n";

for (i=0;i<15;i++) //Цикл для вывода заданного массива

cout<<mas[i];

cout<<"\nМассив после преобразования:\n";

for(j=0;j<13;j++) //Цикл для вывода преобразованного массива

cout<<mas1[j];

cout<<"\n";} //Конец функции main

 

Результат работы программы:

Заданный массив:

-5 3 1 -8 7 -7 -6 5 4 -5 -5 -4 -3 -7 -9

Массив после преобразования:

-5 3 1 -8 7 -7 -6 5 4 -5 -3 -7 -9

 

Пример 2. Табулирование функций. Использование итерационных циклов.

Задание. Выполнить табулирование заданной функции, используя функции, вычисляющие сумму ряда. При вычислении суммы ряда использовать рекуррентные соотношения. Сделать проверку, используя стандартные функции.

Y=2sinx+cosx

 

#include<iostream.h>

#include<math.h>

#include<iomanip.h>

double msin(double x) { //Функция для вычисления суммы ряда sinx

double E=1e-3;

double u=x, x2=x*x, s=x, m=2; do{

u=-u*x2/(m*(m+1));

s+=u;

m+=2;}

while (fabs(u)>E);

return s;}

double mcos(double x) { //Функция для вычисления суммы ряда cosx

double E=1e-3;

double s=0, u=1, m=0, x2=x*x; do {

s+=u;

u=u*x2/((m+1)*(m+2));

m+=2;}

while (fabs(u)>E);

return s;}

void main() { //Главная функция

double i;

cout <<"\n";

cout <<"________________________________________\n";

cout <<"| При разложении || Проверка |\n";

cout <<"----------------------------------------------------------------\n";

cout <<"| X | F(x) | Xст | F(x)ст | \n";

cout <<"----------------------------------------------------------------\n";

for (i=0;i<2*3.1415;i+=1){

cout <<"|"<<setw(7)<<i<<"|"<<setw(11)<<(2*msin(i)+mcos(i)*mcos(i))<< "|";

cout <<"|"<<setw(7)<<i<<"|"<<setw(11)<<(2*sin(i)+cos(i)*cos(i)<< "|\n";

cout <<"|_____|_______|________| |______|_________|";}

 

 

Результат работы программы:

 

При разложении в ряд   Проверка
X F(x)   Xст F(x)ст
 
1.974837   1.974869
1.991547   1.991773
1.262242   1.262325
-1.086192   -1.086355
-1.837085   -1.837384
0.363365   0.363096

 

Пример 3. Обработка битовых последовательностей.

Задание. Реализовать алгоритм восстановления значения целого отрицательного числа по его дополнительному двоичному коду. Значение восстанавливаемого отрицательного числа вводится с клавиатуры, результат выводится на экран.

 

// Программа возвращает значение целого отрицательного числа по

// его дополнительному двоичному коду.

#include<iomanip.h>

#include<conio.h>

#include<math.h>

void main()

{ clrscr();

int a[16],f[16],i,k=15,c;

int b[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1};

int in,out=0, mask=1<<15;

cout<<endl<<"Введите целое отрицательное число (тип int) :"<<endl;

cin>>in;

cout<<endl;

//-------------------------Получение кода числа------------------------------

cout<<"Kод числа :"<<endl;

for ( c=0; c<=15; c++ )

{ if(in&mask) //Продвигаем маску по числу

a[c]=1; //и организовываем вектор "код"

else

a[c]=0;

cout<<setw(1)<<a[c];

in<<=1; }

cout<<endl<<endl;

//-------------------------Инвертируем вектор "код"------------------------------

for(i=0;i<=15;i++)

{ if(a[i]==1)

f[i]=0;

else

f[i]=1; }

//-------------------------Прибавляем 1 и получаем прямой код------------------

for(i=15;i>=0;i--)

if(b[i]==1)

if (f[i]==b[i])

{ f[i]=0;

b[i-1]=1;

}

else

f[i]=1;

cout<<"Восстановленное значение"<<endl;

//------По известной формуле переводим число в десятичный вид--------

for (i=0;i<=15;i++)

{ out+=f[i]*pow(2,k--);

}

out=-out;

cout<<out;

getch();

}

Результат:

Введите целое отрицательное число (тип int):

-123

Kод числа:

Восстановленное значение

-123

 

Пример 4. Функции. Передача параметров.

Задание. Вычислить интегралы: от функции f1 и f2, используя метод трапеции (Симпсона). В качестве формального параметра функции для вычисления интеграла необходимо использовать указатель на подынтегральную функцию. Выбрать интервалы интегрирования и шаг.

 

#include<iomanip.h>

#include<conio.h>

#include<math.h>

//Функция вычисления первого интеграла-integr1 y=

double integr1(double g)

{

return g*g*pow((4-g*g),0.5);

}

 

//Функция вычисления второго интеграла-integr2

double integr2(double g)

{ return pow(sin(g),2);}

 

//------------------------Пеовобразная для функции integr1-------------------

double int1 (double a,double b)

{return 2*asin(b/2)-sin(4*asin(b/2))-2*asin(a/2)-sin(4*asin(a/2));}

 

//------------------------Пеовобразная для функции integr2-------------------

double int2(double a,double b)

{ return b/2-0.25*sin(2*b)-a/2+0.25*sin(2*a);}

 

//------------------------Функция вычисления----------------------------------

double integral(double a,double b,int n, double (*integr)(double))

{ //a,b- границы интервала

//n- число шагов

//*integr- указатель на подынтегральную функцию

// применение см. ниже.

int i;

double x,h,s=0;//Вычисляем интеграл методом трапеций

h=(b-a)/n;

x=h;

for(i=1;i<=n;i++)

{

s+=integr(x);

x+=h;

}

return h*((pow(b,2)*pow((4-pow(b,2)),0.5))/2+s);

}

void main()

{

double x,h;

clrscr();

cout<<"!Значения, вычисленные методом трапеций!";

cout<<"Значения, вычисленные по первообразной !";

cout<<"! ";

cout<<integral(0,1.9999,96,*integr1);// В поле "указатель на функцию" записы-

// ваем указатель на функцию, интеграл

// которой необходимо вычислить.

cout<<" ! ";

cout<<int1(0,1.9999)<<" !";

cout<<"! ";

cout<<integral(0,3.14/2,96,*integr2);

cout<<" ! ";

cout<<int2(0,3.14/2)<<" !";

getch();

}

Результат:

!Значения, вычисленные методом трапеций ! Значения, вычисленные по первообразной !

3.139022 ! 3.161582

0.817752 ! 0.784602

литература

 

Основная

 

1. Буг Г. Объектно-ориентированное программирование с примерами применения. Киев: НИПО «ДиаСофт». 1993.

2. Вайнер Р., Пиксон Л. С++ изнутри. Киев: НИПО «ДиаСофт», 1993.

3. Дьюхарст. C., Старк. К. Программирование на С++ Киев: НИПО «ДиаCофт», 1993.

4. Касаткин А.И., Вальвачев А.Н. От Turbo C к Borland C++: Cправочное пособие. /Под общ. ред. А.И. Касаткина.- Минск:Выш. шк., 1992.

5. Подбельский А.А. Язык С++ :Учеб. пособие. - М.: Финансы и статиститка, 1995.

6. Цимбал А.А., Майоров А.Г., Козодоев М.А. Турбо С++: язык и применение М.: Джен АЙ Лтд, 1993.

 

Дополнительная

 

7. Белкин В. Обработка исключительных ситуаций в Си++: что, когда, как. PC Magazine/Russian Edition, 1995.- №4.- С. 180-186.

8. Бабэ Бруно. Просто и ясно о Borland C++. Пер. с англ.- М.: БИНОМ, 1995.- 400 с.

9. Дейтел Х., Как программировать на С++: Пер. с англ.- М.: ЗАО "Издательство БИНОМ", 1998.- 1024 с.: ил.

10.Касаткин И.А. Профессиональное программирование на языке Си. В 3т. Минск: Выш. шк., 1993.

11.Керниган Б., Ритчи Д. Язык программирования Си. -М.: Финансы и Статистика, 1992.

12.Кушниренко А.Г., Лебедев Г.В. Основы информатики и вычислительной техники. М.: Просвещение, 1990.

13.Лукас П. С++ под рукой. -Киев НИПО «ДиаСофт», 1993.

14.Липпман С. Б. С++ для начинающих: Пер. с англ.- М.: Унитех; Рязань: Гэлион, 1993.- Т. 1.- 304 с.; Т. 2.- 345 с.

15.Неформальное введение в С++ и Turbo Vision: Пер. с англ.- Санкт-Петербург: Галерея "ПЕТРОПОЛЬ", 1992, 384 с.

16.От Си к Си++ / Е. И. Козелл, Л. М. Романовская, Т. В. Русс и др.- М.: Финансы и статистика, 1993.- 272 с.

17.Пол Ирэ. ООП с использованием С++: Пер. с англ./ Киев: НИПО «ДиаСофт Лтд.», 1995.-480с.

18.Романов В. Ю. Программирование на языке С++. Практический подход.- М.: Компьютер, 1993.- 160 с.

19.Рассохин Д. Н. От Си к Си++.- М.: ЭДЭЛЬ, 1993.- 128 с.

20.Страуструп Б. Язык программирования Си++: Пер. с англ.- М.: Радио и связь, 1991.- 352 с.

21.Страуструп Б. Язык программирования Си++. Второе издание : Пер. с англ.- Киев: ДиаСофт, 1993. Часть 1.- 264 с. Часть 2.- 296 с.

22.Уэйт М., Прата С., Мартин Д. Язык Си. -М.: Мир, 1988.

23.Шнайберг Л.Л., Гончаров М.В. Справочное руководство по основам информатики и вычислительной техники. -М.: Финансы и статистика; Компьютерпресс, 1990.

24.Эллис М., Страуструп Б. Справочное руководство по языку программирования С++ с комментариями. Проект стандарта ANSI: Пер. с англ.- М.: Мир, 1992.- 445 с.








Дата добавления: 2017-01-29; просмотров: 673;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.032 сек.