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

1 семестр / Отчет Прога Лаба 1

.docx
Скачиваний:
1
Добавлен:
28.03.2025
Размер:
319.18 Кб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Факультет компьютерных технологий и информатики

Кафедра САПР

ОТЧЁТ

по лабораторной работе № 1

по дисциплине «Программирование»

Тема: «Вычисление значения полинома»

Студент группы

Преподаватель

Калмычков В.А.

Санкт-Петербург

2024

Содержание:

  1. Исходная формулировка программы. (стр.3)

  2. Цель работы. (стр.3)

  3. Анализ задания и устранение неясности и неточности. (стр.3)

  4. Математическая постановка задачи. (стр.3-4)

  5. Контрольные примеры. (стр.4-5)

  6. Ограничения. (стр.5)

  7. Разработка интерфейсов пользователя. (стр.5-6)

  8. Реализация ввода и вывода. (стр.6)

  9. Внутреннее представление данных в программе. (стр.6-7)

  10. Представление алгоритма. (стр,7)

  11. Код программы. (стр.7-9)

  12. Вывод программы. (стр.9)

  13. Общий вывод. (стр.9-10)

  1. Исходная формулировка программы.

Написать программу для вычисления частного от значений полиномов:

Представить программу в виде трех версий:

  1. Полно с помощью библиотек <iostream> и <iomanip>

  2. Коротко с помощь <iostream> и <iomanip>

  3. Полно с помощью библиотеки <stdio.h> и <stdlib.h>

  1. Цель работы.

– практическое использование вещественного типа данных,

– организация линейного процесса вычислений, изучение арифметических действий (их эффективное выполнение при расчете степени),

– изучение ввода-вывода с использованием разных библиотек, форматированный вывод,

– практическое использование символьного типа для формирования сообщений при организации пользовательского интерфейса

  1. Анализ задания и устранение неясности и неточности.

В ходе анализа заданий неясностей и неточностей не возникло.

  1. Математическая постановка задачи.

Дано: вводимое число вещественного типа.

Найти: разность значений полиномов:

P(x) = ( )

Q(x) = ( )

Способ решения: Разложение полиномов с помощью выноса за скобку x с самой маленькой степенью, пока в итоге не получим выражения:

+ 0,0002)

Особенности решения задачи на компьютере: Для вывода на экран значения полинома и промежуточного значения в первой версии программы отведено 10 позиций после запятой.

Организация: Программа просит пользователя ввести значение x. Выводятся промежуточные значения и результат вычислений.

Формат представления данных: Вводится вещественное значение x. В первой и второй версиях программы с помощью методов setw и setprecision библиотеки <iomanip> устанавливается формат вывода переменной x. В третьей программе формат вывода устанавливается с помощью "%20.10lf\n" библиотеки <stdio.h>.

Определение внутреннего формата представления данных: x(2,5), p1((3218.5325322 * x) + 6.54), p2((p1 * x) + 53.3424), p3(p2 * y * x), y(x*x), q1((-21.98 * y * x) + 25.3), q2((q1 * y * x) + 0.0002), q3(q2 * x), rez(p3 / q3) - переменные типа float. По введённому значению x находится промежуточное значения p3 и q3, а затем выводится rez - конечный результат работы алгоритма.

Описание алгоритма: Разложение полиномов с помощью выноса за скобку x с самой маленькой степенью, пока в итоге не получим выражения:

+ 0,0002)

  1. Контрольные примеры.

Код 1:

X = 2,5

Шаг 1:

Шаг 2:

Шаг 3:

Шаг 4:

Шаг 5:

Шаг 6:

Шаг 7:

Код 2:

X = 2,5

Шаг 1:

Шаг 2:

Шаг 3:

Код 3:

X = 2,5

Шаг 1:

Шаг 2:

Шаг 3:

Шаг 4:

Шаг 5:

Шаг 6:

Шаг 7:

  1. Ограничения.

По условию, введены ограничения .

  1. Разработка интерфейсов пользователя.

O1: Задание:

Автор:

группа: 4353

Ограничения:

Версия: 1.1.1

Дата: 04.09.2024 - не сейчас

O2: "Введите х от -10^20 до 10^20:"

I1: Тип переменных: вещественный(float), +\- ddd/d___d(10)

O3: i-й шаг: +\- d___d/d___d(10)

I2: Тип переменных: вещественный(float), +\- ddd/d___d(10)

O4: "Для x = " +\- d___d.d___d(10) . Результат: d___d.d___d(10)

  1. Реализация ввода и вывода.

Название библиотеки

Вывод чисел

Вывод текста

Переход к новой строке

Ввод

stdio

printf %s

printf %s

\n

scanf

Iostream

cout

cout

\n

cin

iomanip

setw

setprecision

  1. Внутреннее представление данных в программе.

    Имя

    Тип

    Назначение

    x

    float

    аргумент

    y

    p1,p2

    промежуточное значение полинома

    q1,q2

    промежуточное значение полинома

    p3

    результат полинома

    q3

    результат полинома

    rez

    частное полиномов

  2. Представление алгоритма

  1. Код программы.

/*

Задание: (3218,5325322x^5 + 53,3424x^3 + 6,54x^4) / (-21,98х^7 +25,3х^4 +0,0002х)

Автор:

Ограничения:

Версия: 1.1.1

Дата: 04.09.2024 - примерно в ночь с 04.09.2024 на 05.09.2024

*/

#include <iostream>

#include <iomanip>

#include <locale.h>

void main(void) {

setlocale(LC_ALL, "ru");

float x, p1, p2, p3, y, q1, q2, q3, rez;

std::cout << " Задание: (3218,5325322x^5 + 53,3424x^3 + 6,54x^4) / (-21,98х^7 +25,3х^4 +0,0002х) \n"

<< " Автор: \n Ограничения: \n Версия : 1.1.1 \n Дата : 04.09.2024 - не сейчас\n";

std::cout << " Введите х от -10^20 до 10^20:";

std::cin >> x;

y = x * x;

p1 = (3218.5325322 * x) + 6.54;

std::cout << "1й шаг:" << std::setw(20) << std::setprecision(10) << p1 << "\n";

p2 = (p1 * x) + 53.3424;

std::cout << "2й шаг:" << std::setw(20) << std::setprecision(10) << p2 << "\n";

p3 = (p2 * y * x);

std::cout << "3й шаг:" << std::setw(20) << std::setprecision(10) << p3 << "\n";

q1 = (-21.98 * y * x) + 25.3;

std::cout << "4й шаг:" << std::setw(20) << std::setprecision(10) << q1 << "\n";

q2 = (q1 * y * x) + 0.0002;

std::cout << "5й шаг:" << std::setw(20) << std::setprecision(10) << q2 << "\n";

q3 = q2 * x;

std::cout << "6й шаг:" << std::setw(20) << std::setprecision(10) << q3 << "\n";

rez = p3 / q3;

std::cout << "7й шаг:" << std::setw(20) << std::setprecision(10) << rez << "\n";}

/*

Задание: (3218,5325322x^5 + 53,3424x^3 + 6,54x^4) / (-21,98х^7 +25,3х^4 +0,0002х)

Автор:

Ограничения:

Версия: 1.2.1

Дата: ночь 05.09.2024 - не сейчас

*/

#include <iostream>

#include <iomanip>

#include <locale.h>

void main(void) {

setlocale(LC_ALL, "ru");

float x, y, p1, rez;

std::cout << " Задание: (3218,5325322x^5 + 53,3424x^3 + 6,54x^4) / (-21,98х^7 +25,3х^4 +0,0002х) \n"

<< " Автор: \n Ограничения: \n Версия : 1.2.1 \n Дата : 04.09.2024 - не сейчас";

std::cout << "Введите х от -10^20 до 10^20:"; std::cin >> x; y = x * x;

std::cout << std::setw(20) << std::setprecision(10) << ((((3218.5325322 * x) + 6.54) * x) + 53.3424) * (y * x) /

(((((-21.98 * (y * x)) + 25.3) * (y * x)) + 0.0002) * x);}

/*

Задание: (3218,5325322x^5 + 53,3424x^3 + 6,54x^4) / (-21,98х^7 +25,3х^4 +0,0002х)

Автор:

Ограничения:

Версия: 1.3.1

Дата: 06.09.2024 -

*/

#include <locale.h>

#include <stdio.h>

#include <stdlib.h>

void main(void) {

setlocale(LC_ALL, "Russian");

double x, p1, p2, p3, y, q1, q2, q3, rez;

printf("%s" ,"Задание: (3218,5325322x^5 + 53,3424x^3 + 6,54x^4) / (-21,98х^7 + 25,3х^4 + 0,0002х) \n Автор: \n Ограничения: \n Версия : 1.3.1 \n Дата : 07.09.2024 - не сейчас \n");

printf("%s","Введите х от -10^20 до 10^20:");

scanf_s("%lf", &x);

y = x * x;

p1 = (3218.5325322 * x) + 6.54;

printf("1й шаг:");

printf("%20.10lf\n",p1);

p2 = (p1 * x) + 53.3424;

printf("2й шаг:");

printf("%10.10lf\n", p2);

p3 = (p2 * y * x);

printf("3й шаг:");

printf("%10.10lf\n", p3);

q1 = (-21.98 * y * x) + 25.3;

printf("4й шаг:");

printf("%10.10lf\n", q1);

q2 = (q1 * y * x) + 0.0002;

printf("5й шаг:");

printf("%10.10lf\n", q2);

q3 = q2 * x;

printf("6й шаг:");

printf("%10.10lf\n", q3);

rez = p3 / q3;

printf("7й шаг:");

printf("%10.10lf\n", rez);}

  1. Вывод программы.

  1. Общий вывод.

В ходе выполнения лабораторной роботы были освоены библиотеки <iostream> , <iomanip>, <stdio.h>, <stdlib.h>, а также изучены основные конструкции языка С++. Получены практические навыки использования этого языка программирования для решения различных задач.