Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите найти ошибку в очень простой программе
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Neon6868
Надо написать программу расчёта по 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
Цитата(Neon6868 @ 22.03.2007 20:06) *
И как можно сделать, чтобы предложение ввести значение а начиналось с новой строки??? !help.gif
Проверь формулы...
Алена
Neon6868,
как ты думаешь, чему будет равно вычисление 3/8*pi по твоему методу?
Попробуй сначала ответить сам, а потом добавить вот это:
printf("\n%f", 3/8*pi)
, чтобы проверить правильно или нет... Не догадаешься почему это происходит - объясню...
Neon6868
Я исправил, но всё равно программа неправильно считает значения выражения.
Вот программа:
#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);
}
Алена
Да приведи же формулы-то сами... Что ты высчитываешь?
at0m
ты в курсе что там в радианах считается ? ))
Neon6868
Цитата(Алена @ 23.03.2007 0:38) *

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


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

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

Да и в радианах он неправильно считает!Если ввести 1, то он выдаёт результат 0,33901. Я проверил на калькуляторе - там получилось 0,2975.
Алена
Цитата
Я проверил на калькуляторе - там получилось 0,2975.
Плохо проверил - у меня получилось как раз 0.33901 (в первой формуле, при A = 1), а во второй выходит 0.33900
at0m
Цитата
Я проверил на калькуляторе - там получилось 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
Я значит ошибся! huh.gif А как сделать чтобы результат выводился не в радианах, а в градусах??? Я результат умножил на (180/pi), но тогда ответ получается неправильный!!!!
at0m
вроде никак , запомни радианы круче ))
Neon6868
А если умножить на 180/pi, то разве результат получится не в градусах???
at0m
эээ , незнаю)) теоритически должны получиться
volvo
Цитата
разве результат получится не в градусах???
Умножить на 180/pi ЧТО? Аргумент тригонометрической функции? Тогда получишь вообще непонятно какой результат... Ибо sin/cos ждут параметра в радианах...

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

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