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

дз 1 семестр / ДЗ 6

.docx
Скачиваний:
0
Добавлен:
11.05.2024
Размер:
262.65 Кб
Скачать

Домашняя работа №6

Задание 1

Условие задачи:

Оптимизировать алгоритм для примера 2, объединяя вычисление суммы и факториала. Отладить программу.

Схема алгоритма:

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

#include <iostream>

#include <math.h>

#include <conio.h>

using namespace std;

float func(int* mas, int size)

{

float fact = 1;

float sum = 0;

for (int i = 0; i < size; i++) {

sum += mas[i];

fact *= (i + 1);

}

return sum / fact;

}

int main()

{

int A[5]{ 4, 6, 7, 1, 3 };

int B[7]{ 5, 2, 8, 1, 9, 3, 4 };

float a = func(A, 5);

float b = func(B, 7);

cout << a + b;

_getch();

return 0;

}

Результаты выполнения программы:

Задание 2

Условие задачи:

Разработать программы для примера 3: а) через 3 функции; б) через 2 функции (главную и объединив нахождение «Max» и «Min» в одной подпрограмме).

Схема алгоритма:

a )

б)

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

а)

#include <iostream>

#include <math.h>

#include <conio.h>

#include <locale.h>

using namespace std;

float max(int x, int y, int z)

{

float mx = 0;

if (x > y) mx = x;

else mx = y;

if (z > mx) mx = z;

return mx;

}

float min(int x, int y, int z)

{

float mn = 1000000;

if (x < y) mn = x;

else mn = y;

if (z < mn) mn = z;

return mn;

}

int main()

{

setlocale(LC_ALL, "ru");

int x, y, z, a, d, e;

float w;

cout << "Введите x,y,z" << endl;

cin >> x >> y >> z;

cout << "Введите a,d,e" << endl;

cin >> a >> d >> e;

w = ((max(x, y, z) - min(x, y, z))) / ((max(a, d, e) - min(a, d, e)));

cout << w;

_getch();

return 0;

}

б)

#include <iostream>

#include <locale.h>

#include <math.h>

#include <conio.h>

using namespace std;

float mm(int* max, int x, int y, int z) {

float mx = 0, mn = 100000;

if (x > y) {

(*max) = x;

mn = y;

}

else {

(*max) = y;

mn = x;

}

if (z > mx) (*max) = z;

if (z < mn) mn = z;

return mx;

}

int main() {

setlocale(LC_ALL, "ru");

int x, y, z, a, d, e, max1, max2, min1 = 0, min2 = 0;

float w, h;

cout << "Введите x,y,z" << endl;

cin >> x >> y >> z;

cout << "Введите a,d,e" << endl;

cin >> a >> d >> e;

min1 = mm(&max1, x, y, z);

min2 = mm(&max2, a, d, e);

w = (max1 - min1) / (max2 - min2);

printf("Ответ %4f", w);

_getch();

return 0;

}

Результаты выполнения программы:

а ) ввввввввввв ввввб)

Задание 3

Условие задачи:

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

Схема алгоритма:

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

#include <stdio.h>

#include <locale.h>

#include <conio.h>

#include <math.h>

void cel(int x, int c)

{

if (x == 0) return;

cel(x / c, c);

printf("%i", x % c);

}

int drob(float x, int c)

{

static int i = 0;

if (i > 6) return(0);

x = x * c;

printf("%i", int(x));

x = x - int(x);

i++;

drob(x, c);

}

void main()

{

setlocale(LC_ALL, "ru");

float x;

int c;

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

scanf_s("%i", &c);

printf("Введите десятичную дробь: ");

scanf_s("%f", &x);

cel(int(x), c);

printf(",");

drob(x - int(x), c);

_getch();

}

Результаты выполнения программы:

Задание 4

Условие задачи:

Разработать алгоритмы и отладить программы для моделирования сложения чисел в двоичной системе счисления (числа представить массивами A, B, C (результат) из нулей и единиц), т.е. сложить 2 массива по 6 элементов из «0» и «1» по правилам двоичной арифметики.

Схема алгоритма:

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

#include <iostream>

#include <conio.h>

using namespace std;

int main()

{

int A[6] = { 1,1,0,1,0,0 };

int B[6] = { 1,0,1,1,0,1 };

int i, k, p = 0, C[7]{}, n = 6;

for (i = n - 1; i >= 0; i--)

{

k = A[i] + B[i] + p;

C[i + 1] = k % 2;

p = k / 2;

}

if (p > 0) C[0] = p;

for (i = 1; i < 7; i++)

{

cout << C[i];

}

_getch();

return 0;

}

Результаты выполнения программы:

Соседние файлы в папке дз 1 семестр