Отчет по лабораторной работе №3



 

Постановка задачи

Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x), используя ее разложение в степенной ряд в двух случаях:

а) для заданного n;

б) для заданной точности e (e=0.0001).

Для сравнения найти точное значение функции.

 

Вариант задания

10

Программа решения

 

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <math.h>

#include <conio.h>

#include <iomanip.h>

#include <stdio.h>

#include <windows.h>

//---------------------------------------------------------------------------

 

#pragma argsused

float Y(float,float,int);

double SN(float,float,int);

double SE(float,float,int,double);

int main(int argc, char* argv[])

{

           char* rus(const char* text);

 

           cout << rus("                                   Вычисление функции \n\n");

           float a = 0.1;

           int b = 1;

           int k = 10;

           float x = 0.1;

           double e = 0.001;

           float step = (b-a)/k;

           int n = 0;

           while (x+step*n <= 1.09)

           {

           /*cout << setw(0) << "x=" << x+step*n << setw(10) << "Y=" << Y(x,step,n)

                          << setw(10) << "SN=" << SN(x,step,n)<< setw(10) << "SE=" << SE(x,step,n,e)

                          <<endl; */

           printf(" x=%f ", x+step*n );

           printf(" Y=%f ", Y(x,step,n) );

           printf(" SN=%f ", SN(x,step,n) );

           printf(" SE=%f\n ", SE(x,step,n,e) );

 

 

           n++;

           }

 

 

           getch();

           return 0;

}

           char bufrus[256];          //создать после тела программы

           char* rus(const char* text)

                          {

                                                          CharToOem(text,bufrus);

                                                          return bufrus;

                          }

 

double SE(float x, float step, int n, double e)

{

           double sum,an,anext;

           double zam = x + step*n;

           an = 1; // первый член ряда

           sum = an; // в сумму записываем первый член

           for (int i = 1; ; i++)

           {

                          if (an < e)

                          {

                                          return sum;

                          }

                          else

                          {

                                          anext = (-1)*an*(zam)/(2*i+1);

                                          sum = anext + sum;

                                          an = anext;

                          }

           }

}

 

float Y(float x, float step, int n)

{

double y = cos(x+step*n);

return y;

}

 

double SN(float x, float step,int n)

{

           double zam = x + step*n;

           double sum = 1;

           double an,ann;

           an = 1;

           for (int i = 1; i < 11; i++)

           {

                          ann = -an*zam/(2*i+1);

                          sum = ann + sum;

                          an = ann;

           }

return sum;

}

//---------------------------------------------------------------------------

 


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


Отчет по лабораторной работе №4

Постановка задачи

1)Сформировать одномерный массив целых чисел, используя датчик случайных чисел.

2)Распечатать полученный массив.

3)Удалить последний элемент равный 0.

4)Добавить после элемента массива с заданным индексом элемент со значением 100.

5)Распечатать полученный массив.

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

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

#include <conio.h>

#include <iostream.h>

#include <windows.h>

#include <stdlib.h>

#include <stdio.h>

#include <iomanip.h>

//---------------------------------------------------------------------------

 

#pragma argsused

char* rus(const char* text); //создать вначале прграммы

int one(int *,int&); // прототип функции

int three(int *, int&);

int four(int *, int&,int);

void show(int *, int&);

int main()

{

           const int N = 100;

           int chislo;

           int mas[N]; // создаем массив с заданным количеством элементов N

           printf (rus("      1)       Сформировать одномерный массив целых чисел,\n"));

           printf (rus("                     используя датчик случайных чисел.\n"));

           printf (rus("      2)       Распечатать полученный массив.\n\n"));

 

           printf(rus("       Укажите длину массива = "));

           cin >> chislo; // указываем количество элементов в массиве

           one(mas,chislo); // в функцию посылаем массив и число

           show(mas,chislo); // вывод результата

 

           cout << endl << endl;

           printf(rus("       3)       Удалить последний элемент равный 0.\n\n"));

           three(mas,chislo); // третья функция

           show(mas,chislo);

 

 

           cout << endl << endl;

           printf(rus("       4)       Добавить после элемента массива с заданным индексом\n"));

           printf(rus("       элемент со значением 100.\n"));

           printf(rus("       5) Распечатать полученный массив\n\n"));

 

           int pos;

           printf(rus("       ВВедите индекс элемента массива = "));

           cin >> pos; // вводим номер позиции массива

           four(mas,chislo,pos);

           show(mas,chislo);

 

 

           getch();

           return 0;

}

char bufrus[256];          //создать после тела программы

char* rus(const char* text)

                          {

                                                          CharToOem(text,bufrus);

                                                          return bufrus;

                          }

int one(int *mas, int& chislo1)

{

           randomize(); // создаем рандомные числа

           cout << endl;

           for (int i = 0; i < chislo1; i++) // запись в массив

           {

           mas[i] = random(10);

           }

 

           //return *mas;

}

int three(int *mas, int& chislo2)

{

           int copy[100]; // создаем массив копия

           int pos;

           for (int i = 0; i < chislo2; i++)

           { // в for определяем позицию последнего 0 в массиве

                          if (mas[i] == 0)

                          {

                                          pos = i;

                          }

           }

 

           for (int i = 0; i < chislo2-1; i++)

                          { // записываем в массив copy

                                          if (i >= pos)

                                          {

                                                          copy[i+1] = mas[i+1];

                                          }

                          }

           for (int i = 0; i < chislo2; i++)

           {

                          if (mas[i] == 0)

                          { // уменьшаем длину массива

                                          chislo2--;

                          }

 

           }

           for (int i = 0; i < chislo2; i++)

                          {

                                          if (i >= pos)

                                          { // запись в массив из массива copy

                                                          mas[i] = copy[i+1];

                                          }

                          }

 

 //return *mas;

}

int four(int *mas, int& chislo3,int pos)

{

 

 

           int copy[100]; // создаем массив copy

           /*if (pos == chislo3)

           {

           printf(rus("\n\tНельзя вводить число, совпадающее с размерностью массива\n"));

           }

           else

           { */

           for (int i = 0; i < chislo3; i++)

           {

                           if (i >= pos)

                           { // запись чисел после числа с определенной позицией

                                          copy[i] = mas[i];

                           }

           }

 

           for (int i = 0; i < chislo3; i++)

           {

                          if (i == pos)

                          {

                          mas[i] = 100; // запись в массив числа 100

                          }

           }

           chislo3++; // увеличиваем массив

           for (int i = 0; i < chislo3; i++)

           {

                          if (i >= pos + 1)

                          {

                           mas[i] = copy[i-1]; // заполняем массив

                          }

           }

           //}

           //return *mas;

}

void show(int *mas, int&chislo4)

{

           for (int i = 0; i < chislo4; i++)

                          {

                          //cout << *(mas + i) << setw(5);

                          printf(" %d", *(mas+i));

                          }

}

//---------------------------------------------------------------------------

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


Отчет по лабораторной работе №5

Постановка задачи

Используя функции, решить указанную в варианте задачу. Массив должен передаваться в функцию как параметр.

Вариант задания

Написать процедуру обмена столбца и строки двухмерного массива. С ее помощью поменять местами те строки и столбцы, первые элементы которых совпадают.

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

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

#include <iostream.h>

#include <conio.h>

#include <windows.h>

#include <stdlib.h>

#include <iomanip.h>

//---------------------------------------------------------------------------

 

#pragma argsused

char* rus(const char* text);

int** create(int **, int , int);

int** change(int **, int *, int* , int);

int** show(int **, int n);

int counter1(int **, int);

class Error

{

};

int main(int argc, char* argv[])

{

           /*

                          7.Написать процедуру обмена столбца и строки двухмерного массива.

                          С ее помощью поменять местами те строки и столбцы,

                          первые элементы которых совпадают.

        */

           int n; // размерность массива

           int choice; // наш выбор работы программы

           int *str = new int [n]; // создаем массивы под строки и столбцы

           int *temp2 = new int [n];

           int **mas = new int *[n]; // создаем указатель на указателе

 

           printf(rus("       Введите размерность массива: "));

           cin >> n; // размерность массива

           randomize();

 

           printf(rus("       Вы хотите сами ввести массив или чтобы он состоял\n"));

           printf(rus("       из случайных чисел?\n"));

           printf(rus("       1 = Сам\n\t0 = Случайно\n "));

           printf(rus("       Вы вводите: "));

           cin >> choice; // делаем выбор

           create(mas,n,choice); // ф-ия по созданию массива, в зависимости от выбора

 

           printf(rus("       Ваш массив:\n"));//выводим массив

           show(mas,n); // ф-ия по выводу массива

 

           counter1(mas,n); // подсчитаем кол-во строк и столбцов,

           // которые необходимо транспонировать

           printf(rus("\tКоличество транспонированных строк и столбцов = %d\n"),counter1(mas,n));

 

           change(mas,str,temp2,n); // ф-ия по замене строк и столбцов

           printf(rus("\tОбработанный массив:\n"));

           show(mas,n); // выводим массив

           // p.s. транспонирование выполняется сразу и последовательно

           // сначала меняем столбец, потом строку. *Замечание:

           // возможны случаи когда некоторые элементы перезаписываются.

delete []str;

           delete []temp2;

           delete []mas;

           getch();

           return 0;

}

int **create(int **mas, int n, int choice)

{

           try

           {

           if (choice == 1)

                          {

                          for (int i = 0; i < n; i++)

                          {

                                          int *temp = new int [n];

                                          for (int j = 0; j < n; j++)

                                          {

                                          cout <<"["<< i+1 << ","<< j+1 << "] = ";

                                          cin >> temp[j];

                                          }

                          mas[i] = temp;

                          }

 

                          }

           else if(choice == 0)

                          {

                          for (int i = 0; i < n; i++)

                          {

                                          int *temp = new int [n];

                                          for (int j = 0; j < n; j++)

                                          {

                                          temp[j] = random(5);

                                          }

                          mas[i] = temp;

                          }

                          }

           else

                          throw Error();

           }

 

           catch (Error)

           {

           printf(rus("       Некорректный ввод данных, следуйте инструкциям"));

           }

 

 

           return mas;

}

int **show(int **mas, int n)

{

for (int i = 0; i < n; i++)

           {

                          cout << "\t";

                          for (int j = 0; j < n; j++)

                          {

                                          cout << mas[i][j] << "    ";

                          }

                          cout << endl;

           }

           return mas;

}

int **change(int **mas, int *str, int *temp2, int n)

{

           // шагаем по матрице и ищем совпадения первых элементов

           for (int i = 0; i < n; i++)

           {

                          for (int j = 1; j < n; j++)

                          {

                                          if (mas[i][0] == mas[0][j]) // если нашли, то

                                          {

                                                          for (int s = 0; s < n; s++)

                                                          {

                                                          str[s] = mas[i][s]; // сохраняем строку

                                                          temp2[s] = mas[s][j]; // -//- столбец

 

                                                          mas[s][j] = str[s]; // транспонируем

                                                          mas[i][s] = temp2[s]; // транспонируем

                                                          }

                                          }

                          }

           }

 

           return mas;

}

int counter1(int **mas, int n)

{

           int counter = 0; // счетчик столбцов и строк

           for (int i = 0; i < n; i++)// определяем кол-во строк и столбцов

           // которые необходимо транспонировать

           {

                          for (int j = 1; j < n; j++)

                          {

                                          if (mas[i][0] == mas[0][j])

                                          {

                                                          counter++;

                                          }

                          }

           }

 

           return counter;

}

char bufrus[256];          //создать после тела программы

char* rus(const char* text)

                          {

                                                          CharToOem(text,bufrus);

                                                          return bufrus;

                          }

 

//---------------------------------------------------------------------------

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


Дата добавления: 2018-05-13; просмотров: 416; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!