KR
.docxКФГБОУ ВО
Уфимский государственный авиационный технический университет
Кафедра ТК
ОТЧЕТ
по расчётно-графической работе
Тема «Программирование на языках высокого уровня»
Вариант № 17
Выполнил: студент гр. ИВТ-114
Балыбердин Н. А.
Проверил: доцент каф. ТК
Хасанов А.Ю.
Уфа 2017
Тема работы: Программирование на языках высокого уровня
Цель работы: Получение навыков работы с языками высокого уровня в языке С++.
Вариант № 17
Задание 1: Составить блок-схему алгоритма:
Код программы: Блок схема:
#include <iostream>
#include <conio.h>
#include <math.h>
#include <cmath>
#include <string.h>
using namespace std;
void input (double x[], int n)
{
for(int i=0;i<n;i++)
cin>>x[i];
}
void output (double x[], int n)
{
for(int i=0;i<n;i++)
cout<<x[i]<<" ";
}
void main()
{
i=0;
n; 11
int i, n;
double *a, *b, *c;
cout << "Введите размер: ";
cin >> n;
a = new double[n];
b = new double[n];
c = new double[n];
cout << "Введите элементы A: ";
input(a,n);
cout << "Введите элементы B: ";
input(b,n);
output(c,m)
for (i=0; i<n; i++)
c[i]= pow(a[i], 2) +a[i] * b[i]+pow(b[i],2);
output(c,n);
getch();
Конец
delete[]b;
delete[]c;
}
Задание 2: Написать псевдокод алгоритма решения задачи:
Лежит ли точка (x, y) на прямой ax+by+c=0.
Код программы:
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
double x, y ,a ,b, c;
cout << "Введите постоянные прямой:\nA=";
cin >> a; cout << "B="; cin >> b; cout << "C="; cin >>c;
cout << "Введите координаты точки x: ";
cin >> x;
cout << "Введите координаты точки y: ";
cin >> y;
if (a*x+b*y+c==0)
cout << "Точка лежит на прямой";
else
cout << "Точка не лежит на прямой";
getch();
}
Блок схема:
Пример работы программы:
Задание 3: Написать программу на С/С++ с использованием рекуррентных соотношений решения задачи:
Код программы: Блок-схема:
#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;
void main()
{
setlocale(LC_ALL,"rus");
long double x, s, p;
int k, n;
cout << "Введите количество элементов:\nn=";
cin >> n;
cout << "\nВведите x:\nx=";
cin >> x;
k=1;n;1
s=0;
for (k=1; k<=n; k++)
{
Возврат
p = p*((-1)*x)/ (3*k+1);
}
cout << "\nСумма элементов равна:\ns=" << s << endl;
getch();
}
P
= =
p*((-1)*x)/ (3*k+1);
Пример работы программы:
Задание 4: Написать программу на С/С++ решения задачи:
Текст программы:
#include<iostream>
#include<conio.h>
using namespace std;
void main()
{
setlocale(LC_ALL, "rus");
int **a, n, i, j, k, min, s;
cout << "Введите размер матрицы n " << endl << "n=";
cin >> n;
cout << endl;
cout << "Введите элементы: ";
cout << endl;
a = new int*[n];
for (i = 0; i<n; i++)
a[i] = new int[n];
for (i = 0; i<n; i++)
for (j = 0; j<n; j++)
{
cout << "a(" << i + 1 << "," << j + 1 << ")=";
cin >> a[i][j];
}
cout << endl;
cout << "Исходная матрица:\n";
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
cout << a[i][j] << " ";
cout << endl;
}
cout << endl;
cout << "Вывод результатов: \n";
i = 0; j = 0; s = 0;
for (j = 0; j<n; j++)
{
min = a[0][j];
for (i = 0; i<n; i++)
if (a[i][j]<min) min = a[i][j];
cout << "\nМинимальный элемент " << j + 1 << " столбца = " << min << " ";
s += min;
}
cout << endl;
cout << "\nСумма миниимальных элементов = " << s;
getch();
}
Блок-схема: Пример работы программы:
a[i]=new
int[n]
i=0; n; 1
j=0; n; 1
a[i][j]
1
i=0;n;1
a[i][j]< min
min=a[i][j]
min
s += min
s
Конец
1
Задание 5: Оформить в виде функции на С/С++ решения задачи:
Текст программы: Блок-схема:
# include <iostream>
#include <conio.h>
#include <math.h>
#include <cmath>
#include <string.h>
using namespace std;
void input(double x[], int n)
{
for (int i = 0; i<n; i++)
cin >> x[i];
}
void output(double x[], int n)
{
for (int i = 0; i<n; i++)
cout << x[i] << " ";
}
void main()
{
setlocale(LC_ALL, "rus");
int i, n;
double *a, *b, *c;
cout << "Введите размер: ";
cin >> n;
a = new double[n];
b = new double[n];
c = new double[n];
cout << "Введите элементы A: ";
input(a, n);
cout << "Введите элементы B: ";
input(b, n);
cout << "Массив С: ";
for (i = 0; i < n; i++)
c[i] = abs(a[i] + b[i]);
output(c, n);
getch();
delete[]a;
delete[]b;
delete[]c;
}
Пример работы программы:
Задание 6: Какое значение будет выведено при выполнении опереторов:
int a, b, *pa, *pb;
pa = &a;
pb = pa;
*pb = 1;
pb = &b;
*pb = 2;
cout << *pa<< " " << b;
Ответ: *pa = 1, b = 2.
Задание 7: Написать рекурсивную функцию вычисления количества отрицательных элементов массива
{ }, где i=1,2,..,n
Текст программы:
#include <iostream>
#include <math.h>
#include <conio.h>
#include <locale>
#include <stdio.h>
using namespace std;
void counter(int *x, int n, int k, int *pos)
{
if (k == n) return;
if (x[k]<0) (*pos)++;
counter(x, n, k + 1, pos);
}
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "rus");
int *a, i, n, k;
cout << "Введите размер массива: "; cin >> n; a = new int[n];
cout << "Введите массив: ";
for (i = 0; i<n; i++)
cin >> a[i];
k = 0;
counter(a, n, 0, &k);
cout << "Количество отриц. эл.=" << k;
getch();
delete[]a;
return 0;
}
Пример работы программы: