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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Тори
 Аватар для Тори
1 / 1 / 0
Регистрация: 09.05.2010
Сообщений: 59
09.05.2010, 16:46     оператор Саse #1
Составить программу расчёта и печати одной из четырёх функций в зависимости от следующих условий:
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 или нет?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2010, 16:46     оператор Саse
Посмотрите здесь:

C++ Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1
Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки C++
Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. C++
C++ Оператор break как оператор go to next
C++ Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
09.05.2010, 17:08     оператор Саse #2
Цитата Сообщение от Тори Посмотреть сообщение
case 2.3:
точно не будет работать, вообще лучше через if работать в данной программе
C++
1
2
if(x==2.3)
cout<<"r="<<(3.14*(pow(sin(x),2))-2*x);
Abortmaher007
 Аватар для Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
09.05.2010, 17:16     оператор Саse #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.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
09.05.2010, 17:19     оператор Саse #4
Цитата Сообщение от Abortmaher007 Посмотреть сообщение
case 2.3
ну хоть убейтесь, но в int 2.3 никогда не запишеться )
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2294 / 1664 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
09.05.2010, 17:20     оператор Саse #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;
}
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
09.05.2010, 17:20     оператор Саse #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 секунд на написание кода
Abortmaher007
 Аватар для Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
09.05.2010, 17:26     оператор Саse #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 ?

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

По списку ?? Глаза сломаете
Тори
 Аватар для Тори
1 / 1 / 0
Регистрация: 09.05.2010
Сообщений: 59
09.05.2010, 17:37  [ТС]     оператор Саse #15
когда преподаватель давал нам это задание,он предполагал решение через case...
Abortmaher007
 Аватар для Abortmaher007
9 / 9 / 0
Регистрация: 22.01.2010
Сообщений: 67
09.05.2010, 17:38     оператор Саse #16
Цитата Сообщение от neske Посмотреть сообщение
Abortmaher007, хватит.
1000 условий не будет, а если и представить что будет - if и else пользоваться никто не будет.
alex_x_x, +1. Кому как нравится, тот так и делает
Все, перестаю. А вот такое когда-нибудь вам встретится, с условиями или наподобие.

Добавлено через 42 секунды
Цитата Сообщение от Тори Посмотреть сообщение
когда преподаватель давал нам это задание,он предполагал решение через case...
Ну if else вы уже выучили, он вам предложил попробовать через казел
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
09.05.2010, 17:53     оператор Саse #17
Цитата Сообщение от Тори Посмотреть сообщение
когда преподаватель давал нам это задание,он предполагал решение через case...
В Ялту через Москву я помню когда мы изучали указатели нам преподаватель задал задачку сделать сложение двух чисел через указатели) типо указатель на указатель
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
09.05.2010, 17:57     оператор Саse #18
В Ялту через Москву я помню когда мы изучали указатели нам преподаватель задал задачку сделать сложение двух чисел через указатели) типо указатель на указатель
Смешно, могу дать ссылку где не давно эту туфь я решал, так и не понял, зачем были нужны указатели.

эту задачу надо решать через case или нет?
Хто бы знал точно, наверное через switch
Crudelis
Шаровик затейник
 Аватар для Crudelis
668 / 410 / 13
Регистрация: 06.05.2010
Сообщений: 1,109
09.05.2010, 18:12     оператор Саse #19
Genius Ignat, зацени ссылку) дай вспомнить времена)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2010, 18:13     оператор Саse
Еще ссылки по теме:

C++ В Delphi есть оператор cost i of. и т.д. Есть ли в C++ такой же оператор?
C++ Для чего нужен оператор двоеточие, если два двоеточия - это оператор расширения области видимости

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

Или воспользуйтесь поиском по форуму:
neske
1419 / 786 / 55
Регистрация: 26.03.2010
Сообщений: 2,694
09.05.2010, 18:13     оператор Саse #20
Через указатели на указатели посчитать сумму двух чисел и записать в третье
она у меня даже в закладках
хотел разбираться с указателями)
Yandex
Объявления
09.05.2010, 18:13     оператор Саse
Ответ Создать тему
Опции темы

Текущее время: 16:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru