Небольшая программа по решению уравнений - C (СИ)
Формулировка задачи:
Здравствуйте.
Недавно начал изучать с++ , опыт в программировании только на паскале.
Вот написал прогу ,что смог исправил ,столкнулся с проблемой при возведении в степень - pow ,как исправить?
по паскалевски там должно быть так q=q0*e^(-r^2/r0^2)
h= (2*B*Tm*u/Ta)^(1/2)*e^(-Ta/2*Tm^2)
Может есть другой более легкий способ возведения в степень \извлечение корня.
Вот ошибки кот выдает Visual C++:
warning C4627: #include <stdio.h>: пропущен при поиске использования предкомпилированного заголовка
Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
warning C4627: #include <math.h>: пропущен при поиске использования предкомпилированного заголовка
Добавление директивы в "stdafx.h" или перестройка предкомпилированного заголовка
error C2064: результатом вычисления фрагмента не является функция, принимающая 2 аргументов ( это про pow )
error C2064: результатом вычисления фрагмента не является функция, принимающая 2 аргументов...
Заранее спасибо
#include <stdio.h> #include <math.h> #include "stdafx.h" int main() { double q=1,q0=2,e=3,r=4,r0=5; double A=0.5,t=2,p=1,c=2,h=3, Tn=4,Tm=5; double B=3,T=2,u=1,Ta=2; int i=0; while (i!=10) { q=q0*(pow (e,(-pow(r,2)/pow(r0,2)))); Tm=(A*q*t)/(p*c*h)+Tn ; h=pow ( ( 2*B*Tm*u/Ta*pow(e,-Ta/2*pow(T,2)) ) , (1*1.0/2) ); A=A+B*h; ++i; printf("Posle %d umpulsa\n", i); printf("Tolshina plenku = %f\n",h); printf("nogloshatelnaya sposobnostb=%f\n",A); } return 0; }
Решение задачи: «Небольшая программа по решению уравнений»
textual
Листинг программы
#include "stdafx.h" #include <stdio.h> #include "cmath" int main() { double q,q0=37000000000,e=2.718,r=0,r0=0.0000002; double A=0.5,t=0.00000001,p=7190,c=425,h0=0.00000006, Tn=293,Tm,b=80000000; double B=0.00003,u=0.00000001,Ta=32500; long double h; int i=0; while (r!=0.00004) { printf(" r=%d\n ", r); printf ("+---|----------------|----------+\n") ; printf (" | n | h | A |\n") ; printf (" |---|----------------|----------|\n") ; while (i!=10) { q=q0*(pow (e,(-pow(r,2)/pow(r0,2)))); Tm=(A*q*t)/(p*c*h0)+Tn ; h=pow((2*B*Tm*u/Ta),(1*1.0/2))*pow(e,(-1*Ta/(2*Tm))) ; A=A+b*h; ++i; printf(" | %d ", i); printf("| %+E",h); printf(" | %f |\n",A); } printf (" +----|----------------|----------+\n") ; r=r+0.000005; } scanf("%d",&q); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Объявляются переменные: q, q0, e, r, r0, A, t, p, c, h0, Tn, Tm, b, B, u, Ta
- Объявляется переменная h типа long double
- Объявляется переменная i типа int
- Задаются начальные значения переменных
- В цикле while выполняется условие, пока значение переменной r не станет равным 0.00004
- В цикле while выполняется условие, пока значение переменной i не станет равным 10
- Вычисляется значение переменной q
- Вычисляется значение переменной Tm
- Вычисляется значение переменной h
- Вычисляется значение переменной A
- Выводится значение переменной h, значение переменной A и номер i
- Увеличивается значение переменной i на 1
- Увеличивается значение переменной r на 0.000005
- Если значение переменной i равно 10, то выполнение программы завершается и выводится сообщение об ошибке
- Вводится значение переменной q с клавиатуры
- Программа возвращает 0, что означает успешное завершение работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д