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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2011, 21:51   #1
ЛЕШЬ
 
Регистрация: 22.10.2011
Сообщений: 5
По умолчанию Примерчек на Си

Есть код (10^-7*ln|9*z^3|)+cos2*z^2/|z+1|^2+2*10^6):
Код:
#include <stdio.h>
#include <math.h>
void main(void)
{
	double z;
	double a1,a2,a3,a4,a5,a6,a7,chisl,b1,b2,b3,znam,result;
	printf("Введите значение z ");
	scanf("%lf",&z);
	printf("z=%f\n",z);
	a1 = pow(z,3);
	a2 = fabs(9*a1);
	a3 = log(a2);
	a4 = pow(10,-7)*a3;
	a5 = z*z;
	a6 = 2*a5;
	a7 = cos(a6);
	chisl = a4+a7;
	b1 = pow((fabs(z+1)),2);
	b2 = pow(10,6);
	b3= 2*b2;
	znam = b1+b3;
	result = chisl/znam;
	printf("Result1=%05f\n",result);
	result=(pow(10,-7)*log(fabs(9*pow(z,3))))+cos(2*pow(z,2))/(pow(fabs(z+1),2))+2*(pow(10,6));
	printf("Result2=%05f\n",result);
Не могу понять, почему результат операции result(chisl/znam)= 0.00000, ведь я считал на кальк-е, выходит 0.0045, а тут одни нули. Фигли?

Последний раз редактировалось Stilet; 22.10.2011 в 22:12.
ЛЕШЬ вне форума Ответить с цитированием
Старый 22.10.2011, 22:43   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Потому, что результат 4,045 E-7, а разрядность выводимого числа 5 знаков после запятой.
И функция main(void), пишется int main().
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 23.10.2011, 17:02   #3
ЛЕШЬ
 
Регистрация: 22.10.2011
Сообщений: 5
По умолчанию

К сожалению ничего не вышло, даже убрав из последних printf'ов разрядность и заменив main(void) на int main(). Вот что я имею ввиду:

Последний раз редактировалось ЛЕШЬ; 23.10.2011 в 17:09.
ЛЕШЬ вне форума Ответить с цитированием
Старый 23.10.2011, 17:10   #4
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Распечатайте в программе перед выражением result = chisl/znam; значение каждого из операндов chisl и znam и посмотрите их значения.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 23.10.2011, 18:13   #5
HeLiO
Пользователь
 
Регистрация: 28.12.2010
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Потому, что результат 4,045 E-7, а разрядность выводимого числа 5 знаков после запятой.
И функция main(void), пишется int main().
Кому от замены main(void) на int main () станет легче? похоже - только Вам
HeLiO вне форума Ответить с цитированием
Старый 23.10.2011, 18:16   #6
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от HeLiO Посмотреть сообщение
Кому от замены main(void) на int main () станет легче? похоже - только Вам
Станет легче всем людям, когда таких безграмотных, как вы, станет меньше!
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 24.10.2011, 21:02   #7
Val-li
Новичок
Джуниор
 
Регистрация: 24.10.2011
Сообщений: 3
По умолчанию

Попробуй вывести ответ вот так:
#include <iostream>
std::cout<<"Result1= "<< result<< std::endl;

std::cout<<"Result2= "<< result<< std::endl;
Точно должно получиться.
Val-li вне форума Ответить с цитированием
Старый 24.10.2011, 22:30   #8
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Сыроежка Посмотреть сообщение
Станет легче всем людям, когда таких безграмотных, как вы, станет меньше!
По моему тема называется "Примерчек на Си", а не "Примерчек на Си++"

По вашему глубокому убеждению, если в с++ main должно возвращать инт, то и в Си так же?

Конкретно по теме.

Замени строчку
printf("Result1=%0.5f\n",result);

на

printf("Result1=%0.10f\n",result);
kypck вне форума Ответить с цитированием
Старый 25.10.2011, 19:04   #9
Сыроежка
Форумчанин
 
Регистрация: 01.07.2011
Сообщений: 423
По умолчанию

Цитата:
Сообщение от kypck Посмотреть сообщение
По моему тема называется "Примерчек на Си", а не "Примерчек на Си++"

По вашему глубокому убеждению, если в с++ main должно возвращать инт, то и в Си так же?

Конкретно по теме.

Замени строчку
printf("Result1=%0.5f\n",result);

на

printf("Result1=%0.10f\n",result);

Проблема в том, что вы настолько безграмотны, что не знаете ни С++, ни С, но тем не менее лезете со своим невежеством учить других..

И в С++, и в С функция main должна иметь возвращаемое значение типа int, если программа запускается в операционной среде. Разница между С++ и С в этом вопросе состоит лишь в том, что в С++ можно не указывать void, если у main отсутствуют параметры, тогда как в С void нужно указывать обязательно. Пример:

Код С++
Код:
int main()
Код С

Код:
int main( void )
И, как вы выразились, мои "глубокие убеждения" базируются на стандартах С и С++, которых, как я понимаю, вы в жизни не видели.
Со мной можно встретиться на www.clipper.borda.ru
Сыроежка вне форума Ответить с цитированием
Старый 25.10.2011, 23:20   #10
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию

Извиняюсь за необдуманные выкрики. Перечитал стандарт. Вы правы.

Последний раз редактировалось kypck; 25.10.2011 в 23:30.
kypck вне форума Ответить с цитированием
Ответ


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