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

Не вижу ошибку - C++

Войти
Регистрация
Восстановить пароль
 
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
19.08.2008, 21:37     Не вижу ошибку #1
Код
#include<iostream>
#include<math.h>
#include<iostream>
#include<math.h>

using namespace std;

int logarifm1(double *p1, double *p2, double *p3, double *p4)
{
     int am = 1;
     *p1 = (-1)*(*p2), *p3 = *p1;
            
            for(double n = 0; fabs(*p1) > *p4; n++) 
            {
            
            (*p1)*= ((-1)*(*p2))*(1/(n+1));
            (*p3)+=(*p1);
             am++ ;
            
            }     
   return am;  
}




int main() {
    
    double xn,xk,x,dx, y = 1.0 , eps, member;
    
    int  amm;
    printf ("Enter eps, xn, xk, dx \n");
    
    scanf("%fl%fl%fl%fl",eps, xn, xk, dx); // после этой инструкции прога вылетает
    
    printf ("+---------------------------------------+\n");
    printf ("| Calculation of function e(-x) with          |\n");
    printf ("| Teyhlor formula with given accurasy.     |\n");
    printf ("+---------------------------------------+\n");
    printf ("|X     |Y     |Amount calculated members  |\n");
    for(x=xn; x<xk ;x+=dx)  {
              
              logarifm1(&member, &x, &y, &eps);
              amm = logarifm1(&member, &x, &y, &eps);
              
    printf("+---------------------------------------+\n");
    printf("|%5.4fl|%5.4fl|%5d                    |\n" , x ,y , amm );
    }

    printf("+---------------------------------------+\n");
    
    system("pause");
    
    return 0;
    
}
Написал прогу, печатующую значения функции exp(-x) по формуле Тейлора, с заданной точностью, чтобы член ряда тейлора был не больше eps. Сначала прога работала, потом начала вылетать после указанной инструкции. DEV C++ 4.9.9.2 ошибки не находит; в чём дело понять не могу - либо глаз замылился, либо знаний не хватает...

Добавлено через 6 минут 27 секунд
Прога продублировалась... Чёрт, правка не работает
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
19.08.2008, 21:42     Не вижу ошибку #2
Цитата Сообщение от Счастливчик Посмотреть сообщение
Код
  scanf("%fl%fl%fl%fl",eps, xn, xk, dx); // после этой инструкции прога вылетает
аргументами scanf являются адреса переменных,в которые нужно производить запись. Ты передаешь значения переменных,сканф интерпретирует их как адреса для записи и записывает непойми куда. Да и в стеке программы происходит непойми что,т.к дабл имеет размер 8 байт, а указатель 4 байта,в результате вызов черррртовски некорректен. Вот правильный вариант:
Код
 scanf("%fl%fl%fl%fl",&eps, &xn, &xk, &dx);
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
19.08.2008, 21:45  [ТС]     Не вижу ошибку #3
Спасибо
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
19.08.2008, 21:56     Не вижу ошибку #4
Общий совет по такой теме : используй отладчик. Классная штука эти отладчики.
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
19.08.2008, 22:23  [ТС]     Не вижу ошибку #5
Прогоните кто нить через свой компилятор, ошибку я исправил, но всё равно не работает как надо. Делал через cout всё нормально, как стал через принтф и сканф делать, пошли ошибки; теперь мне кажется глюки компиллятора...
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
19.08.2008, 22:55     Не вижу ошибку #6
Вот,еще одна корректировка для scanf :
Код
 scanf("%lf %lf %lf %lf",&eps, &xn, &xk, &dx);
%lf вместо %fl
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
19.08.2008, 23:11  [ТС]     Не вижу ошибку #7
Всё, теперь точно работает, спасибо.
Просто_Юлия
133 / 45 / 2
Регистрация: 27.05.2008
Сообщений: 245
20.08.2008, 02:53     Не вижу ошибку #8
Дежа вю какое-то...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2008, 15:07     Не вижу ошибку
Еще ссылки по теме:

C++ Не вижу сообщения из цикла фор
C++ не вижу ошибки
найти ошибку? C++
C++ Не вижу последовательности
Исправить ошибку C++

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

Или воспользуйтесь поиском по форуму:
Счастливчик
19 / 18 / 0
Регистрация: 04.08.2008
Сообщений: 31
20.08.2008, 15:07  [ТС]     Не вижу ошибку #9
Цитата Сообщение от Просто_Юлия Посмотреть сообщение
Дежа вю какое-то...
Yandex
Объявления
20.08.2008, 15:07     Не вижу ошибку
Закрытая тема Создать тему
Опции темы

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