Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
#1

3 условия - C++

24.04.2012, 23:23. Просмотров 2258. Ответов 22
Метки нет (Все метки)

помогите составить программу для решения системы уравнений
задание:
y=1-sqrt(2/x^5+1), при x>0
y=log(abs(x-3)+abs(x+1)), при x<0
y=2*(a^(x+5)), при x=0
y и а вводить с клавиатуры
Вот что у меня получилось. Но работает некорректно, подозреваю что неправильно записал условия
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <math.h>
void main ()
{float x,y,a;
printf("BBeDuTe Г•:\n");
scanf("%f",&x);
if (x>0){
    y=1-sqrt(2/pow(x,5)+1);
}if (x<0){
    y=log(abs(x-3)+abs(x+1));
}if (x=0){
    printf("BBeDuTe A:\n");
    scanf("%f",&a);
    y=2*pow(a,(x+5));
}
printf("\n Y= %f\n",y);
}

http://www.cyberforum.ru/cpp-beginners/thread416076.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.04.2012, 23:23
Я подобрал для вас темы с готовыми решениями и ответами на вопрос 3 условия (C++):

Условия с++
Здравствуйте! Нужно решить то, что во вложении ниже. Можете подсказать принцип...

Условия If
Привет, сразу прошу прощения за глупый вопрос но я только начинающий...

Условия if
Компилятор выдает ошибки: miplased else, expression syntax, missing ;. Не могу...

условия
скажите все ли я условия учёл ? #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

Условия не работают
почему условия if (((x-x1)||(x1-x))&lt;10) или if ...

22
antoha398
156 / 156 / 27
Регистрация: 29.03.2012
Сообщений: 418
24.04.2012, 23:34 #2
надо писать x == 0
0
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
24.04.2012, 23:40 #3
main() возвращает int.
все 3 ветки if выполнятся, пишите
C++
1
2
3
4
5
6
7
if (...) {
    // ...
} else if (...) {
    // ...
} else {
    // ...
}
+ в 3-ем if не сравнение с нулём (==), а его присвоение (=) + сам по себе он лишний.
C++
1
abs
fabs
1
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
24.04.2012, 23:47  [ТС] #4
сейчас попробую, спасибо за быстрый ответ

Добавлено через 4 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <math.h>
void main ()
{float x,y,a;
printf("BBeDuTe Г•:\n");
scanf("%f",&x);
if (x>0){
    y=1-sqrt(2/pow(x,5)+1);
}else if (x<0){
    y=log(fabs(x-3)+fabs(x+1));
}else if (x==0){
    printf("BBeDuTe A:\n");
    scanf("%f",&a);
    y=2*pow(a,(x+5));
}
printf("\n Y= %f\n",y);
}
в третьем случае стал правильно считать, в первых двух так же
не пойму никак в чем ошибка
0
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
24.04.2012, 23:48 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <math.h>
using namespace std;
 
void main()
{
    double x,y,a;
    cout<<"Type x ";
    cin>>x;
    if (x>0) y=1-sqrt(2/pow(x,5)+1);
    else if (x<0) y=log(fabs(x-3)+fabs(x+1));
    else
    {
        cout<<"type a ";
        cin>>a;
        y=2*pow(a,(x+5));
    }
    cout<<"\n Result is "<<y<<endl;
}
0
Kuzia domovenok
2207 / 1976 / 443
Регистрация: 25.03.2012
Сообщений: 6,923
Записей в блоге: 1
24.04.2012, 23:49 #6
Цитата Сообщение от dekartkaine Посмотреть сообщение
2/pow(x,5)
C++
1
2.0/pow(x,5)
0
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
24.04.2012, 23:58  [ТС] #7
volchonokilli, по вашей программе выдает такие же результаты
ну вот в этом случае например
C++
1
 y=1-sqrt(2/pow(x,5)+1);
при х=1 должно получиться 0
0
Миниатюры
3 условия  
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
24.04.2012, 23:59  [ТС] #8
Kuzia domovenok
исправил, по-прежнему не корректно работает
0
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
25.04.2012, 00:03 #9
Цитата Сообщение от dekartkaine Посмотреть сообщение
volchonokilli, по вашей программе выдает такие же результаты
ну вот в этом случае например
C++
1
 y=1-sqrt(2/pow(x,5)+1);
при х=1 должно получиться 0
А, я понял, что требуется.
Тогда так:
C++
1
    y=1-sqrt(2/(pow(x,5)+1));
Дело в том, что деление выполняется перед сумой.
То есть, сначала 2 делится на икс в степени пять, и только потом суммируется к одному.
1
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
25.04.2012, 00:14  [ТС] #10
volchonokilli
спасибо!
совсем глупая ошибка ведь, второпях и не заметил

Добавлено через 5 минут
один маленький вопросик еще
почему когда меняю тип переменных в моей программе - ответ получается совершенно другой
с типом float все считает правильно, но есть 3 warning'а
с double warning'ов нету, но считает неправильно)
0
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
25.04.2012, 00:16 #11
Цитата Сообщение от dekartkaine Посмотреть сообщение
почему когда меняю тип переменных в моей программе - ответ получается совершенно другой
с типом float все считает правильно, но есть 3 warning'а
с double warning'ов нету, но считает неправильно)
Из-за float может быть warning из-за того, что он менее точный, чем double, а вот можете, пожалуйста, про неправильное обсчитывание поподробнее?
0
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
25.04.2012, 00:21  [ТС] #12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <math.h>
void main ()
{
    float x,y,a;
    printf("Type X:\n");
    scanf("%f",&x);
    if (x>0) y=1-sqrt(2/(pow(x,5)+1));
    else if (x<0) y=log(fabs(x-3)+fabs(x+1)); 
    else 
    {
        printf("Type A:\n");
        scanf("%f",&a);
        y=2.0*pow(a,(x+5));
    }
    printf("\n Y= %f\n",y);
}
ну вот, отредактированная программа
все считает правильно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <math.h>
void main ()
{
    double x,y,a;
    printf("Type X:\n");
    scanf("%d",&x);
    if (x>0) y=1-sqrt(2/(pow(x,5)+1));
    else if (x<0) y=log(fabs(x-3)+fabs(x+1)); 
    else 
    {
        printf("Type A:\n");
        scanf("%d",&a);
        y=2.0*pow(a,(x+5));
    }
    printf("\n Y= %f\n",y);
}
а эта выдает уже совершенно другие числа, при х=1, например, y получается 143.376
0
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
25.04.2012, 00:25 #13
А что такое [U]? О_о

У меня всё работает правильно.
0
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
25.04.2012, 00:26  [ТС] #14
это я тупанул, хотел выделить изменения)
0
volchonokilli
4 / 4 / 0
Регистрация: 04.01.2012
Сообщений: 41
25.04.2012, 00:28 #15
Попробуйте через cin, по-моему, у вас это происходит из-за scanf.
0
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
25.04.2012, 00:29  [ТС] #16
просто мы только начали проходить, cin и cout еще не прошли
ну да ладно, главное что работает)
0
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
25.04.2012, 00:33 #17
C
1
scanf("%d",&x);
- это если x типа int. Если double, то
C
1
scanf("%lf", &x);
0
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
25.04.2012, 00:37  [ТС] #18
выдает ошибку: error C2059: syntax error : '%'
0
gray_fox
What a waste!
1552 / 1257 / 165
Регистрация: 21.04.2012
Сообщений: 2,634
Завершенные тесты: 3
25.04.2012, 00:40 #19
Цитата Сообщение от dekartkaine Посмотреть сообщение
выдает ошибку: error C2059: syntax error : '%'
Не %fl, а %lf, извиняюсь.
0
dekartkaine
1 / 1 / 0
Регистрация: 10.12.2011
Сообщений: 47
25.04.2012, 00:45  [ТС] #20
все равно ошибка
ругается, наверное, на процент перед икс
0
Миниатюры
3 условия  
25.04.2012, 00:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2012, 00:45
Привет! Вот еще темы с решениями:

Вложенные условия ( if-else )
В уроке прописано следующее: if (x &gt; 0) { if (y &gt; 0) // x &gt; 0 , y &gt; 0 ...

Запись условия
Здравствуйте, не подскажите как правильно записать условие, если скажем есть...

Пояснения условия
Пожалуйста поясните следующую задачу. (Прошу решения не предлагать, мне нужно...

Условия функции
Здравствуйте, можете пожалуйста помочь с определением ограничений для данной...


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

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

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