
ИТиУвТС / КР №1 ОАиП 16в оформленная в ворде
.docxЗАДАНИЕ №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 чисел. Выполнить в соот-ветствии с номером варианта индивидуальное задание и вывести на экран ис-ходные данные и полученный результат.
-
Преобразовать массив следующим образом: все отрицательные элемен-ты массива перенести в начало, сохранив исходное взаимное расположение, как среди отрицательных, так и среди остальных элементов массива.
Создание консольного приложения
#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. Память для массива выделить динами-чески. Выполнить в соответствии с номером варианта индивидуальное зада-ние и вывести на экран исходные данные и полученный результат.
-
Определить количество положительных элементов, расположенных ни-же побочной диагонали матрицы
Создание консольного приложения
#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;
}
Литература:
-
М. П. Батура, В. Л. Бусько, А. Г. Корбит, Т. М. Кривоносова - Основы алгоритмизации и программирования. Язык СИ
-
В.Л.Бусько, А.Г.Корбит, Т.М.Кривоносова - Конспект лекций по курсу основы алгоритмизации и программирования для студентов всех специальностей и всех форм обучения
-
Язык программирования C++. Вводный курс