Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
#1

Функция с синусом. - C++

22.02.2011, 21:15. Просмотров 1033. Ответов 2
Метки нет (Все метки)

Ув. форумчане, требуется ваша помощь. Требуется рекурсивно решить такую задачу: есть ф-ция 1-син(х) вывести на экран значения этой функции в n точках. Точки получаем по след. алгоритму: получаем 2 числа: а<б делим б-а на n - узнаем шаг от а до след. точки. но, ф-ция неправильно считает синус. независимо от промежутка выдает первым результатом 0. а все остальные - абсолютно неправильно. Помогите, пожалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include "stdafx.h"
#include <iostream>
#include <Windows.h>
#include <stdio.h>
using namespace std;
#include <math.h>
long  double func(long  double &x,  long  double b, long  double h)
{
long  double y;
    if(x>=b) {Sleep(5500);return 0;}
        y=1-sin(x);
        x+=h;
        cout<<func(x,b,h)<<" ";
        return y;
}
void main()
{
    setlocale(LC_ALL, "Russian");
    long  double a,b,h,x;
    int n;
    cout<<"Программа рекурсивно вычисляет значения функции 'у=1-sin(x)'\n в n точках на промежутке [a,b].\n"<<"\nВведите нижнюю границу исследования функции 'a': ";
    cin>>a; 
    cout<<"\nВведите верхнюю границу исследования функции 'b': ";
    cin>>b;
    if(a>b){system("CLS");cout<<"Ой! Ошибка! 'а' должно быть меньше 'b'";Sleep(5500);return;}
    cout<<"\nВведите колличество точек для исследования: ";
    cin>>n;
    h=(b-a)/n;
    x=a;
    func(x,b,h);
    system("pause");
}
Добавлено через 2 часа 4 минуты

Не по теме:

ВРУ! Все правильно считает, только первый раз почему-то получается 0



Добавлено через 37 минут

Не по теме:

ВРУ! Все правильно считает, только первый раз почему-то получается 0
выполняется ветвь по иф икс равно б

Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2011, 21:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Функция с синусом. (C++):

Ошибка округления - Сумма с синусом - C++
Добрый день! Помогите пожалуйста понять в чем причина. При проверке кода на моем компьютере при вводе числа 1000, выдает корректный...

Функция удаления текста в скобках [2], непосредственно функция + 12кб вложений - C++
Доброго времени суток, случилось так, что пришлось работать с с-строками (лаба, угу), в которой нужно удалить весь текст в скобках,...

Функция sqrt: существует более одного экземпляра. Функция перегруженная - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; int main(){ float s, p; int c, a; s=0; ...

Перегрузка операций: friend-функция или функция-член класса - C++
Здравствуйте, меня интересует вопрос, в чем разница при перегрузке операторов через operator и friend. Вот к примеру такой код. class...

какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get() - C++
какую библиотеку надо подключать чтоб работала функция _getch() и функция cin.get()

что за функция такая strstr? или это не функция? - C++
void search(sp *list){ sp *prt = list; char f,r; cout&lt;&lt;Rus(&quot;введите текст&quot;)&lt;&lt;endl; cin&gt;&gt;f; cout&lt;&lt;Rus(&quot;введите выходной...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Байт
Эксперт C
15995 / 10263 / 1537
Регистрация: 24.12.2010
Сообщений: 19,354
22.02.2011, 21:20 #2
1. Попробуй x в функции сделать без амперсенда.
2. В любом случае вывода не происходит, пока все рекурсии не кончатся. Т.е. твоя прога выводит результаты с конца.
3. Попробуй печатать промежуточные x, y - может тогда и поймешь, в чем дело

Добавлено через 2 минуты
vaselo, Ну если ВРЕШЬ, тогда извини.
И прости за нескромность, на фига тебе сдалась здесь рекурсия?
vaselo
19 / 19 / 1
Регистрация: 17.10.2010
Сообщений: 247
22.02.2011, 21:24  [ТС] #3

Не по теме:

все, спасибо за ответ. разобрался. а рекурсия была по условию лабораторки. а выполняла действие прога из-за прихода к конечному условию выхода. только вот странно!: ввожу 1.2 4 точки. выводит 1 и 3 значения. не понятно, почему 1 выводится первым

ВСе, всем спасибо, тема закрыта
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2011, 21:24
Привет! Вот еще темы с ответами:

Чистая виртуальная функция функция не имеет оператора переопределения - C++
Пишу программу для записи заметок. Есть 2 класса: Page и Note. Note наследуется от Page. Page.h #pragma once ...

Создать производный класс, в котором реализована функция умножения вектора на число и функция сложения двух векторов - C++
Write программу с использованием класса Вектор (не без помощи форумчанина), но необходимо создать производный класс, в котором реализована...

Функция заполняющая массив и функция вывода массива - C++
Напишите две функции. Первая функция заполняет массив, вторая функция выводит массив на экран

Нужно сделать, чтобы программа состояла из 3 функций, тоесть 1-ая функция ввода массива, 2-ая основная функция, 3-я- вывод массива - C++
Есть программа #include &lt;iostream&gt; #include &lt;algorithm&gt; const int N = 5; int handSet(void) { int a; std::cout...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru