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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.01.2012, 20:30   #1
serzav5
Новичок
Джуниор
 
Регистрация: 22.01.2012
Сообщений: 6
По умолчанию цикл не печатает Y 10 раз, в чем может быть проблема

Код:
#include <stdafx.h>
#include <iostream.h>
#include <math.h>
int main()
{
int x;
float y;
float  pi=3.14159;
for (x=1;x<11;x++);
{
y=tan(x+5+pow((pow(x,4)+6),0.5));
cout <<"y="<<y<<endl;}
return 0;
}

Последний раз редактировалось Stilet; 22.01.2012 в 20:52.
serzav5 вне форума Ответить с цитированием
Старый 22.01.2012, 20:37   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я бы это вообще не скомпилировал.
а уж про печать и подавно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.01.2012, 21:31   #3
FelixXXI
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 48
По умолчанию

1. Цикл заканчивается не начавшись - лишняя ;
2. хотя бы добавь точку после целых чисел pow(x,4.)
----------
3. зачем тебе число пи?
4. вторую фигурную скобку плохо видно - не читабельно...
FelixXXI вне форума Ответить с цитированием
Старый 22.01.2012, 21:57   #4
serzav5
Новичок
Джуниор
 
Регистрация: 22.01.2012
Сообщений: 6
По умолчанию

1. Цикл заканчивается не начавшись - лишняя ;

спасибо заработало!!!!!!!!!
serzav5 вне форума Ответить с цитированием
Старый 22.01.2012, 22:01   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от FelixXXI Посмотреть сообщение
2. хотя бы добавь точку после целых чисел pow(x,4.)
Ээээ, зачем?
_Bers вне форума Ответить с цитированием
Старый 22.01.2012, 22:40   #6
FelixXXI
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 48
По умолчанию

Цитата:
Ээээ, зачем?
х - int, 4 - int
pow - double
Вполне можно ожидать неприятностей ...
---
всё же добавлю для наглядности
Код:
#include <iostream>
using namespace std;
void main()
{
	float a = 1 / 2;
	cout << a;
}
Какое значение а получим на выходе?

Последний раз редактировалось FelixXXI; 22.01.2012 в 22:45.
FelixXXI вне форума Ответить с цитированием
Старый 22.01.2012, 22:45   #7
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от FelixXXI Посмотреть сообщение
х - int, 4 - int
pow - double
Вполне можно ожидать неприятностей ...
Код:
double pow ( double base, double exponent );
long double pow ( long double base, long double exponent );
Тип int преобразовывается к double без потерь данных.
Каких неприятностей?

Зато я вижу другую потенциальную мину:
Код:
float y;
y=tan(x+5+pow((pow(x,4)+6),0.5)); 
       //результатом вычисления выражения x+5+pow((pow(x,4)+6),0.5) будет являться тип double
прототипы tan() выглядят так:
Код:
 double tan (      double x );
      float tan (       float x );
long double tan ( long double x );
Таким образом tan(x+5+pow((pow(x,4)+6),0.5)); вернёт тип double

Далее: float y присваивается значение типа double
Итого: возможна потеря данных.

Последний раз редактировалось _Bers; 22.01.2012 в 23:18.
_Bers вне форума Ответить с цитированием
Старый 22.01.2012, 23:32   #8
FelixXXI
Пользователь
 
Регистрация: 29.03.2010
Сообщений: 48
По умолчанию

Цитата:
error C2668: 'pow' : ambiguous call to overloaded function
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(575): could be 'long double pow(long double,int)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(527): or 'float pow(float,int)'
1> c:\program files\microsoft visual studio 9.0\vc\include\math.h(489): or 'double pow(double,int)'
1> while trying to match the argument list '(int, int)'
это ответ компилятора на попытку ввести значения без точки
FelixXXI вне форума Ответить с цитированием
Старый 22.01.2012, 23:57   #9
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от FelixXXI Посмотреть сообщение
это ответ компилятора на попытку ввести значения без точки
Да... вы меня прям на мысль натолкнули, спасибо вам за это)

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

Потому что даже если у функции и нет перегрузок, это не значит, что в будущем они не появятся. Код имеет свойство расширяться со временем, и обрастать всякими фичами (особенно многоразовый).

Поэтому, тип магического числа все равно должен соответствовать ожидаемому, что бы в случае добавления новой перегрузки, не пришлось лопатить все 100500 мест, где использовалось магическое число...

Но на самом деле, я на такие грабли ни разу не наступал, потому что вообще не использую магические числа в коде.

Использование констант привентивно избавляет сразу от всех возможных проблем, которые могут быть связаны с магическими числами
_Bers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не проходит дебаг, в чем может быть ошибка? L6go1as Win Api 14 07.01.2012 18:33
в чем может быть дело? saidmir C/C++ Базы данных 0 08.03.2011 14:10
В чем может быть ошибка? nervniy БД в Delphi 2 21.10.2010 15:47
помотрите в чем может быть ошибка zizu Помощь студентам 2 26.04.2010 10:16
чем может быть вызвана эта ошибка doncova1 Общие вопросы Delphi 5 01.03.2007 11:15