2014-08-28 1 views
-3

У меня есть программа, где я пытаюсь найти сумму биквадратов не х до н значенияпау (я, 4) в с давая ошибку времени выполнения

#include<stdio.h> 
#include<math.h> 
void main() 
{ 
    int a,i=1,sum=0; 
    scanf("%d",&a); 
    do 
    { 
     sum+=pow(i,4); 
     i++; 
    }while(i<=a); 
    printf("%d",sum); 
} 

Когда я бегу над ним дает ошибка времени выполнения«Плавающая точка: переполнение стека» Я хочу использовать только функцию pow(). Если я использую (i * i * i * i), он будет работать вместо этого. Я использую turbo C++ 4.5, а ошибка показана в то время как трассировка с использованием f7. ПОЖАЛУЙСТА ПОМОГИ!

+2

Какое наименьшее значение 'a', которое ломается? – Bathsheba

+0

Insure 'a' установлен как ожидалось. 'if (1! = scanf ("% d ", & a)) Error();'. – chux

+1

Не могли бы вы рассказать нам, что вы ввели для 'a'? – doctorlove

ответ

0

вы должны сделать main() возвращая int: int main(void)

http://ideone.com/7HVbGv

здесь вы можете увидеть, что ваша программа работает. если вы измените его на void main() и удалите return 0;, вы получите ошибку времени выполнения в конце основного.

Вы также должны искать современный компилятор. Turbo C++ 4.5 - 20 лет.

http://en.wikipedia.org/wiki/Turbo_C%2B%2B даже Википедия говорит Turbo C++ was a C++ compiler... и не Turbo C++ is a C++ compiler...

+0

как я могу поместить изображение здесь в комментарий, .. я хотел вставить выходные изображения. – snk

+0

@ user2714940 Вы не можете. И не делай этого. Опубликуйте сообщение об ошибке/выходе в своем сообщении, а не отправляйте изображения –

+0

спасибо, ... это правильно! я новичок и не знал этого! но я не могу проголосовать за ans, так как у меня нет 15 репутаций, поэтому я добавил ответ. – snk

0

Спасибо всем за ответы! он просто менял на int main() в онлайн-компиляторе, но в turbo C++ возникла некоторая проблема с математической библиотекой.

+0

«это просто изменилось на int main() в онлайн-компиляторе» и ваш комментарий «Нет, сэр!» Я скопировал код из этого блока и выполнил код. " несовместимы. Пожалуйста, дополните. – chux

0

Вы пробовали это sum + = ((int) pow (i, 4)); вместо sum + = pow (i, 4);