Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Помогите найти ошибку в очень простой программе

Автор: Neon6868 23.03.2007 0:06

Надо написать программу расчёта по 2 формулам!Результаты вычислений по 2 формулам должны совпадать! Прогу написал, но она неправильно считает значения выражений!И как можно сделать, чтобы предложение ввести значение а начиналось с новой строки??? !help.gif

#include <stdio.h>
#include <math.h>
# define pi 3.14115926
float z1, z2;
int main()
{ float a;
printf("Vvedite znachenie a : ");
scanf("%f", &a);
z1=cos(3/8*pi-a/4)*cos(3/8*pi-a/4)-cos(11/8*pi+a/4)*cos(11/8*pi+a/4);
z2=sqrt(2)/2*sin(a/2);
printf("z1=%8.5f z2=%8.5f",z1, z2);
}

Автор: Fanat 23.03.2007 1:25

Цитата(Neon6868 @ 22.03.2007 20:06) *
И как можно сделать, чтобы предложение ввести значение а начиналось с новой строки??? !help.gif
Проверь формулы...

Автор: Алена 23.03.2007 2:38

Neon6868,
как ты думаешь, чему будет равно вычисление 3/8*pi по твоему методу?
Попробуй сначала ответить сам, а потом добавить вот это:

printf("\n%f", 3/8*pi)
, чтобы проверить правильно или нет... Не догадаешься почему это происходит - объясню...

Автор: Neon6868 23.03.2007 4:25

Я исправил, но всё равно программа неправильно считает значения выражения.
Вот программа:

#include <stdio.h>
#include <math.h>
# define pi 3.14115926
float z1, z2;
int main()
{ float a;
printf("\n Vvedite znachenie a : ");
scanf("%f", &a);
z1=cos(3./8.*pi-a/4.)*cos(3./8.*pi-a/4.)-cos(11./8.*pi+a/4.)*cos(11./8.*pi+a/4.);
z2=sqrt(2.)/2.*sin(a/2.);
printf("z1=%8.5f z2=%8.5f",z1, z2);
}

Автор: Алена 23.03.2007 4:38

Да приведи же формулы-то сами... Что ты высчитываешь?

Автор: at0m 23.03.2007 19:04

ты в курсе что там в радианах считается ? ))

Автор: Neon6868 23.03.2007 21:00

Цитата(Алена @ 23.03.2007 0:38) *

Да приведи же формулы-то сами... Что ты высчитываешь?


Формулы внизу в файле!!! Надо делать 7 вариант!!!

А как сделать чтобы не в радианах считалось???

Да и в радианах он неправильно считает!Если ввести 1, то он выдаёт результат 0,33901. Я проверил на калькуляторе - там получилось 0,2975.


Эскизы прикрепленных изображений
Прикрепленное изображение

Автор: Алена 23.03.2007 21:49

Цитата
Я проверил на калькуляторе - там получилось 0,2975.
Плохо проверил - у меня получилось как раз 0.33901 (в первой формуле, при A = 1), а во второй выходит 0.33900

Автор: at0m 23.03.2007 21:52

Цитата
Я проверил на калькуляторе - там получилось 0,2975

хз как ты считал , пересчитай еще раз , я посчитал и в радианах получилось
0,3389928906764307611867536597567
Написал ее на Си , результат тоже что и в калькуляторе
#include<stdio.h>
#include <math.h>
#include <conio.h>
#define pi 3.14115926
void main()
{
float z1,z2,a,b,c;
clrscr();
printf("Vvedite znachenie A\n");
scanf("%f" , &a);
b = 3 * pi / 8 - a / 4 ;
c = 11 * pi / 8 + a / 4;
z1 = pow(cos(b),2) - pow(cos©,2);
z2 = sqrt(2)/2*sin(a/2);
printf("Z1 = %f \nZ2 = %f " , z1 , z2 ) ;

getch();
}

Автор: Neon6868 25.03.2007 16:59

Я значит ошибся! huh.gif А как сделать чтобы результат выводился не в радианах, а в градусах??? Я результат умножил на (180/pi), но тогда ответ получается неправильный!!!!

Автор: at0m 25.03.2007 21:17

вроде никак , запомни радианы круче ))

Автор: Neon6868 25.03.2007 21:34

А если умножить на 180/pi, то разве результат получится не в градусах???

Автор: at0m 25.03.2007 22:47

эээ , незнаю)) теоритически должны получиться

Автор: volvo 26.03.2007 17:44

Цитата
разве результат получится не в градусах???
Умножить на 180/pi ЧТО? Аргумент тригонометрической функции? Тогда получишь вообще непонятно какой результат... Ибо sin/cos ждут параметра в радианах...

Умножить результат выполнения sin(x) на 180/pi? Ты понимаешь, о чем ты говоришь? Это выходит, что синус или косинус чего-то может быть больше 1? Ложь. Не бывает такого.

Результат вообще получается не в градусах или радианах. Результат - это число. В градусах/радианах измеряются аргументы функций...