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

проконсультируйте пожалуйста меня с программой: - C++

Восстановить пароль Регистрация
 
Ms Proger
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 77
07.12.2013, 18:54     проконсультируйте пожалуйста меня с программой: #1
у меня эта программа всё, вроде правильно, считает . Но: работает только тогда, когда ввожу икс: положительное и дробное. С отрицательными не хочет. Подскажите, в чем может быть проблема??
Сама суть программы такова:http://www.cyberforum.ru/attachment....1&d=1386427879 (вот здесь текст задачи, в ссылке). Код Программы следущий:
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
33
#include "stdafx.h"
#include "locale.h"
#include "math.h"
//float fact(int n)
//{
//float fact = 1;
//for(int i = 1; i <= n; i++)
//{
//fact *= i;
//}
//return fact;
//}
int _tmain(int argc, _TCHAR* argv[])
{ 
setlocale(LC_ALL, "russian");
double eps;
double x=1;
double n=1; 
eps= 0.0000001;
printf(" введи значение х = ");
scanf("%lf",&x);
double sum=1;
double f=x;
double fn=1;
while(abs(fn-f)>eps)
{
n++;
fn=f*x/n;
sum +=fn;
}
printf("и получается сумма = %lf",sum);
return 0;
}
Миниатюры
проконсультируйте пожалуйста меня с программой:  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
07.12.2013, 19:34     проконсультируйте пожалуйста меня с программой: #2
По мне , так этот код не делает, то для чего предназначен.
Вот некоторый расчет в Excel :
Миниатюры
проконсультируйте пожалуйста меня с программой:  
Ms Proger
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 77
07.12.2013, 20:31  [ТС]     проконсультируйте пожалуйста меня с программой: #3
как же тогда быть? с кодом программы?
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
08.12.2013, 10:48     проконсультируйте пожалуйста меня с программой: #4
Как то так
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 <locale.h>
#include <cmath>
#include <iostream>
#include <iomanip>
 
using namespace std;
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "russian");
    long double eps= 0.0000001;;
    long double x=1.;
    long double n=0.;
    long double sum=0.;
    long double f=1.;
    long double fn=1.;
 
   cout << " введи значение х = " ;
   cin >> x;
 
    while((long double)f/fn>eps)
    {
        n++;
        f=x*f;
        fn=n*fn;
        /// cout << setw(5) << n <<  setw(20) << f << setw(20) << fn <<  setw(20) <<  f/fn << endl; // ход вычислений
 
        sum+=f/fn;
    }
    cout << "и получается сумма = " << sum;
    return 0;
}
kuprin
0 / 0 / 0
Регистрация: 08.12.2013
Сообщений: 5
08.12.2013, 11:41     проконсультируйте пожалуйста меня с программой: #5
Помогите, у меня visual c++ 2008 express edition. Начало программы такое
#include "franca.h"
Куда надо положить файл franca.h чтобы компилятор его увидел?
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
08.12.2013, 11:55     проконсультируйте пожалуйста меня с программой: #6
В папку с исходником программы положи. Тока тему новую надо было создать.
kuprin
0 / 0 / 0
Регистрация: 08.12.2013
Сообщений: 5
08.12.2013, 12:00     проконсультируйте пожалуйста меня с программой: #7
Извиняюсь, вы можете подробней описать как это делается?
Ms Proger
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 77
08.12.2013, 12:23  [ТС]     проконсультируйте пожалуйста меня с программой: #8
что это такое и за что они отвечают?
1)#include <cmath> это библиотека отвечает за математические функции?
2)#include <iostream>??
3)#include <iomanip> поставлен потому что используется цикл while?
4)using namespace std; всегда используется с #include <iomanip>?
5) что это такое? cout << и cin >>? и setw??
если можно, поясните, пожалуйста)

и еще: при запуске этой программы, выводило ошибку: непредвиденный конец файла во время поиска предкомпилированного заголовка. Возможно, вы забыли добавить директиву "#include "StdAfx.h"" в источник."

я добавил эту библиотеку и программа запустилась. но отрицательные считает значения вот так: ввожу -1 - сумма равна -1, ввожу - 5 сумма = -5... подскажите, почему так?

Добавлено через 7 минут
Цитата Сообщение от chedman Посмотреть сообщение
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char* argv[])
{
* * setlocale(LC_ALL, "russian");
* * long double eps= 0.0000001;;
* * long double x=1.;
* * long double n=0.;
* * long double sum=0.;
* * long double f=1.;
* * long double fn=1.;
cout << " введи значение х = " ;
* *cin >> x;
while((long double)f/fn>eps)
* * {
* * * * n++;
* * * * f=x*f;
* * * * fn=n*fn;
* * * * /// cout << setw(5) << n << *setw(20) << f << setw(20) << fn << *setw(20) << *f/fn << endl; // ход вычислений
sum+=f/fn;
* * }
* * cout << "и получается сумма = " << sum;
* * return 0;
}
и еще скажите, почему f/fn>eps?? когда это же разность по-моему
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
08.12.2013, 13:38     проконсультируйте пожалуйста меня с программой: #9
f/fn - это член ряда, т.е. величина на которую происходит приращение.
поменяй
C++
1
while((long double)f/fn>eps)
на
C++
1
 while(fabs((long double)f/fn)>eps)
Добавлено через 2 минуты
Твоя первая программа на самом деле была на Си. В Си++ есть свои способы для организации ввода/вывода и для этого подключены, соответствующие файлы
C++
1
2
#include <iostream>
#include <iomanip>
Они нужны для использования объектов: std::cin и std::cout , а также манипулятора вывода setw().
Чтоб каждый раз не писать std:: перед cin, cout ... используют:
C++
1
using namespace std;
Добавлено через 9 минут
Если setw не хочешь использовать, то
C++
1
#include <iomanip>
удали.
Ms Proger
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 77
08.12.2013, 13:40  [ТС]     проконсультируйте пожалуйста меня с программой: #10
Цитата Сообщение от chedman Посмотреть сообщение
f/fn - это член ряда, т.е. величина на которую происходит приращение.
поменяй Код C++1
while((long double)f/fn>eps)на Код C++1
*while(fabs((long double)f/fn)>eps)
Большое спасибо, теперь кое-как начало считать отрицательные числа. Но вопрос еще такой: когда ввожу с клавиатуры икс=100 (например) - отображается следущее : -1,#IND что это? fabs что такое?
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
08.12.2013, 13:46     проконсультируйте пожалуйста меня с программой: #11
fabs() - это функция описанная в cmath или math.h , для определения модуля числа.
При 100 и др. больших значениях программа не может поместить в памяти, выделенной для хранения значений переменных результат вычислений.
В общем есть некий интервал для x в котором программа работает корректно.
Ms Proger
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 77
08.12.2013, 15:17  [ТС]     проконсультируйте пожалуйста меня с программой: #12
Цитата Сообщение от chedman Посмотреть сообщение
fabs() - это функция описанная в cmath или math.h , для определения модуля числа.
При 100 и др. больших значениях программа не может поместить в памяти, выделенной для хранения значений переменных результат вычислений.
спасибо Вам, огромное!

Добавлено через 1 час 27 минут
я извиняюсь, не могли бы вы пояснить еще, для чего это значит и какова ее суть ( в цикле)
f=x*f;
fn=n*fn;
chedman
80 / 79 / 2
Регистрация: 30.10.2013
Сообщений: 249
08.12.2013, 17:20     проконсультируйте пожалуйста меня с программой: #13
Цитата Сообщение от Ms Proger Посмотреть сообщение
f=x*f;
fn=n*fn;
первая считает x*x*x... , т.е. x^n
вторя факториал, т.е. 1*2*3 ... n
kuprin
0 / 0 / 0
Регистрация: 08.12.2013
Сообщений: 5
11.12.2013, 19:31     проконсультируйте пожалуйста меня с программой: #14
Программа для нахождения квадратного корня, чтобы не вводилось показывает 0. Что делать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
int main()
{
  setlocale(0,"")
;
        float b,a=b*b;
        cout<<"число корень которого надо найти";
        cin>>b;
        cout<<"корень";
        cout<<a;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 14:34     проконсультируйте пожалуйста меня с программой:
Еще ссылки по теме:

C++ У меня возникла проблема с программой, окно задерживается на 1 секунду и исчезает, на других версиях Microsoft Express тоже самое
Проконсультируйте пожалуйста C++

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

Или воспользуйтесь поиском по форуму:
Ms Proger
0 / 0 / 0
Регистрация: 07.12.2013
Сообщений: 77
12.12.2013, 14:34  [ТС]     проконсультируйте пожалуйста меня с программой: #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdafx.h>
#include <math.h>
#include <stdio.h>
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    double a,b;
    printf("a = ");
    scanf("%lf",&a);
    
    {
    b=sqrt(a);  
    printf("%lf",b);
    }
    return 0;
}
Добавлено через 6 минут
Цитата Сообщение от kuprin Посмотреть сообщение
Программа для нахождения квадратного корня, чтобы не вводилось показывает 0. Что делать?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdafx.h>
#include <math.h>
#include <stdio.h>
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    double a,b;
    printf("a = ");
    scanf("%lf",&a);
    
    {
    b=sqrt(a);  
    printf("%lf",b);
    }
    return 0;
}
Yandex
Объявления
12.12.2013, 14:34     проконсультируйте пожалуйста меня с программой:
Ответ Создать тему
Опции темы

Текущее время: 18:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru