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

Непонятные ошибки - C++

Восстановить пароль Регистрация
 
chernyatinskiy
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 36
04.11.2013, 14:50     Непонятные ошибки #1
Доброго времени суток, при вводе данных программа начинает работать не исправно, помогите исправить ошибки.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <malloc.h>
 
double absolute(double);
double interpolate(int,int);
double _x(int);
double DeltaX, X0, X, Pprev, E;
double y(float), Result;
int main()
{
printf("Программа интерполяции по схеме Эйткена с заданной"); printf("точностью E.");
printf("\nИнтерполируемая функция: cos(x). Введите шаг: ");
  scanf("%lf", & DeltaX);
  printf("Введите начальное значение Х0: ");
  scanf("%lf", &X0);
  printf("Введите количество узлов интерполяции N: ");
  int N; scanf("%d", &N);
  y = (double*)malloc(N*sizeof(double));
  int i;
  for (i=0; i<N; i++) y[i] = (double)cos(X0+i*DeltaX);
  printf("Таблица значений заполнена.\n");
 
  while(1)
  {
    printf("Введите итерполируемый Х: ");
    scanf("%lf", &X);
    printf("Введите точность Е: ");
    scanf("%lf", &E);
    double Delta, DeltaPrev;
    for(i=0; i<(N-1); i++)
    {
      Result=interpolate(0, (i+1));
      if (i!=0) Delta=absolute(Pprev-Result);
      if (((Delta>=DeltaPrev)||(DeltaPrev<=E))&&(i>1))
        {
      printf("(!) Выход по условию. Хорошо."); 
      break;
    }
      DeltaPrev=Delta;
      Pprev=Result;
    }
    printf("\nРезультат: %lf, n=%d\n\n", Result, i);
  }
 
  free(y);
  return 0;
}
 
double absolute(double Value)
{
  if (Value < 0) Value*=-1;
  return Value;
}
 
double _x(int N)
{
  return(X0+N*DeltaX);
}
 
double interpolate(int i, int k)
{
  double P1, P2, P;
  if(i==k) return y[i];
  else
  {
    P1=interpolate((i+1), k);
    if (i==0) P2=Pprev;
    else P2=interpolate(i, (k-1));
 
    P=(P1*(X - _x(i))) - (P2*(X - _x(k)));
    P/=(_x(k) - _x(i));
  }
 
  return P;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2013, 14:50     Непонятные ошибки
Посмотрите здесь:

C++ непонятные ошибки
Непонятные ошибки(Linker Error) C++
C++ Непонятные ошибки
C++ Непонятные ошибки компиляции!!!!
C++ Непонятные ошибки в работе (системы счисления)
C++ Непонятные ошибки
C++ Непонятные ошибки линковщика
Непонятные ошибки компиляции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
04.11.2013, 16:39     Непонятные ошибки #2
считает что-то странное, но считает..
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
#include <malloc.h>
 
double absolute(double);
double interpolate(int,int);
double _x(int);
double DeltaX, X0, X, Pprev, E;
double *y, Result;
 
int main()
{
    setlocale(LC_ALL, "rus");
    printf("Программа интерполяции по схеме Эйткена с заданной"); printf("точностью E.");
    printf("\nИнтерполируемая функция: cos(x). Введите шаг: ");
    scanf("%lf", &DeltaX);
    printf("Введите начальное значение Х0: ");
    scanf("%lf", &X0);
    printf("Введите количество узлов интерполяции N: ");
    int N; scanf("%d", &N);
 
    y = (double*)malloc(N*sizeof(double));
    int i;
    for (i=0; i<N; i++) y[i] = (double)cos(X0+i*DeltaX);
    printf("Таблица значений заполнена.\n");
 
    //while(1)
    //{
        printf("Введите итерполируемый Х: ");
        scanf("%lf", &X);
        printf("Введите точность Е: ");
        scanf("%lf", &E);
        double Delta=DeltaX, DeltaPrev=DeltaX;
 
        for(i=0; i<(N-1); i++)
        {
            Result=interpolate(0, (i+1));
            if (i!=0) Delta=absolute(Pprev-Result);
            if (((Delta>=DeltaPrev)||(DeltaPrev<=E))&&(i>1))
            {
                printf("(!) Выход по условию. Хорошо."); 
                break;
            }
            DeltaPrev=Delta;
            Pprev=Result;
        }
        printf("\nРезультат: %lf, n=%d\n\n", Result, i);
    //}
 
    free(y);
    return 0;
}
 
double absolute(double Value)
{
    if (Value < 0) Value*=-1;
    return Value;
}
 
double _x(int N)
{
    return(X0+N*DeltaX);
}
 
double interpolate(int i, int k)
{
    double P1, P2, P;
    if(i==k) return y[i];
    else
    {
        P1=interpolate((i+1), k);
        if (i==0) P2=Pprev;
        else P2=interpolate(i, (k-1));
 
        P=(P1*(X - _x(i))) - (P2*(X - _x(k)));
        P/=(_x(k) - _x(i));
    }
 
    return P;
}
chernyatinskiy
0 / 0 / 0
Регистрация: 08.12.2012
Сообщений: 36
04.11.2013, 17:17  [ТС]     Непонятные ошибки #3
Какие значения вы вводили?
Yandex
Объявления
04.11.2013, 17:17     Непонятные ошибки
Ответ Создать тему
Опции темы

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