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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 15:38   #21
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
эм.. а при каких а может возникнуть деление на 0? ведь в выражении, нету нигде, где бы числа на а делились.
Подсказка: в выражении есть место, где происходит деление на косинус а.
Abstraction вне форума Ответить с цитированием
Старый 25.12.2012, 15:40   #22
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию


убрал скобки вроде как должно быть правильно.. терь вот что пишет..
alucard115 вне форума Ответить с цитированием
Старый 25.12.2012, 15:42   #23
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Подсказка: в выражении есть место, где происходит деление на косинус а.
ну это ладно, посмотрим потом добавлю если что условие при делении на 0.. щас бы разобраться с деталями этими=((

опять все к скобкам пришло...(

Урааа)) запустилась программа))

Спасибо всем большое! =))) теперь только еще условие при деление на 0 сделать и все) правда так и не увидел в выражении где на косинус а делиться..

хм.. токо помчему то у меня все х отрицательные получаются чтобы не вводил....

вот готовый рабочий код

Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{ clrscr();
cout<<"Vvedite ugol a:";
float x,a,p=3.14;
cin>> a;
if ((pow(tan(a),4)-(3.0/5)*cos(2*a)+p)>0 )
{x=pow(sin(a),4)+(1.0/3)*cos(4*a)-(4*cos(2*a)+3)-sqrt(pow(tan(a),2)-(3.0/5)*cos(2*a)+p)+(pow(sin(a),2)+(1.0/4)*pow(sin(a),2));
cout<<"x="<<x;}
else  cout<<"znacheniya net";
getch();
}

Последний раз редактировалось Stilet; 25.12.2012 в 16:43.
alucard115 вне форума Ответить с цитированием
Старый 25.12.2012, 16:37   #24
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Спасибо всем большое! =))) теперь только еще условие при деление на 0 сделать и все) правда так и не увидел в выражении где на косинус а делиться..
Что такое тангенс угла?
Abstraction вне форума Ответить с цитированием
Старый 25.12.2012, 16:58   #25
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Что такое тангенс угла?
отношение синуса к косинусу...
да... значит придется условие вводить на счет того чтобы а!=0 ...
хм... и если 0 ввожу отрицательное число получаеться.. может, если отрицательные числа получаються, значит чтото со скобками не правильно сделал?

Последний раз редактировалось alucard115; 25.12.2012 в 17:06.
alucard115 вне форума Ответить с цитированием
Старый 25.12.2012, 17:37   #26
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
отношение синуса к косинусу...
да... значит придется условие вводить на счет того чтобы а!=0 ...
Гм. При каких a cos(a) равно 0? Подсказка: cos(0)=1.
Цитата:
и если 0 ввожу отрицательное число получается..
Должно получаться отрицательное выражение под корнем.
Abstraction вне форума Ответить с цитированием
Старый 26.12.2012, 12:59   #27
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Гм. При каких a cos(a) равно 0? Подсказка: cos(0)=1.
Должно получаться отрицательное выражение под корнем.
cos(90) = 0

Блин, не могу понять где может быть ошибка... По идее, раз я поставил условие, что если под корнем получается отрицательное число, то программа должна вывести на экран "znacheniya net"..
Мне кажется, что раз числа все отрицательные получаются значит где то допущена ошибка...

и еще, что в C++ значат "[]" такие квадратные скобки? как в коде их записывать правильно?

Посмотрите пожалуйста, вот я в выражение добавил скобки где необходимо, и добавил условие чтобы cos(a)!=90.
Подскажите, может я как то не так условия поставил? программа выдает ошибки..((

Цитата:
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{ clrscr();
cout<<"Vvedite ugol a:";
float x,a,p=3.14;
cin>> a;
if (cos(a)!=90);
if ((pow(tan(a),4)-(3.0/5)*cos(2*a)+p)>0 )
{x=pow(sin(a),4)+((1.0/3)*cos(4*a)-(4*cos(2*a)+3))-(sqrt(pow(tan(a),2)-(3.0/5)*cos(2*a)+p))+(pow(sin(a),2)+(1.0/4)*pow(sin(a),2));
cout<<"x="<<x;}
else cout<<"delenie na 0!";
else cout<<"znacheniya net";
getch();
}

Последний раз редактировалось alucard115; 26.12.2012 в 13:15.
alucard115 вне форума Ответить с цитированием
Старый 26.12.2012, 13:42   #28
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
и еще, что в C++ значат "[]" такие квадратные скобки? как в коде их записывать правильно?
Это обращение по индексу. Если a - массив, то a[i] - (i+1)-ый элемент этого массива. Для задания приоритета операций используются только круглые скобки, в отличие от алгебраической нотации, где скобки любой формы имеют один и тот же смысл.
Цитата:
Посмотрите пожалуйста, вот я в выражение добавил скобки где необходимо, и добавил условие чтобы cos(a)!=90.
Кхм. Как известно, в военное время косинус может достигать четырёх. Но у нас вроде войны нет, и значения косинуса всегда лежат в интервале [-1,1].
Точка с запятой сразу после if - это ужас-ужас (получается, что, если условие истинно, следует выполнить пустую инструкцию). Используйте фигурные скобки. А заодно и форматируйте текст отступами.
Цитата:
cos(90) = 0
Далее, косинус девяноста градусов равен нулю (а также cos(-90), cos(270), cos(450) и так далее). Функция C++ cos же считает, что в качестве аргумента ей передаётся угол в радианах. Но это неважно, потому что Вам-то надо проверить, что cos(a)!=0.
Цитата:
Подскажите, может я как то не так условия поставил? программа выдает ошибки..((
Угу. См. замечание про if выше.
Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>

int main(void) //Вежливо "возвращать" значение из main - 0 при нормальном завершении, не-0 при крахе
{ 
  clrscr(); //Форматируйте текст. Это повышает его читабельность
  cout<<"Vvedite ugol a:";
  float x,a,p=3.14;
  cin>> a;
  if (cos(a) != 0){ //Фигурная скобка открывает операторный блок. Пользуйтесь ими.
    //Обратите внимание, что Вы вынесли пи из-за скобки, переменив знак. И корень из нуля извлекается
    if ((pow(tan(a),4)-((3.0/5)*cos(2*a)+p)) >= 0) //Как правило, вложенные блоки отмечаются отступами
    {
      x=pow(sin(a),4)+((1.0/3)*cos(4*a)-(4*cos(2*a)+3))-(sqrt(pow(tan(a),2)-(3.0/5)*cos(2*a)+p))+(pow(sin(a),2)+(1.0/4)*pow(sin(a),2));
      cout<<"x="<<x;
    }//Визуально заметно лучше смотрится, когда закрывающая скобка хорошо видна
    else
      cout<<"delenie na 0!"; //Если блок состоит из одной инструкции, его можно не обрамлять скобками
  } //Но не стоит злоупотреблять этой возможностью
  else
    cout<<"znacheniya net";
  
  getch();
  return 0; //Всё прошло гладко - завершаем программу
}
P.S. И по-моему, у Вас перепутаны местами сообщения о делении на ноль и невозможности извлечения корня из отрицательного числа (последнее к тому же сформулировано, самое малое, невнятно).
Abstraction вне форума Ответить с цитированием
Старый 26.12.2012, 15:10   #29
alucard115
Пользователь
 
Аватар для alucard115
 
Регистрация: 25.12.2012
Сообщений: 88
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Это обращение по индексу. Если a - массив, то a[i] - (i+1)-ый элемент этого массива. Для задания приоритета операций используются только круглые скобки, в отличие от алгебраической нотации, где скобки любой формы имеют один и тот же смысл.
Кхм. Как известно, в военное время косинус может достигать четырёх. Но у нас вроде войны нет, и значения косинуса всегда лежат в интервале [-1,1].
Точка с запятой сразу после if - это ужас-ужас (получается, что, если условие истинно, следует выполнить пустую инструкцию). Используйте фигурные скобки. А заодно и форматируйте текст отступами.Далее, косинус девяноста градусов равен нулю (а также cos(-90), cos(270), cos(450) и так далее). Функция C++ cos же считает, что в качестве аргумента ей передаётся угол в радианах. Но это неважно, потому что Вам-то надо проверить, что cos(a)!=0.
Угу. См. замечание про if выше.
Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>

int main(void) //Вежливо "возвращать" значение из main - 0 при нормальном завершении, не-0 при крахе
{ 
  clrscr(); //Форматируйте текст. Это повышает его читабельность
  cout<<"Vvedite ugol a:";
  float x,a,p=3.14;
  cin>> a;
  if (cos(a) != 0){ //Фигурная скобка открывает операторный блок. Пользуйтесь ими.
    //Обратите внимание, что Вы вынесли пи из-за скобки, переменив знак. И корень из нуля извлекается
    if ((pow(tan(a),4)-((3.0/5)*cos(2*a)+p)) >= 0) //Как правило, вложенные блоки отмечаются отступами
    {
      x=pow(sin(a),4)+((1.0/3)*cos(4*a)-(4*cos(2*a)+3))-(sqrt(pow(tan(a),2)-(3.0/5)*cos(2*a)+p))+(pow(sin(a),2)+(1.0/4)*pow(sin(a),2));
      cout<<"x="<<x;
    }//Визуально заметно лучше смотрится, когда закрывающая скобка хорошо видна
    else
      cout<<"delenie na 0!"; //Если блок состоит из одной инструкции, его можно не обрамлять скобками
  } //Но не стоит злоупотреблять этой возможностью
  else
    cout<<"znacheniya net";
  
  getch();
  return 0; //Всё прошло гладко - завершаем программу
}
P.S. И по-моему, у Вас перепутаны местами сообщения о делении на ноль и невозможности извлечения корня из отрицательного числа (последнее к тому же сформулировано, самое малое, невнятно).
спасибо большое)) скобки я подправил еще, чтобы Пи было где нужно. переставил местами "деление на 0" и "извлечение корня из отрицательного числа!" .. вот. вроде бы теперь все правильно должно быть)

Код:
#include <iostream.h>
#include <conio.h>
#include <math.h>

int main(void)
{ 
  clrscr(); 
  cout<<"Vvedite ugol a:";
  float x,a,p=3.14;
  cin>> a;
  if (cos(a) != 0){ 
   
    if ((pow(tan(a),4)-((3.0/5)*(cos(2*a)+p))) >= 0) 
    {
      x=pow(sin(a),4)+((1.0/3)*cos(4*a)-(4*cos(2*a)+3))-(sqrt(pow(tan(a),2)-(3.0/5)*cos(2*a)+p))+(pow(sin(a),2)+(1.0/4)*pow(sin(a),2));
      cout<<"x="<<x;
    }
    else
	cout<<"Izvlechenie kornya iz otricatelnogo chisla!";

  } 
  else
    cout<<"delenie na 0!";
  
  getch();
  return 0; 
}
вроде бы все ваши советы запомнил, постараюсь не допускать таких ошибок больше)) спасибо Вам большое!)
alucard115 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поправьте код на С Экзорцист Общие вопросы C/C++ 1 17.12.2010 18:31
Поправьте пожалуйста код batonza Общие вопросы C/C++ 3 03.10.2009 11:05
Поправьте код!!! Klim Bassenger Microsoft Office Excel 15 27.05.2009 15:24
Поправьте пожалуйста код... Rymond Помощь студентам 4 26.04.2009 19:41
Поправьте код! Klim Bassenger Microsoft Office Excel 1 10.04.2009 15:46