0 / 0 / 0
Регистрация: 09.09.2019
Сообщений: 1
1

Вычислить значение заданного выражения

09.09.2019, 10:41. Показов 223. Ответов 2
Метки нет (Все метки)

Необходимо решить задачу. Код я написал, все работает, за исключением х=0.1. В пошаговом режиме заметил, что при присваивании х=0.1, он присваивается как х=0.100000001. В сравнении if (X >0.1) значение 0.1 тоже меняется но с большим количеством нолей, типо 0.100000000000001. Из-за этого программа выполняется не так как надо

Вот текст задачи:
Вычислить значение заданного выражения


А вот сам код:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <conio.h>
#include <math.h>
 
 
int main()
{
nope: float X = 0, Z = 0, Y = 0, G = 0, a = 2.5, b = -0.9;
    printf(" Введите x принадлежащий [-1 ; 1] ");
    scanf_s("%f", &X);    
    if (X > 1 or X < -1) goto nope; 
    else if (X >0.1) { Z = b * (pow(X, 0.6666666666666666666)); printf("Z=%f", Z); }
    else if (X <0.1) { Z = a * X*X + b * pow(X, 0.666666666666666666); printf("Z=%f", Z); }
 
    else { Z = a * X*X ; printf("Z=%f", Z); }
    printf("Z=%f", Z);
 
    _getch();
    return 0;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2019, 10:41
Ответы с готовыми решениями:

Вычислить значение заданного выражения
немогу понять как решать такие формулы

Вычислить значение заданного выражения
#include &lt;iostream&gt; #include &lt;conio.h&gt; int main () { setlocale (LC_ALL,&quot;Russian&quot;); using...

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

Вычислить значение арифметического выражения, заданного в виде строки
с клавиатуры вводиться строка типа: &quot;(7+1)*23-1&quot; в одну строку, нужно определить значение...

2
6496 / 4419 / 2529
Регистрация: 18.12.2017
Сообщений: 13,807
09.09.2019, 11:39 2
у Вас код на языке С. определитесь, если нужен код на С нажмите на треугольник в левом нижнем углу и попросите перенести тему в раздел С. если код нужен на языке С++, подтвердите это.
0
3347 / 1925 / 368
Регистрация: 09.09.2017
Сообщений: 7,791
09.09.2019, 12:39 3
Цитата Сообщение от Fraerok47 Посмотреть сообщение
при присваивании х=0.1, он присваивается как х=0.100000001. В сравнении if (X >0.1) значение 0.1 тоже меняется но с большим количеством нолей, типо 0.100000000000001. Из-за этого программа выполняется не так как надо
Это ограничение машинной точности дробных чисел. Их почти никогда нельзя сравнивать строгими операциями. Используйте сравнение с учетом точности:
C
1
2
3
4
5
6
7
8
9
10
11
#define EPS 1e-5
...
if( ( x < -1 )||(x > 1) ){
 
}else if( fabs(x-0.1) < EPS ){
 
}else if( x < 0.1 ){
 
}else if( x > 0.1 ){
 
}
Цитата Сообщение от Fraerok47 Посмотреть сообщение
#include <conio.h>
А это закопайте обратно.
Если уж очень хочется испортить хорошую консольную программу запросом эникея, добавьте system("pause");
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.09.2019, 12:39

Рекурсия: вычислить значение логического выражения, заданного в виде строки
Вывести значение логического выражения, заданного в виде строки S. Выражение определяется следующим...

Вычислить значение заданного выражения для элементов заштрихованной области матрицы
Помогите представить данное выражение в с++ или дайте хотя бы наводку

Расставить приоритеты операций и вычислить значение заданного выражения (Помогите с задачей)
Расставить приоритеты операций и вычислить значение заданного выражения, используя форматы...

Используя пользовательскую рекурсивную функцию вычисления факториала вычислить значение заданного выражения
Даны целые неотрицательные n и m. Составить программу вычисления 1 = (m! + n! )/(m+n)!, используя...


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

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

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