Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 18:20   #1
uityu
Новичок
Джуниор
 
Регистрация: 27.10.2013
Сообщений: 1
По умолчанию Ошибка в работе программы

Это язык Си

Программа вычисляет сперва разность двух многочленов, а затем вычисляет значение разности при x=3.
1) Если степень одного многочлена больше/меньше степени другого, почему то разность считается только для коэффициентов меньшего многочлена.
2) Следовательно, сама разность при х=3 также не вычисляется, получается число -2147 ... .
Код:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <math.h>

#define N 100
#define M 100

int main()
{
int n, m; /*степени P(x) и Q(x) */
float p[N+1], /* коэф. P(x) */
q [M+1]; /* коэф. Q(x) */

int k; /* степень C(x) */
float c[N+M+1]; /*коэф. C(x) */
float x=3;

int s,
i; /* индекс */

int error;

do 
{ error=0;
printf("Vvedite stepen 1-go mnogochlena");
printf("(n>=0 i n<%d):\n", N);
scanf_s("%d", &n);
if (n<0 || n>N)
{ printf ("Vi oshiblis. Povtorite vvod. \n");
error=1;
}
}
while (error);

printf("Vvedite koefficienti 1-go mnogochlena:\n");
for(i=0; i<n+1; i++)
{
printf("\nP[%d]=", i);
scanf_s("%f", &p[i]);
}

do
{ error =0;
printf("Vvedite stepen 2-go mnogochlena");
printf("(m>0 i m<%d):\n)", M);
scanf_s("%d", &m);
if (m<0 || m>M)
{ printf("Vi oshiblis. Povtorite vvod. \n");
error=1;
}
}
while (error);

printf("Vvedite koefficienti 2-go mnogochlena:\n");
for (i=0; i<m+1; i++)
{
printf("\nQ[%d]=", i);
scanf_s("%f", &q[i]);
}

k=(n>m) ? m : n;
k=(n<m) ? n : m;

for (i=0; i<=k; i++)
c[i]=p[i]-q[i];

if (n>m)
for (i=k+1; i<=m; i++)
c[i]=p[i];
if (m>n)
for (i=k+1; i<=n; i++)
c[i]=q[i];


printf("Stepen mnogochlena C(x) =%d\n", k);
printf("Raznost mnogochlenov: \n");
for (i=0; i<k+1; i++)
printf("c[%d]=%f\n", i, c[i]);

for (i=0; i<k+1; i++)
s=0;
s=s+c[i]*(pow(x, i));

printf("Znachenie raznosty pri (x=3) =%d\n", s);

_getch();
return 0;
}
Заранее благодарю за помощь.

Если сложно исправить, может кто-нибудь сможет помочь с написанием рабочего? Очень срочно(

Последний раз редактировалось Stilet; 27.10.2013 в 19:55.
uityu вне форума Ответить с цитированием
Старый 28.10.2013, 05:53   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

Код:
for (i=0; i<k+1; i++)
s=0;
s=s+c[i]*(pow(x, i));
не понимаю зачем так? s=0 может должно быть до цикла?

Код:
k=(n>m) ? m : n;
k=(n<m) ? n : m;
можно же одну строку?
Код:
k=(n>m) ? m : n;
и тут
Код:
for (i=0; i<=k; i++)
c[i]=p[i]-q[i];

if (n>m)
for (i=k+1; i<=m; i++)
c[i]=p[i];
if (m>n)
for (i=k+1; i<=n; i++)
c[i]=q[i];
посчитали C[i] как разность,а потом тупо затерли значениями мночлена
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 28.10.2013 в 06:09.
SaLoKiN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка программы по работе с БД!? TeleSky БД в Delphi 5 14.09.2013 23:27
Ошибка при работе программы fordegans Общие вопросы Delphi 4 27.11.2012 01:00
Ошибка при работе программы ZaramothРещьфкфя Visual C++ 1 17.09.2012 21:48
ошибка в работе программы julia9311 Общие вопросы C/C++ 5 28.06.2012 03:18
Ошибка в работе программы Wefast Помощь студентам 1 25.12.2009 08:13