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

Найдите ошибку - C++

Восстановить пароль Регистрация
 
Cuda
0 / 0 / 0
Регистрация: 12.11.2011
Сообщений: 21
31.05.2012, 09:03     Найдите ошибку #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
#include <stdio.h>
#include <math.h>
void PrintPolynom(float *p, int n)
{
  for(int i=0;i<n;i++)
    printf("%+f x^%d",*(p+i),n-i-1);
  printf("\n");
}
main()
{
int N,M;
float *P;
float *Q;
printf("vvedite N");//степень многочлена P(x)
scanf("%d",&N);
P=new float [N];
printf("vvedite M");//степень многочлена Q(x)
scanf("%d",&M);
Q=new float [M];
float S[N-M+1];
for ( int i = 0; i < N; i ++ )
{
printf("Vvedite P[%d]> ", i );
scanf ("%f", &P[i]);//ввод P[i]
}
for ( int i = 0; i < M; i ++)
{
printf("Vvedite Q[%d]> ", i );
scanf ("%f", &Q[i]); // ввод Q[i]
}
  // выводим многочлены
  printf("P(x):\n");
  PrintPolynom(P,N);
  printf("Q(x):\n");
  PrintPolynom(Q,M);
  // деление
  for(int i=0;i<N-M+1;i++)
  {
    S[i]=P[i]/Q[0];
    for(int j=0;j<M;j++)
      P[i+j]-=S[i]*Q[j];
  }
  // выводим результат
  printf("\nresult:\n");
  PrintPolynom(S,N-M+1);
  // остаток
  printf("ostatok:\n");
  PrintPolynom(P+(N-M+1),M-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
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <math.h>
class F
{
public:
void PrintPolynom(float *p, int n);
void vvod_N();
void vvod_M();
void print();
void vvod_P();
void vvod_Q();
void del_pol();
int N,M, i,j;
float *P;
float *Q;
};
void F:: PrintPolynom(float *p, int n)
{
  for( i=0;i<n;i++)
    printf("%+f x^%d",*(p+i),n-i-1);
  printf("\n");
}
void F:: vvod_N()
{
printf("vvedite N");//степень многочлена P(x)
scanf("%d",&N);
}
void F:: vvod_M()
{
printf("vvedite M");//степень многочлена Q(x)
scanf("%d",&M);
}
void F::vvod_P()
{
for ( i = 0; i < N; i ++ )
{
printf("Vvedite P[%d]> ", i );
scanf ("%f", &P[i]);//ввод P[i]
}
}
void F::vvod_Q()
{
for ( i = 0; i < M; i ++)
{
printf("Vvedite Q[%d]> ", i );
scanf ("%f", &Q[i]); // ввод Q[i]
}
}
 void F::del_pol()
 {
     float S[N-M+1];
 // деление
  for( i=0;i<N-M+1;i++)
  {
    S[i]=P[i]/Q[0];
    for( j=0;j<M;j++)
      P[i+j]-=S[i]*Q[j];
  }
 }
 void F::print()
 {
     float S[N-M+1];
      // выводим результат
  printf("\nresult:\n");
  PrintPolynom(S,N-M+1);
  // остаток
  printf("ostatok:\n");
  PrintPolynom(P+(N-M+1),M-1);
 }
  main()
  {
  F f;
  f.vvod_N();
  f.P=new float [f.N];
  f.vvod_M();
  f.Q=new float [f.M];
  f.vvod_P();
  f.vvod_Q();
   // выводим многочлены
  printf("P(x):\n");
  f.PrintPolynom(f.P,f.N);
  printf("Q(x):\n");
  f.PrintPolynom(f.Q,f.M);
  f.del_pol();
  f.print();
  }
в первом коде здесь получается и результат верный и остаток:
C++
1
2
3
4
5
6
// выводим результат
  printf("\nresult:\n");
  PrintPolynom(S,N-M+1);
  // остаток
  printf("ostatok:\n");
  PrintPolynom(P+(N-M+1),M-1);
. а во втором коде(в классе) остаток считается верно но результат почему то обнуляется-показывает нули умноженные на x^n. подскажите пожалуйста где здесь может быть ошибка.

Добавлено через 9 часов 15 минут
все уже не надо. проблема решилась
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2012, 09:03     Найдите ошибку
Посмотрите здесь:

Найдите ошибку C++
найдите ошибку C++
C++ найдите ошибку
Найдите ошибку C++
C++ Найдите ошибку
C++ Найдите ошибку!
Найдите ошибку C++
C++ Найдите ошибку

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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