Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Тори
1 / 1 / 0
Регистрация: 09.05.2010
Сообщений: 59
#1

оператор Саse - C++

09.05.2010, 16:46. Просмотров 1116. Ответов 27
Метки нет (Все метки)

Составить программу расчёта и печати одной из четырёх функций в зависимости от следующих условий:
u = 4,2 tg x2, при х = 1;
v = 3,14 sin2x –2x, при х = 2,3;
w = 7,11 ln x + 5x, при х = 3;
z = cos 2x – 9,15x, при х = 4.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdio.h>
main()
{  int x;
   cout<<"vvedite x";
   cin>>x;
   switch(x)
       {
         case 1:{cout<<"u="<<(4.2*(tan(pow(x,2))));break;}
         case 2.3:{cout<<"r="<<(3.14*(pow(sin(x),2))-2*x);break;}
         case 3:{cout<<"w="<<(7.11*log(x)+5*x);break;}
         case 4:{cout<<"z="<<(cos(2*x)-9.15*x);break;};
       }
   getch();
   return 0;
}
эту задачу надо решать через case или нет?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2010, 16:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос оператор Саse (C++):

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки - C++
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые трудности. Будьте добры, помогите решить. Буду...

Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 - C++
В С++ я ноль, помогите пожалуйста написать прогу Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1 ...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор * - C++
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор копирования, бинарный оператор суммы «*»,...

Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости - C++
для чего нужен оператор двоеточие ( : ), если два двоеточия( :: ) - это оператор расширения области видимости.

Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. - C++
Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Шаг изменения...

Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->? - C++
#include &lt;iostream&gt; using namespace std; class random { public: void Set(int b){a=b;} int Get(){return a;} private: ...

27
Crudelis
Шаровик затейник
674 / 416 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
09.05.2010, 17:08 #2
Цитата Сообщение от Тори Посмотреть сообщение
case 2.3:
точно не будет работать, вообще лучше через if работать в данной программе
C++
1
2
if(x==2.3)
cout<<"r="<<(3.14*(pow(sin(x),2))-2*x);
1
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
09.05.2010, 17:16 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream.h>
#include<math.h>
#include<conio.h>
#include<stdio.h>
main()
{ int x;
cout<<"vvedite x";
cin>>x;
switch(x)
{
case 1:{cout<<"u="<<(4.2*(tan(pow(x,2))));break;}
case 2.3:{cout<<"r="<<(3.14*(pow(sin(x),2))-2*x);break;}
case 3:{cout<<"w="<<(7.11*log(x)+5*x);break;}
case 4:{cout<<"z="<<(cos(2*x)-9.15*x);break;};
}
getch();
return 0;
}
Тут в принципе так и надо было, решать надо так, только печатать будет значение функции а не саму. Если делать по другому - путем сравнения, то ушло бы много времени отладчика, на идею структуры, и печатать долго!!!!
Это все за спасибо

Добавлено через 4 минуты
Цитата Сообщение от Crudelis Посмотреть сообщение
точно не будет работать, вообще лучше через if работать в данной программе
C++
1
2
if(x==2.3)
cout<<"r="<<(3.14*(pow(sin(x),2))-2*x);
Тогда нужно сделать проверку ввода.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
main()
{ float x;
while(1){
cout<<"vvedite x";
cin>>x;
if(x==1 || x==2.3 || x==3 || x==4)
goto loop;
}
loop:switch(x)
{
case 1:{cout<<"u="<<(4.2*(tan(pow(x,2))));break;}
case 2.3:{cout<<"r="<<(3.14*(pow(sin(x),2))-2*x);break;}
case 3:{cout<<"w="<<(7.11*log(x)+5*x);break;}
case 4:{cout<<"z="<<(cos(2*x)-9.15*x);break;};
}
getch();
return 0;
}
А так же вместо целочисленного значения для х нужно использовать тип float.
1
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
09.05.2010, 17:19 #4
Цитата Сообщение от Abortmaher007 Посмотреть сообщение
case 2.3
ну хоть убейтесь, но в int 2.3 никогда не запишеться )
1
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
09.05.2010, 17:20 #5
Abortmaher007, вас не смущает, что x должен быть вещественным числом?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream.h>
#include<math.h>
 
int main() { 
  double x;
  cout<<"vvedite x";
  cin>>x;
 
  if (x == 1.0)
    cout << "u=" << 4.2 * (tan(pow(x, 2)));
  else if (x == 2.3)
    cout << "r=" << 3.14 * (pow(sin(x), 2)) - 2 * x;
  else if (x == 3.0)
    cout << "w=" << 7.11 * log(x) + 5 * x;
  else if (x == 4.0)
    cout << "z=" << cos(2 * x) - 9.15 * x;
  
  getch();
  return 0;
}
2
Crudelis
Шаровик затейник
674 / 416 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
09.05.2010, 17:20 #6
Цитата Сообщение от Abortmaher007 Посмотреть сообщение
ушло бы много времени отладчика
не пойму почему много времени бы ушло, всё очень просто:
C++
1
2
3
4
5
6
7
8
if(x==1.0)
cout<<"u="<<(4.2*(tan(pow(x,2))));
if(x==2.3)
cout<<"r="<<(3.14*(pow(sin(x),2))-2*x);
if(x==3.0)
cout<<"w="<<(7.11*log(x)+5*x);
if(x==4.0)
cout<<"z="<<(cos(2*x)-9.15*x);
з.ы. ушло 15 секунд на написание кода
1
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
09.05.2010, 17:26 #7
Про флоат я писал!!!!! Читайте правильно!!!!!
Бессмысленно писать постоянно оператор if

Читайте внимательно еще раз вот этот кусок,
он будет всегда повторяться, пока не будет введено правильное значение!!!!!!!!
C
1
2
3
4
5
6
while(1){
cout<<"vvedite x";
cin>>x;
if(x==1 || x==2.3 || x==3 || x==4)
goto loop;
}
Что будет с вашим временем если условий будет 1000 ?
Постоянно писать if if if if ?

Ума не приложу по какой книге учите
перестаньте негативно относиться, читайте тыщщу раз внимательно!
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
09.05.2010, 17:29 #8
Цитата Сообщение от Abortmaher007 Посмотреть сообщение
Бессмысленно писать постоянно оператор if
Чем же лучше постоянно писать case?
0
neske
1502 / 869 / 84
Регистрация: 26.03.2010
Сообщений: 2,983
09.05.2010, 17:30 #9
Если будет 1000 условий, я посмотрю на твой case.
0
Crudelis
Шаровик затейник
674 / 416 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
09.05.2010, 17:31 #10
Abortmaher007, если условий будет 1000 то как if будет 1000 так и case будет 1000
case 1:
..........
case 1000:
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
09.05.2010, 17:33 #11
забавный холивар, когда есть четкое перечисление по enum, то case удобней и понятней выглядит, в остальных случаях по обстоятельством, тут имхо также удобно, спор на ровном месте
0
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
09.05.2010, 17:33 #12
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Чем же лучше постоянно писать case?
Компилятор начнет все по порядку проверять.
Их будет тысяча - все проверит, даже если не найдет.
В казе тоже, но значительно быстрей!!!
Понятней человеку, допустим если условий будет тысяча ?????
Думаете дураки придумали этот свитч ?
0
neske
1502 / 869 / 84
Регистрация: 26.03.2010
Сообщений: 2,983
09.05.2010, 17:35 #13
Abortmaher007, хватит.
1000 условий не будет, а если и представить что будет - if и else пользоваться никто не будет.
alex_x_x, +1. Кому как нравится, тот так и делает
0
Abortmaher007
-1 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
09.05.2010, 17:36 #14
Цитата Сообщение от Crudelis Посмотреть сообщение
Abortmaher007, если условий будет 1000 то как if будет 1000 так и case будет 1000
case 1:
..........
case 1000:
Допустим 566 условие нужно найти, где х=5.
Ну и как ты его будешь искать ?

По списку ?? Глаза сломаете
0
Тори
1 / 1 / 0
Регистрация: 09.05.2010
Сообщений: 59
09.05.2010, 17:37  [ТС] #15
когда преподаватель давал нам это задание,он предполагал решение через case...
0
09.05.2010, 17:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2010, 17:37
Привет! Вот еще темы с ответами:

Оператор break как оператор go to next - C++
Подскажите, в этом примере break эквивалентна действию оператора go to next?

Как перегрузить оператор<< и оператор>> ? - C++
Доброго времени суток. Застрял на двух вопросах и не как не могу найти инфу которвя мне помогла бы их решить. вопрос первый. В общем...

В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор? - C++
(C++ Builder XE5)

Оператор for - C++
Всем здравствуйте. Изучаю оператор for, и совершенно не могу понять, как он будет работать в этой программе: Найти сумму целых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru