Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2013, 13:14   #1
Лотос1111
 
Регистрация: 03.05.2013
Сообщений: 5
Вопрос Работ с операторами if и else (си)

Здравствуйте, помогите разобраться, в чём ошибка. Программа выдаёт одни и те же значения и вообще не заходит в условие if(x==1.3). Само задание: Дано а. Вычислить значения ф-ии у=(те значения что при условиях), где х изменяется в интервале от 0,8 до 2 с шагом 0,1. Вывести на печать значения ф-ии у>0. Заранее спасибо.

#include<stdio.h>
#include<math.h>
int main()
{
int a;
float x,y=0;
printf("Vvedite a: ");
scanf("%d", &a);
printf("a=%d",a);

for( x = 0.8; x < 2; x = x + 0.1 )
{


if (x<1.3) y = (M_PI*x*x*x )- (7 / x*x);
else

if ( x ==1.3) y = (a*x*x*x) + (7*sqrt(x));

else
if(x > 1.3) y = (log(x)/log(10)) + (7*sqrt(x));


printf("\n");

if ( y > 0 ) printf("x=%f y=%f",x,y);

}
return 0;
}
Лотос1111 вне форума Ответить с цитированием
Старый 03.05.2013, 13:21   #2
No_Comments
Пользователь
 
Регистрация: 03.07.2011
Сообщений: 92
По умолчанию

Попробуйте вообще else убрать. Оставьте только if'ы )
No_Comments вне форума Ответить с цитированием
Старый 03.05.2013, 13:33   #3
Лотос1111
 
Регистрация: 03.05.2013
Сообщений: 5
По умолчанию

Да, я пробовала, всё равно не получается. Проблема с условием x==3, что то я не так делаю, получается вообще туда не заходит, при любом а одно и тоже значение выдаёт.
Лотос1111 вне форума Ответить с цитированием
Старый 03.05.2013, 14:23   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Вы можете показать картинку, по которой составлялись уравнения?

Попробуйте:
Код:
#include <stdio.h>
#include <math.h>

#define EPS 0.0000001
int
main()
{
    int a;
    float x, y = 0;
    printf("Vvedite a: ");
    scanf("%d", &a);
    printf("a = %d\n", a);
    for(x = 0.8; x < 2; x += 0.1) {
        if (x < 1.3 - EPS) {
            y = (M_PI*x*x*x ) - (7 / x*x);
        } else if (x > 1.3 + EPS) {
            y = (log(x)/log(10)) + (7*sqrt(x));
        } else {
            y = (a*x*x*x) + (7*sqrt(x));
        }
        if (y > 0) printf("x = %f y = %f\n", x, y);
    }
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 03.05.2013 в 14:31.
BDA на форуме Ответить с цитированием
Старый 03.05.2013, 15:21   #5
Лотос1111
 
Регистрация: 03.05.2013
Сообщений: 5
По умолчанию

С добавление EPS 0.0000001, всё работает , почему? Спасибо Вам за помощь.
Изображения
Тип файла: jpg Безымянный.jpg (30.9 Кб, 117 просмотров)
Лотос1111 вне форума Ответить с цитированием
Старый 03.05.2013, 15:28   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,322
По умолчанию

Пожалуйста.
Потому что точного значения 1.3 нельзя получить на компьютере - только приближенное, состоящее из чисел - степеней двойки.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с операторами SW00001 Общие вопросы Delphi 7 27.01.2013 14:32
Задачи с операторами повтора. AntoshkaK Паскаль, Turbo Pascal, PascalABC.NET 0 09.12.2011 07:39
Практическая с Операторами циклов по BC++ Juice_TKD Помощь студентам 3 17.05.2011 22:17
циклы с операторами For, While, Repeat baltser Помощь студентам 1 03.06.2010 06:59
Подсобите с операторами Паскаля... yurasta Помощь студентам 0 17.05.2010 20:17