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

Пустовалова 2 сем / Лабы / Otchet_Лабораторная работа

.docx
Скачиваний:
97
Добавлен:
29.04.2018
Размер:
545.1 Кб
Скачать

1-ФИТ-6 Пахолко Алёна 14 вариант

Лабораторная работа № 1. Способы представления алгоритмов

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

1. В приложении Word разработать словесно-формульное описание и блок-схему алгоритма в соответствии с 14 вариантом для решения задачи из таблицы. Все блоки схемы должны иметь одинаковую ширину. В схеме использовать нумерацию блоков (в разрыве верхней линии слева) и соединители.

Существуют действительные числа y1, x2, y2. Вычислить min(y1+x2y2, y1+x2+y2, y2)+5.

2. В соответствии со своим вариантом разработать словесно-формульное описание и блок-схему алгоритма для решения задачи из таблицы лабораторной работы № 4.

Для целого числа К от 1 до 9 напечатать фразу «мне К лет», учитывая при этом, что при некоторых значениях К слово «лет» надо заменить на слово «год» или «года».

Лабораторная работа № 2. Основные элементы языка С++. MS Visual Studio 2015

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

.1. В таблице ниже приведены условия задач. В соответствии с вариантом, номер которого определяет преподаватель, разработать программу для задачи. Опробовать работу программы и проанализировать результаты. Возможны ситуации, когда исходные данные заданы некорректно и при выполнении программы возникают ошибки (деление на ноль, корень из отрицательного числа и т. п.). В таком случае надо выполнить программу с другими исходными данными.

#include <iostream>

#include <iomanip>

#include <cmath>

#include <conio.h>

using namespace std;

int main()

{

double a = 1.5, b = (-8.1), j = 4, t = 4e-8, s, w, v;

s = sqrt(t*a / (t + 1)) + 4 * exp(2 * b);

w = s*a / (1 + 0.1*a);

v = s + j*sqrt(a*a + b*b);

cout << " s=" << s;

cout << " w=" << w;

cout << " v=" << v;

cout << " ";

_getch();

return 0;

}

2. К номеру своего варианта прибавить 3 и написать программу для новых исходных данных (для вариантов с 14 по 16 перейти к вариантам с 1 по 3). Проверить выполнение программы.

#include <iostream>

#include <cmath>

#include <conio.h>

using namespace std;

int main()

{

double k = 4, x = 2e-4, a = 8.1, t, u;

t = 2 * k / a + log(2 + x);

u = sqrt(k - 1) / (t + 1);

cout << " t=" << t;

cout << " u=" << u;

cout << " ";

_getch();

return 0;

}

Лабораторная работа № 3. Ввод и вывод информации

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

  1. В соответствии со своим вариантом написать программы по условиям, приведенным в таблице ниже. Использовать различные способы для ввода и вывода данных.

1. Нарисовать ромб ♦, закрашенный введенным символом.

#include <iostream>

#include <conio.h>

#include <iomanip>

using namespace std;

int main()

{

char c, probel;

probel = ' ';

cout << "Enter symbol" << endl;

cin >> c;

cout << setw(31) << setfill(probel) << probel;

cout << setw(1) << setfill(c) << c << endl;

cout << setw(30) << setfill(probel) << probel;

cout << setw(3) << setfill(c) << c << endl;

cout << setw(29) << setfill(probel) << probel;

cout << setw(5) << setfill(c) << c << endl;

cout << setw(28) << setfill(probel) << probel;

cout << setw(7) << setfill(c) << c << endl;

cout << setw(27) << setfill(probel) << probel;

cout << setw(9) << setfill(c) << c << endl;

cout << setw(26) << setfill(probel) << probel;

cout << setw(11) << setfill(c) << c << endl;

cout << setw(25) << setfill(probel) << probel;

cout << setw(13) << setfill(c) << c << endl;

cout << setw(24) << setfill(probel) << probel;

cout << setw(15) << setfill(c) << c << endl;

cout << setw(25) << setfill(probel) << probel;

cout << setw(13) << setfill(c) << c << endl;

cout << setw(26) << setfill(probel) << probel;

cout << setw(11) << setfill(c) << c << endl;

cout << setw(27) << setfill(probel) << probel;

cout << setw(9) << setfill(c) << c << endl;

cout << setw(28) << setfill(probel) << probel;

cout << setw(7) << setfill(c) << c << endl;

cout << setw(29) << setfill(probel) << probel;

cout << setw(5) << setfill(c) << c << endl;

cout << setw(30) << setfill(probel) << probel;

cout << setw(3) << setfill(c) << c << endl;

cout << setw(31) << setfill(probel) << probel;

cout << setw(1) << setfill(c) << c << endl;

_getch();

return 0;

}

2. Автомобиль на каждом из пяти одинаковых по длине участках дороги шел с известной средней скоростью. Составьте алгоритм и программу для определения средней скорости на всем пути.

#include <iostream>

#include <conio.h>

int main()

{

using namespace std;

float s, v1, v2, v3, v4, v5, V;

cout << "Vvedite dlinu odnogo iz uchastkov puti:" << endl;

cin >> s;

cout << "Vvedite skorost' dlya kazhdogo uchastka puty:" << endl;

cin >> v1;

cin >> v2;

cin >> v3;

cin >> v4;

cin >> v5;

V = 5 / (1 / v1 + 1 / v2 + 1 / v3 + 1 / v4 + 1 / v5);

cout << "Srednyaya skorost' na vsyom puty:" << V << endl;

_getch();

return 0;

}

Лабораторная работа № 4. Разветвляющиеся программы

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

1.Написать и выполнить программу по первой блок-схеме лабораторной работы № 1.

Существуют действительные числа y1, x2, y2. Вычислить min(y1+x2y2, y1+x2+y2, y2)+5.

#include <iostream>

int main()

{

setlocale(LC_CTYPE, "Russian");

using namespace std;

float y1, y2, x2, O;

cout << "Введите у1 " << endl;

cin >> y1;

cout << "Введите у2 " << endl;

cin >> y2;

cout << "Введите х2 " << endl;

cin >> x2;

if (y1 <= y2){

if (x2 <= y1)

O = x2 + 5;

else

O = y1 + 5; }

else

{

if (x2 <= y2)

O = x2 + 5;

else

O = y2 + 5;

}

cout << "Ответ: " << O << endl;

return 0;

}

2. В соответствии со своим вариантом написать программу по условию, приведенному в таблице ниже.

Для целого числа К от 1 до 9 напечатать фразу «мне К лет», учитывая при этом, что при некоторых значениях К слово «лет» надо заменить на слово «год» или «года».

#include <iostream>

#include <conio.h>

#include <cmath>

using namespace std;

int main()

{

double n, m1;

m1:

cout << "Vvedite svoi vozrast: ";

cin >> n;

if (n < 2) cout << "Mne " << n << " god.";

else if (n < 5) cout << "Mne " << n << " goda.";

else if (n < 10) cout << "Mne " << n << " let.";

else

{

cout << "Proverte dannye! ";

goto m1;

}

_getch();

}

3. Написать программу, реализующую диалог на любую тему с использованием оператора switch.

Использование оператора switch

#include <iostream>

#include <cmath>

#include <conio.h>

using namespace std;

int main()

{

{ setlocale(LC_CTYPE, "Russian");

int k;

puts("Александра Дмитриевна? (1-да, 2-нет)");

cin >> k;

switch (k)

{

case 1:

{ puts("Как дела? (1- Хорошо, 2- Плохо, 3- Дела у прокурора, а у меня делишки)");

std::cin >> k;

switch (k)

{

case 1: puts("Рад за вас."); break;

case 2: puts("Это огорчает."); break;

case 3: puts("Дерзко, но мне нравится.");

break;

}

break;

}

case 2: puts("Александру Дмитриевну хочу!"); break;

default: puts("Некорректный вариант"); break;

}

return 0;

}

_getch();

return 0;

}

4.Разработать консольную программу-калькулятор для целых чисел с операциями %, /, +, -, *.

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "rus");

char zn;

double a, b, c;

int s;

do {

cout << "Введите выражение" << endl;

cin >> a >> zn >> b;

if (zn == '+'){

c = a + b;

cout << c << endl;

}

if (zn == '-')

{

c = a - b;

cout << c << endl;

}

if (zn == '*'){

c = a*b;

cout << c << endl;

}

if (zn == '/'){

if (b == 0){

cout << "Проверьте выражение. Деление на ноль запрещено. " << endl;

}

else{

c = a / b;

cout << c << endl;

}

}

if (zn == '%'){

c = a * 100 / b;

cout << c << endl;

}

/*cout << c << endl;*/

cout << "1. Прододжить вычисления" << endl;

cout << "2. Закончить вычисления " << endl;

cin >> s;

switch (s)

{

case 1:

break;

case 2:

break;

}

} while (s != 2);

return 0;

}

5.Возможно ли на прямоугольном участке застройки размером а на b метров разместить два дома размером в плане р на q и r на s метров? Дома можно располагать только параллельно сторонам участка.

#include <iostream>

using namespace std;

int main()

{ setlocale(LC_ALL, "rus");

float a, b, x, y, c, d, S1, S2, S3, S;

cout << "Введите длину участка." << endl;

cin >> a;

cout << "Введите ширину участка." << endl;

cin >> b;

cout << "Введите длину первого строения." << endl;

cin >> x;

cout << "Введите ширину первого строения" << endl;

cin >> y;

cout << "Введите длину второго строения" << endl;

cin >> c;

cout << "Введите ширину второго строения" << endl;

cin >> d;

S1 = a*b;

S2 = x*y;

S3 = c*d;

S = S3 + S2;

if (x <= a && c <= a &&y <= b && y <= b){

if (x <= b && c <= b && y <= a && d <= a){

if (S1 >= S)

cout << "Можно разместить эти дома на участке." << endl;

else

cout << "Нельзя разместить эти дома" << endl;

}

else

cout << "Нельзя разместить эти дома" << endl;

}

else

cout << "Нельзя разместить эти дома" << endl;

return(0);

}

6. Пройдет ли шар радиуса r через ромбообразное отверстие с диагоналями p и q?

#include <cmath>

#include <iostream>

using namespace std;

int main()

{

setlocale(LC_ALL, "rus");

double r, d, D, R;

do {

cout << "Введите размер большой диагонали ромба." << endl;

cin >> D;

cout << "Введите размер малой диагонали ромба." << endl;

cin >> d;

if (D < d) { cout << "Большая диагональ меньше малой. Проверьте данные. " << endl; }

} while (D < d);

cout << "Введите радиус шара." << endl;

cin >> r;

R = (d*D) / (4 * (sqrt(pow(d / 2, 2) + (pow(D / 2, 2)))));

if (R >= r)

cout << "Пройдет." << endl;

else

cout << "Не пройдет." << endl;

return 0;}

Лабораторная работа № 5. Циклические программы

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

1.В таблице приведены формулы и три варианта исходных данных, по которым надо разработать три блок-схемы и три циклические программы с одними и теми же расчетными формулами.

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

#include <iostream>

#include <cmath>

#include <conio.h>

void main()

{

using namespace std;

setlocale(LC_CTYPE, "rus");

float b = 2, j = 6, a = 1.5e8, i, y, t;

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

{

cout << "Vvedite i: ";

cin >> i;

y = a / (b + exp(b)) / (1 + j*i);

t = cos(y + 1) / sqrt(abs(-2 * j));

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

}

_getch();

}

i = 3(0,1)2

#include <iomanip>

#include <iostream>

#include <conio.h>

void main()

{

using namespace std;

float b = 2, j = 6, a = 1.5e8, t, y, i = 3;

do

{

y = a / (b + exp(b)) / (1 + j*i);

t = cos(y + 1) / sqrt(abs(-2 * j));

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

i -= 0.1;

} while (i >= 2);

_getch();

}

b = 2,4(0,2)3,

a = {0,1; 1; 3}

#include <iomanip>

#include <conio.h>

#include <iostream>

void main()

{

using namespace std;

float j = 6, i = 7, b=2.4, a, t, y;

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

{

cout << "Vvedite a: ";

cin >> a;

b = 2.4;

do

{

y = a / (b + exp(b)) / (1 + j*i);

t = cos(y + 1) / sqrt(abs(-2 * j));

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

b += 0.2;

} while (b <= 3);

}

_getch();

}

2. Торговая фирма в первый день работы реализовала товаров на P тыс. руб., а затем ежедневно увеличивала выручку на 3%. Какой будет выручка фирмы в тот день, когда она впервые превысит заданное значение Q? Сколько дней придется торговать фирме для достижения этого результата?

#include <iostream>

#include <cmath>

#include <conio.h>

int main()

{

using namespace std;

double q,p,n;

cout << "Vvedite P: ";

cin >> p;

cout << "Vvedite Q: ";

cin >> q;

n = 1;

do

{

p = 1.03*p;

n += 1;

} while (p <= q);

cout << "Nuzhno " << n << " dnei.";

_getch();

}

3. О каждом учащемся класса известны его пол, год рождения, рост и вес. Определить, сколько в классе мальчиков и сколько девочек. Найти средний возраст мальчиков и девочек. Определить, верно ли, что самый высокий мальчик весит больше всех в классе, а самая маленькая девочка является самой юной среди девочек.

#include <iostream>

#include <conio.h>

#include <cmath>

int main()

{

setlocale(LC_ALL, "rus");

using namespace std;

double a[5], b[5], c[5], d[5], q, w, e, r, n, k, vm, vd, svd, svm, maxr, maxv, minr, minv;

////////

for (int i = 0; i < 5; i++)//vvod dannyh//

{

cout << "Vvedite pol (1-m;2-d) №" << i << " : " << endl;

cin >> q;

a[i] = q;

cout << "Vvedite vozrast №"<<i<<" : "<<endl;

cin >> w;

b[i] = w;

cout << "Vvedite rost №" << i << " : " << endl;

cin >> e;

c[i] = e;

cout << "Vvedite ves №" << i << " : " << endl;

cin >> r;

d[i] = r;

}

/////////

k = 0;//schet m i d//

n = 0;

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

{

if (a[i] == 1) k += 1;

else n += 1;

}

cout << k << " mal'chikov i " << n << " devochek"<<endl;

////////

vm = 0;//svm i svd//

vd = 0;

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

{

if (a[i] == 1) vm += b[i];

else vd += b[i];

}

svd = vd / n;

svm = vm / k;

cout << "Sr. vozrast m: " << svm << endl;

cout << "Sr. vozrast d: " << svd << endl;

///////

maxr = 0;//max i min//

maxv = 0;

minr = 10000000000;

minv = 10000000000;

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

{

if (a[i] == 1)

{

if (c[i]>maxr) maxr = c[i];

if (d[i] > maxv) maxv = d[i];

}

else {

if (c[i]<minr) minr = c[i];

if (d[i]<minv) minv = d[i];

}

}

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

{

if ((c[i] == maxr) && (d[i] == maxv)) cout << "Mal'chik №" << i << endl;

if ((c[i] == minr) && (d[i] == minv)) cout << "Devochka №" << i << endl;

}

///////

_getch();

return 0;

}

Лабораторная работа № 6. Отладка программ

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

1.В соответствии со своим вариантом написать программу и отладить ее для задачи, представленной в таблице ниже. Опробовать средства интерактивной отладки Шаг с обходом и Шаг с заходом.

При наличии ошибок из-за некорректных исходных данных выполнить вычисления с другими числами. Вызвать окно Контрольное значение 1, поместить туда имена переменных и проконтролировать их значения в процессе выполнения программы.

В отчете представить результаты в окне Отладчика (окно Видимые и окно Контрольное значение 1).

#include <iostream>

#include <conio.h>

#include <cmath>

void main()

{

using namespace std;

double s = 5.2, j = 10.4e4, v, x;

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

{

cout << "Vvedite x: ";

cin >> x;

if (2 * s > x*j)

{

v = cos(j*x)*cos(j*x);

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

}

else if (2 * s < x*j)

{

v = 2 * tan(j*x);

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

}

else

{

v = 5 - exp(x / 2);

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

}

}

_getch();

}

2. В соответствии со своим вариантом написать программу и отладить ее для задачи, представленной в таблице ниже. Опробовать средства планируемой отладки. В отчете представить результаты в окне Отладчика (окно Локальные и окно Контрольное значение 1). Создать исполняемый файл.

Используя перебор значений, вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр.

#include<iostream>

#include <conio.h>

using namespace std;

void main()

{

int g, k, x1, x2, x3;

for (k = 100; k < 1000; k++)

{

g = k;

x3 = g % 10; g = g / 10;

x2 = g % 10; g = g / 10;

x1 = g;

if ((x1 != x2) && (x2 != x3) && (x3 != x1))

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

}

_getch();

}

Лабораторная работа № 7. Вычисление сумм, произведений, экстремумов

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

1.В соответствии со своим вариантом разработать программу по условию, приведенному в таблице ниже. Произвести отладку программы

#include <iostream>

#include <cmath>

#include <conio.h>

using namespace std;

void main()

{

double c=10.1, z, y[6], sum;

sum = 0;

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

{

cout << "Vvedite y[" << i << "]: ";

cin >> y[i];

sum += y[i];

}

if (sum > c) z = sin(c)*sin(c);

else z = cos(c)*cos(c);

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

_getch();

}

2. Написать программы еще для нескольких (желательно для всех) условий из этой же таблицы.

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

int const n = 5;

double sum = 0, d = 12.5e-4, a[n], h;

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

{

cout << "Vvedite a[" << i << "]:";

cin >> a[i];

sum += a[i] * a[i];

}

h = d + sum;

cout << "h=" << h;

_getch();

}

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

int const m = 4;

double c = -0.045, b[m], g, p=1;

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

{

cout << "Vvedite b[" << i << "]: ";

cin >> b[i];

p = p*(b[i] + 1)*(b[i] + 1);

}

g = c*p;

cout << "g=" << g;

_getch();

}

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

int const m = 5;

double sum = 0, z, x[m];

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

{

cout << "Vvedite x[" << i << "]: ";

cin >> x[i];

sum += (x[i] - 2)*(x[i] - 2);

}

z = 8 * x[3] + sum;

cout << "z=" << z;

_getch();

}

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

double g, sum = 0, f, k = 6, a[5];

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

{

cout << "Vvedite a[" << i << "]: ";

cin >> a[i];

sum += (a[i] / i);

}

while (k <= 7.00001)

{

f = k;

g = f / sum;

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

k += 0.2;

}

_getch();

}

Лабораторная работа № 8. Решение инженерных задач на основе циклических программ

Пахолко Алёна Степановна

1 курс ПОИТ-6

14 вариант

Задание

Условие/Данные

Решение

1. В соответствии со своим вариантом написать программы для вычисления определенного интеграла из таблицы, приведенной ниже, методом трапеций и методом парабол. Для всех вариантов принять n = 200. Сравнить результаты.

1.Метод трапеций

Подынтегральная функция

x4 + 4

Пределы интегрирования

a = 1, b = 4

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

double n=200, a=1,b=4,h,s,x ;

h = (b - a) / n;

x = a;

s = 0;

a1: s = s + h*((x*x*x*x + 4) + (((x + h)*(x + h)*(x + h)*(x + h) + 4))) / 2;

x = x + h;

if (x > (b - h)) cout << "s=" << s << endl;

else goto a1;

_getch();

}

1.2.Метод парабол

Подынтегральная функция

x4 + 4

Пределы интегрирования

a = 1, b = 4

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

double n = 200, a = 1, b = 4, h, x, s1, s2, i, z;

h = (b - a) / (2 * n);

x = a + 2 * h;

s1 = 0;

s2 = 0;

i = 1;

a1: s2 = s2 + (x*x*x*x + 4);

x = x + h;

s1 = s1 + (x*x*x*x + 4);

x = x + h;

i = i + 1;

if (i < n) goto a1;

else z = (h / 3)*((a*a*a*a + 4) + 4 * ((a + h)*(a + h)*(a + h)*(a + h) + 4) + 4 * s1 + 2 * s2 + (b*b*b*b + 4));

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

_getch();

}

2.В соответствии со своим вариантом отделить корни уравнения из таблицы, приведенной ниже. Если корней несколько, то для одного из отрезков, содержащих корень (т. е. при некоторых найденных значениях a и b), написать программы вычисления корня уравнения методом касательных и методом дихотомии. Точность вычислений принять равной e = 0,0001 для всех вариантов.

Найти корень уравнения с помощью приложения Excel.

Сравнить все результаты.

1.Метод дихотомии

Функция

x3 + 2x – 4

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

double a,b,e=0.0001,x;

cout << "Vvedite a:";

cin >> a;

cout << "Vvedite b:";

cin >> b;

a1: x = (a + b) / 2;

if (((x*x*x + 2 * x - 4)*(a*a*a + 2 * a - 4)) <= 0) b = x;

else a = x;

if (abs(a - b) > 2 * e) goto a1;

else cout << "x=" << x << endl;

_getch();

}

2.Метод касательных

Функция

x3 + 2x – 4

#include <iomanip>

#include <iostream>

#include <conio.h>

using namespace std;

void main()

{

double a, b, e = 0.0001, x1, x;

cout << "Vvedite a:";

cin >> a;

cout << "Vvedite b:";

cin >> b;

if ((pow(a, 3) + 2 * a - 4)*(6 * a) > 0) x1 = a;

else x1 = b;

a1: x = x1;

x1 = x - ((pow(x, 3) + 2 * x - 4) / (3 * pow(x, 2) + 2));

if (abs(x1 - x) > e) goto a1;

else cout << "x1=" << x << endl;

_getch();

}