Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
#1

Работа с операторами условия - C++

23.09.2012, 20:21. Просмотров 961. Ответов 22
Метки нет (Все метки)

Вводим число x. и потом программа должна поставить в порядке возрастания числа: sinx, cosx. lnx. Если при каком-либо x некоторые из выражений не имеют смысла, вывести сообщение об этом и сравнивать значения только тех, которые имеют смысл.
Как такое сделать? помогите, людиии)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2012, 20:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Работа с операторами условия (C++):

Работа с операторами(+,-) в С++
Доброго времени суток, имеются 2 вектора типа int, например: vector<int> v1...

Работа с битовыми операторами
Здравствуйте, С Новым Годом! Решил за новогодние празники познакомиться с...

Работа с операторами класса
#include <iostream> using namespace std; class X { private: int j;...

Почему не срабатывают условия в операторе if (работа с массивами)?
Приветствую. Есть код: #include "stdafx.h" #include <iostream> #include...

Работа с операторами
Как многие идущие к своей цели програмисты я встретился с таким делом как...

Проблема с операторами
начинаю работаю на VC10 ввожу #include <iostream.h> почеркивает и пишет,...

22
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 20:35 #2
что нибудь сами пробовали?
0
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
23.09.2012, 20:36  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#define swap(a,b) do{float t=a; a=b; b=t;}while(0) 
#include<stdio.h> 
#include<math.h> 
int main()
{ 
float a,b,c,d; 
while(1){scanf("%f",&d); 
if(d>0&&d<=1)
    break; 
printf("once more!\n");} 
a=sin(d); 
b=cos(d); 
c=log(d); 
if(a>b)swap(a,b); 
if(b>c)swap(b,c); 
if(a>b)swap(a,b); 
printf("%.5f\n%.5f\n%.5f\n",a,b,c); 
return 0;
}
но походу все можно сделать намного легче.. только вот что убрать, а что добавить?
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 20:45 #4
Цитата Сообщение от level9626 Посмотреть сообщение
if(d>0&&d<=1)
а чем вас числа больше 1 не устраивают?
а так вполне нормальный код , что еще надо?
1
Andrey.K
344 / 265 / 128
Регистрация: 14.11.2010
Сообщений: 482
23.09.2012, 21:05 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream> 
#include <cmath>
void Swap(float& a,float& b,float& c)
{
    float t=0;
    if(a<b) { a=t;a=b;b=t; }
    if(b<c)  { b=t;b=c;c=t; }
}
int main()
{ 
    setlocale(0,"rus");
    float a,b,c,d;
    do
    {
        std::cout<<"Введите d: ";std::cin>>d;
        if(d<0 || d>=1) std::cout<<"Неправильный ввод!"<<std::endl;
    }
    while(d<0 || d>=1);
    a=sin(d); 
    b=cos(d); 
    c=log(d);
    Swap(a,b,c);
    std::cout<<"a="<<a<<std::endl;
    std::cout<<"b="<<b<<std::endl;
    std::cout<<"c="<<c<<std::endl;
    system("pause");
    return 0;
}
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 21:08 #6
Цитата Сообщение от Andrey.K Посмотреть сообщение
if(d<0 || d>=1) std::cout<<"Неправильный ввод!"<<std::endl;
да что вы привязались к числам больше 1 они же подходят для данных функций
1
BRcr
4015 / 2305 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
23.09.2012, 21:34 #7
Цитата Сообщение от Nixy Посмотреть сообщение
да что вы привязались к числам больше 1 они же подходят для данных функций
+1

А если покрасивше надо, то вот еще пять копеек:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    typedef pair <float, string> func_info;
    float x = -1;
    func_info funcs[3], tmp;
 
    while ( x < 0 ) {
        printf( "\ninput x: " );
        scanf( "%f", &x );
    }
    funcs[0] = func_info( sin( x ), "(sin)" );
    funcs[1] = func_info( cos( x ), "(cos)" );
    funcs[2] = func_info( log( x ), "(log)" );
    for ( int i = 1, j; i < sizeof( funcs ) / sizeof( funcs[0] ); ++i ) {
        tmp = funcs[i];
        for ( j = i - 1; j >= 0 && funcs[j].first > tmp.first; funcs[j-- + 1] = funcs[j] );
        funcs[j + 1] = tmp;
    }
    for ( int i = 0; i < sizeof( funcs ) / sizeof( funcs[0] ); ++i ) {
        printf( "%.5f%s\n", funcs[i].first, funcs[i].second.c_str( ) );
    }
0
Миниатюры
Работа с операторами условия  
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 21:47 #8
BRcr, во все правильно сделал) , я свой код не выложил так как вначале просто записал вывод максимального из, а потом уже решение дали)
1
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
23.09.2012, 21:56  [ТС] #9
Andrey.K, так ln0 не существует. только больше 0 нужно. а мне выбивает ошибку. воспринимает только 0 и все.

Добавлено через 2 минуты
да и когда ввожу число меньше либо равно 0, то ln этого числа вообще не должно считать, а только сравнить между собой синус и косинус.
Вот задание: Если при каком-либо x некоторые из выражений не имеют смысла, вывести сообщение об этом и сравнивать значения только тех, которые имеют смысл.

Добавлено через 1 минуту
мы вообще только выучили if, else) библиотеки math.h и stdio.h. еще легче нельзя сделать эту прогу?

Добавлено через 1 минуту
два задания есть: одной я уже сделал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# include <stdio.h>
# include <math.h>
int main()
{
float x,z;
printf ("Vvedite x: ");
scanf ("%f", &x);
    
if (x>=9)
{
z=sin(x);
}
else
{
z=x*x/(x-9);
}
printf ("z=%f",z);
return 0;
}
а второе так же легко я так понял, нельзя сделать)
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 22:00 #10
Цитата Сообщение от level9626 Посмотреть сообщение
math.h и stdio.h.
эти библиотеки нужны для
1 функций sin cos log
2 вывода на экран

Добавлено через 1 минуту
Цитата Сообщение от level9626 Посмотреть сообщение
так же легко
через if else все сделать можно
0
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
23.09.2012, 22:02  [ТС] #11
ну вот. больше не учили. и дали такое задание...

Добавлено через 1 минуту
и как вот только через if else then сделать это задание? напишите, пожалуйста)
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 22:04 #12
Цитата Сообщение от level9626 Посмотреть сообщение
then
а вам точно в c++,ни паскаль ни делфи?
1
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
23.09.2012, 22:05  [ТС] #13
да, точно.
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 22:07 #14
а процедуры/функции или массивы проходили?
1
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
23.09.2012, 22:18  [ТС] #15
нет, нет, нет.

вот с помощью того что проходили и я написал первое задание. код вылаживал.
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# include <stdio.h>
# include <math.h>
int main()
{
float x,z;
printf ("Vvedite x: ");
scanf ("%f", &x);
    
if (x>=9)
{
z=sin(x);
}
else
{
z=x*x/(x-9);
}
printf ("z=%f",z);
return 0;
}


Добавлено через 7 минут
так поможете ? кто-нибууууууууудь) пожалуйстааааа. при помощи одних if, else, then...
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 22:20 #16
если меня не обгонят то я щас ваяю
1
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
23.09.2012, 22:30  [ТС] #17
о, спасибо Вам)
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 22:45 #18
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <windows.h>
#include <stdio.h>
#include <iostream>
#include <math.h>
 
using namespace std;
 
 
 
void main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    float x;
    printf("\n Введите х: ");
    scanf("%f",&x);
    char *first,*second,*third=" log(x) ";
    float a=cos(x);
    float b=sin(x);
 
    if (x<=0) {
       if (a>b)
           printf("%s%.5f%s%.5f\n","1. cos(x)",b,"\n2. sin(x)",a);
        else
           printf("%s%.5f%s%.5f\n","1. sin(x)",a,"\n2. cos(x)",b);
    }  else {
        float c=log(x);
        float t=0;
            // проверка косинуса с синусом
            if(a>b) {
            t=a;a=b;b=t;
            first="cos(x)";second=" sin(x) ";}
           //проверка косинуса с логарифмом либо с синусом
           // если произошел обмен
            if(b>c) { t=b;b=c;c=t;
                if (first==" cos(x) ") {third=" sin(x) ";second=" log(x) ";} //проверка на обмен
                else {third=" cos(x) ";second=" log(x) ";}}
            // сравнение косинуса и логарифма если
            // произошел обмен
            if(a>b) {t=a;a=b;b=t;
                first=" log(x) ";second=" cos(x) ";}
           printf("%s%.5f%s%.5f%s%.5f\n",first,a,second,b,third,c);
        }
        system("pause");
    }
не забудьте про кнопку спасибо
1
level9626
9 / 9 / 2
Регистрация: 23.09.2012
Сообщений: 150
23.09.2012, 22:50  [ТС] #19
оо, работает. Спасибо, правда я тут и половину не понимаю, но ладно))
0
Nixy
ComfyMobile
400 / 281 / 34
Регистрация: 24.07.2012
Сообщений: 916
23.09.2012, 22:51 #20
спрашивай по строчкам я отвечу
0
23.09.2012, 22:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2012, 22:51
Привет! Вот еще темы с решениями:

Программа с операторами if else
В заданиях требуется для рисунка, на которых области обозначены римскими...

помогите с операторами while и for
есть программа, и мне нужно чтоб выводило информацию о файле во время оператора...

Робота с операторами C++
Створити клас Дріб полями чисельник та знаменник. Визначити наступні методи для...

Задания с операторами
Тут такая фишка оч нужна помощь 1а)Даны три различных числа. Среднее из них...


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

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

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