Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2023, 19:53   #1
SkarletSwordsMan
Новичок
Джуниор
 
Регистрация: 01.06.2023
Сообщений: 5
По умолчанию Ребят помогите написать 2 программы на c++

Задание 1. Вычислить и вывести на экран в виде таблицы значения функции, заданной с по-мощью ряда Тейлора, на интервале от xнач до xкон с шагом dx с точностью ε. Таблицу снабдить заголовком и шапкой. Каждая строка должна содержать значение аргу-мента, значение функции и количество просуммированных членов ряда. Пример по которому нужно сделать решение на картинке

Задание 2. Найти номер минимального по модулю элемента массива.1. Найти сумму модулей элементов массива, расположенных после первого отри-2. цательного элемента.Сжать массив, удалив из него все элементы, величина которых находится в ин-3. тервале [a, b]. Освободившиеся в конце массива элементы заполнить нулями
SkarletSwordsMan вне форума Ответить с цитированием
Старый 01.06.2023, 19:55   #2
SkarletSwordsMan
Новичок
Джуниор
 
Регистрация: 01.06.2023
Сообщений: 5
По умолчанию Задание 1

#include "pch.h"
#include <iostream>
#include <iomanip>
#include <cmath>

int main() {
setlocale(LC_CTYPE, "rus");

double xstart, xend, dx, eps;
std::cout << "Начальный X (|x| < 1) -> ";
std::cin >> xstart;
std::cout << "Конечный X (|x| < 1) -> ";
std::cin >> xend;
std::cout << "Шаг изменения X -> ";
std::cin >> dx;
std::cout << "Необходимая точность -> ";
std::cin >> eps;

std::cout << " ---- --------- ------------- -----\n";
std::cout << "| # | X | Y | N |\n";
std::cout << " ---- --------- ------------- -----\n";
int num = 1;
for (double x = xstart; x <= xend + 0.001; x += dx) {
double y = 0, ax = x;
int n = 2;
double ch = (2 * n + 1), zn = (2 * n);

while (fabs(ax) >= eps && n < 1000) {
y += ax;
++n;
ax = ch / zn * pow(n, 2);
}

std::cout << "| " << std::setw(2) << num << " | "
<< std::fixed << std::setw(7) << std::setprecision(3) << x << " | "
<< std::fixed << std::setw(11) << std::setprecision(5) << y << " | "
<< std::setw(3) << n << " |\n";
++num;
}
std::cout << " ---- --------- ------------- -----\n";

return 0;
}

Пример моего кода но тут не правильно указана формула
Изображения
Тип файла: png 1.PNG (1.4 Кб, 19 просмотров)

Последний раз редактировалось SkarletSwordsMan; 01.06.2023 в 20:23.
SkarletSwordsMan вне форума Ответить с цитированием
Старый 01.06.2023, 21:58   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Насколько помнит мой склезоз, функцию написал бы вроде так:
Код:
double form (double x,double eps)
{
double y,tmp,x2, m,n,znak ;
y = 1.0 ;
tmp=1.0 ;
x2=x*x;
znak = -1.0;
m = 1.0 ;
n = 2.0 ;
while ( (abs(tmp) > eps) && (m<1000) )
{ 
    tmp = tmp * (m / n) * x2 * znak ;
    y += tmp ;
    m += 2.0 ;
    n += 2.0 ;
   znak = -znak ;
}
return y
}
Люблю простые задачки
-------------------------------
Цитата:
отри-2. цательного .... ин-3. тервале
А вот это уже чересчур

Последний раз редактировалось digitalis; 01.06.2023 в 22:08.
digitalis вне форума Ответить с цитированием
Старый 01.06.2023, 22:25   #4
SkarletSwordsMan
Новичок
Джуниор
 
Регистрация: 01.06.2023
Сообщений: 5
По умолчанию

Не доконца разобрался почему идёт перемножение на znak

Последний раз редактировалось SkarletSwordsMan; 01.06.2023 в 22:40.
SkarletSwordsMan вне форума Ответить с цитированием
Старый 01.06.2023, 22:35   #5
SkarletSwordsMan
Новичок
Джуниор
 
Регистрация: 01.06.2023
Сообщений: 5
По умолчанию

digitalis, Не пойму как это внести в саму программу, не подскажите? и не знаете ли как сделать 2 задачу?
SkarletSwordsMan вне форума Ответить с цитированием
Старый 01.06.2023, 22:57   #6
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
Сообщение от SkarletSwordsMan Посмотреть сообщение
Не доконца разобрался почему идёт перемножение на znak
Потому что знак чередуется: плюс - минус.
Вставить код просто: описать функцию, как у меня, а в главной проге - вызов функции с параметрами: Х и допустимая погрешность. Можно без функции - впиндюрить код прямо в main
Вторую написал бы, но мне лень, да и нет у меня на компе ++, чтоб проверить.
Да и в жизни я ни разу не писал на С++

Последний раз редактировалось digitalis; 01.06.2023 в 23:00.
digitalis вне форума Ответить с цитированием
Старый 01.06.2023, 23:03   #7
SkarletSwordsMan
Новичок
Джуниор
 
Регистрация: 01.06.2023
Сообщений: 5
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Потому что знак чередуется: плюс - минус.
Вставить код просто: описать функцию, как у меня, а в главной проге - вызов функции с параметрами: Х и допустимая погрешность. Можно без функции - впиндюрить код прямо в main
Вторую написал бы, но мне лень, да и нет у меня на компе ++, чтоб проверить.
Да и в жизни я ни разу не писал на С++
))) Спасибо, а есть предложения по 2 задаче?
SkarletSwordsMan вне форума Ответить с цитированием
Старый 02.06.2023, 07:01   #8
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Задание 2. Найти номер минимального по модулю элемента массива.1. Найти сумму модулей элементов массива, расположенных после первого отри-2. цательного элемента.Сжать массив, удалив из него все элементы, величина которых находится в ин-3. тервале [a, b]. Освободившиеся в конце массива элементы заполнить нулями
Цитата:
а есть предложения по 2 задаче?
Да, но в виде описания алгоритма.

0. Генерируем массив через random.
Код:
Определяем размер массива и диапазон для чисел: N, min_mas, max_mas.
    В цикле по i от 1 до N  // N число элементов массива
         mas[i] = <тут функция для генерации>(min_mas, max_mas)
1. Номер миним. по модулю элемента:
Код:
a) i_min = 0; // Пусть первый элемент массива является минимальным.
b) В цикле по i от 1 до N  // N число элементов массива
    if (abs(mas[i]) < abs(mas[i_min])) то i_min = i;
2. Сумма модулей элементов массива, расположенных после первого отрицательного элемента:
Код:
a) В цикле по i от 0 до N  // ищем отрицательный элемент
     if (mas[i] < 0) {k = i; break;} // Сохранять i, если она не определена за телом цикла.
     S = 0;
     В цикле по i от k + 1 до N  // Находим сумму
              S = S + abs(mas[i]);
3. Сжать массив, удалив из него все элементы, величина которых находится в интервале [a, b]. Освободившиеся в конце массива элементы заполнить нулями
Код:
a) Получить значения для a и b. Думаю, что их можно просто задать без запроса.
    k = 0;  // Указатель на свободное место в массиве
    В цикле по i от 0 до N  // Просматриваем все элементы массива
         // Перемещаем влево, на свободное место, элементы, которые не попали в диапазон
         if (mas[i] > b or mas[i] < a) {mas[k] = mas[i]; k ++;}
    В цикле по i от k до N // Обнуляем последние элементы
         mas[i] = 0;
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ребят помогите написать программу Doni11 Общие вопросы Delphi 2 12.03.2016 10:56
Ребят помогите пожалуйста вставить код таймера в нужное место часть программы Настя69 Паскаль, Turbo Pascal, PascalABC.NET 0 26.11.2014 21:54
Ребят кто шарит надо написать программы xq1b Паскаль, Turbo Pascal, PascalABC.NET 7 20.10.2011 07:40
Ребят помогите мне написать программу Lena1990 Помощь студентам 1 22.11.2008 19:36