Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИТиУвТС / КР №1 ОАиП 16в оформленная в ворде

.docx
Скачиваний:
14
Добавлен:
01.04.2014
Размер:
225.31 Кб
Скачать

ЗАДАНИЕ №1.

Написать программу вычисления значения выражения при заданных ис-ходных данных. Сравнить полученное значение с указанным правильным ре-зультатом.

Создание консольного приложения

#include <iostream.h>

#include <math.h>

int main ()

{

double x,y,z,a,b,c,s;

cout<<"Vvedite:"<<endl;

cout<<"x=";

cin>>x;

cout<<"y=";

cin>>y;

cout<<"z=";

cin>>z;

a=2*cos(x-2./3);

b=1./2+pow(sin(y),2);

c=1+pow(z,2)/(3-pow(z,2)/5);

s=(a/b)*c;

cout<<"Result s=" <<s<<endl;

return 0;

}

ЗАДАНИЕ №2.

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

Создание консольного приложения

#include <stdio.h>

#include <math.h>

#include <conio.h>

void main(void)

{

double x, y, z, f_xy;

//vipolniaem proverku resheniy v cikle

while(1){

//Vvod dannix

printf("\n Vvedite x: ");

scanf("%lf", &x);

printf("\n Vvedite y: ");

scanf("%lf", &y);

f_xy = x*y;

//Vibor vetvi

if(f_xy>0){

z = pow(x+y,2)-pow(fabs(x),1/3);

printf("1 vetv. Result = %lf", z);}

else if(f_xy < 0){

z = pow(x+y,2)+sin(x);

printf("2 vetv. Result = %lf", z);}

else{

z = pow(x+y,2)+pow(x,3);

printf("3 vetv. Result = %lf", z);}

//Opredelenie nashatiya klavishi "Y" ili "y"

printf("\n Xotite Prodolzhit?? (Y/y)");

while(!kbhit());

if(((kbhit())&&getch()!=121)||((kbhit())&&getch()!=89)) break;

};

}

ЗАДАНИЕ №3.

Написать программу вывода на экран таблицы значений функции для x, изменяющегося от a = 0,1 до b = 1 с шагом h = 0,1.

Создание консольного приложения

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

int main ()

{

double y,x,a,b,h;

int n;

// Ввод исходных данных

do {

cout<<"Vvedite:"<<endl;

cout<<"a=";

cin>>a;

cout<<"b=";

cin>>b;

cout<<"h=";

cin>>h;

if (b <=a)

cout<<"Error: b <= a"<<endl;

}

while (b <= a);

cout<<"========================"<<endl;

// Вывод заголовка таблицы

cout<<setw(15)<<"x"<<setw(15)<<"y(x)"<<endl;

x=a; //начальное значение х

do

{

y =0;

for (n=1; n<=20; n++) // по условию n изменяется от 1 до 20

y+=pow(x,n-1)/(2*n+1);

cout<<setw(15)<<x<<setw(15)<<y<<endl; // вывод результата для текущего значения x

x+=h; // изменение х на величину h

} while (x <= b); // цикл продолжается до тех пор, пока х меньше или равен b

cout<<"========================"<<endl;

return 0;

}

ЗАДАНИЕ №4.

Ввести одномерный статический массив из k чисел. Выполнить в соот-ветствии с номером варианта индивидуальное задание и вывести на экран ис-ходные данные и полученный результат.

  1. Преобразовать массив следующим образом: все отрицательные элемен-ты массива перенести в начало, сохранив исходное взаимное расположение, как среди отрицательных, так и среди остальных элементов массива.

Создание консольного приложения

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

int main ()

{

int a [10], n, i, temp,k,z;

// Ввод исходных данных

n=0;

do {

cout<<"Vvedite razmer massiva (min=2, max = 10): ";

cin>>n;

if (n > 10 || n < 2)

cout<<"ERROR: n > 10 OR n < 2"<<endl;

} while(n > 10 || n < 2);

cout<<"Vvedite:"<<endl;

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

{

cout<<"a["<<i<<"]=";

cin>>a[i];

}

k=0;

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

{

if (a[i] < 0)

{

temp = a[i];

for (z =i; z>k; z--)

a[z] = a[z-1];

a[k++] = temp;

}

}

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

cout<<a[i]<<endl;

return 0;

}

ЗАДАНИЕ №5.

Ввести матрицу размером NxM. Память для массива выделить динами-чески. Выполнить в соответствии с номером варианта индивидуальное зада-ние и вывести на экран исходные данные и полученный результат.

  1. Определить количество положительных элементов, расположенных ни-же побочной диагонали матрицы

Создание консольного приложения

#include <iostream.h>

#include <iomanip.h>

int main ()

{

double **a;

int n,m,cnt,i,j,k;

// Ввод исходных данных

cout<<"Vvedite razmer matricy:): "<<endl;

cout<<"N =";

cin>>n;

cout<<"M =";

cin>>m;

a = new double *[n];//выделение памяти под массив указателей

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

a[i] = new double [m];//выделение памяти под строки матрицы

cout<<"Vvedite:"<<endl;

for (i=0; i< n; i++) //ввод данных

for (j=0; j< m; j++);

{

cout<<"a["<<i<<"]["<<j<<"]]=";

cin>>a[i][j];

}

cout<< "================================="<<endl;

cout << "Massiv A:"<<endl;

for (i=0; i< n; i++);//вывод массива

{

for (j=0; j< m; j++);

cout<<setw(9)<<a[i][j]<<" ";

cout<< endl;

}

k=1; //индекс начала проверки строк матрицы для последнего столбца,

//побочная диагональ начинается с нулевой строки,т.е. 1-я строка ниже побочной диагонали

cnt=0;

for (j = m-1; j >= 0; j--); //перемещаемся от последнего столбца к первому

{

for (i=k; i<n; i++); //проходим по всем строкам столбца, начиная с k-го.

{

if (a[i][j] >=0); //подсчитываем все значения больше или равные нулю

cnt++;

}

++k; //для следующего столбца увеличиваем номер строки

}

cout<<"Kolichestvo pologitelnyh = "<<cnt<<endl;

//освобождаем память

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

delete [] a[i];

delete []a;

a=NULL;

return 0;

}

ЗАДАНИЕ №8.

Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1 (см. лабораторную работу №3, табл. 3.1). Вычисление y(x) оформить в виде функции.

Создание консольного приложения

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

double Y (double);

typedef double (*uf)(double);

void tabl(double, double , double, uf);

int main ()

{

double a,b,h;

char c;

// Ввод исходных данных

do {

cout<<"Vvedite:"<<endl;

cout<<"a=";

cin>>a;

cout<<"b=";

cin>>b;

cout<<"h=";

cin>>h;

if (b <=a)

cout<<"Error: b <= a"<<endl;

}

while (b <= a);

cout<<"========================"<<endl;

// Вывод заголовка таблицы

cout<<setw(15)<<"x"<<setw(15)<<"y(x)"<<endl;

tabl(a,b,h,Y);

cout<<"========================"<<endl;

return 0;

}

void tabl(double a, double b, double h, uf sum)

{

double x,y;

x=a; //начальное значение х

do

{

y = sum(x);

cout<<setw(15)<<x<<setw(15)<<y<<endl; // вывод результата для текущего значения x

x+=h; // изменение х на величину h

} while (x <= b); // цикл продолжается до тех пор, пока х меньше или равен b

}

double Y (double x)

{

double y = 0;

for (int n=1; n<=20; n++) // по условию n изменяется от 1 до 20

y+=pow(x,n-1)/(2*n+1);

return y;

}

Литература:

  1. М. П. Батура, В. Л. Бусько, А. Г. Корбит, Т. М. Кривоносова - Основы алгоритмизации и программирования. Язык СИ

  2. В.Л.Бусько, А.Г.Корбит, Т.М.Кривоносова - Конспект лекций по курсу основы алгоритмизации и программирования для студентов всех специальностей и всех форм обучения

  3. Язык программирования C++. Вводный курс