Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> задачка, правильно ли я решил задачку 
:(
    Опции темы
lumentek
Дата 6.3.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



Код

#include <iostream>
#include <iomanip> 
using namespace std;


void main()
{
    double f,a,b,c,x;

    // ввод переменных
    cout <<"a = "; cin >> a;
    cout <<"b = "; cin >> b;
    cout <<"c = "; cin >> c;
    cout <<"x = "; cin >>x;

    
    if(x < 1 && c != 0)
    {
        f = a*(x * x) + (b/c);
        
    }
    else if(x > 1.5 && c == 0)
    {
        f = (x - a) / (x - c) * (x - c);        
        
    }
    else 
    {
        f = (x * x) / (c * c);
        
    }

    // выводим результат
    cout << setprecision(2) << setiosflags(ios::fixed);    
    cout << setw(8) << "Result  = "; cout << setw(8) << f; cout << "\n";
    
}



Описание задачи в аттаче. Посмотрите правильно ли я делаю? Есть подозрение что сравнивать так вещественные типы нельзя. И еще правильно ли сама логика программы решения? А то с математикой всегда напряжно было((((

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  __________.png 6,45 Kb
PM MAIL   Вверх
Dov
Дата 6.3.2010, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



во втором случае можно написать так: 
Код
f = (x - a) / (x * x );
 
а в третьем у тебя может случиться деление на 0.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
lumentek
Дата 6.3.2010, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



препод говорит что при сравнении вещественных чисел нужно делать так 
if (fabs(a-b)<eps) {...}, 
Не понимаю зачем?
PM MAIL   Вверх
Oxy
Дата 6.3.2010, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: нет
Всего: 1



Код

if (10 == 10/3.0*3.0)
    cout << "=";
else
    cout << "#";


 smile 
PM MAIL WWW   Вверх
Christoph
Дата 6.3.2010, 16:09 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



Цитата(lumentek @  6.3.2010,  13:49 Найти цитируемый пост)
Есть подозрение что сравнивать так вещественные типы нельзя


можно


--------------------
user posted image
PM MAIL ICQ   Вверх
Oxy
Дата 6.3.2010, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: нет
Всего: 1



PM MAIL WWW   Вверх
lumentek
Дата 6.3.2010, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



Спасибо! Еще такой вопрос. Ход решения задачи верный в соотвитсвии с аттачем? Просто препод говорит что  логика неверная,во внутри первого if Должна следовать еще один if?
PM MAIL   Вверх
Dov
Дата 6.3.2010, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(lumentek @  6.3.2010,  15:47 Найти цитируемый пост)
Просто препод говорит что  логика неверная,во внутри первого if Должна следовать еще один if?


lumentek, если бы ты читал, что тебе пишут, 
Цитата(Dov @  6.3.2010,  14:18 Найти цитируемый пост)
а в третьем у тебя может случиться деление на 0.

то не задавал бы таких вопросов.  smile 

отсюда следует, что один из вариантов может выглядеть так:
Код
void main()
{
    double f,a,b,c,x;
    
    // ввод переменных
    cout <<"a = "; cin >> a;
    cout <<"b = "; cin >> b;
    cout <<"c = "; cin >> c;
    cout <<"x = "; cin >> x;

    f = -987.654;        
    if(c != 0) 
    {
        if(x < 1.)
            f = a * x * x + b / c;
        else
            f = x * x / (c * c); 
    }
    else 
    {
        if(x > 1.5)
            f = (x - a) / (x * x);
    }

    // выводим результат
    cout << "Result  = " << f << endl; 
}





--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
lumentek
Дата 6.3.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



Код

f = -987.654;

А для f инициализировали таким значением?
PM MAIL   Вверх
Dov
Дата 6.3.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(lumentek @  6.3.2010,  12:49 Найти цитируемый пост)
Есть подозрение что сравнивать так вещественные типы нельзя.

в этом примере нет сравнения на равенство (ноль - не всчёт, ибо ноль и в Африке ноль  smile ) , а только на больше / меньше. По-этому, сравнивать так, по моему скромному мнению,  можно....

Добавлено через 2 минуты и 21 секунду
Цитата(lumentek @  6.3.2010,  16:28 Найти цитируемый пост)
А для f инициализировали таким значением?

Ну, надо же как-то инициализировать?  smile    Пусть будет такое, что бы не путать его с результатами вычисления.   smile   Ты можешь придумать любое другое..   smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
lumentek
Дата 6.3.2010, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 19.11.2009

Репутация: нет
Всего: нет



 спасибо. А еще вот тут  
Код

if(x < 1.)

после единички стоит точка это для того  чтобы компилятор понял что 1 это вещественно число или зачем?
PM MAIL   Вверх
Dov
Дата 6.3.2010, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Цитата(lumentek @  6.3.2010,  16:41 Найти цитируемый пост)
после единички стоит точка это для того  чтобы компилятор понял что 1 это вещественно число

 smile

Добавлено через 2 минуты и 12 секунд
Цитата(lumentek @  6.3.2010,  15:47 Найти цитируемый пост)
Просто препод говорит что  логика неверная

Подсунь ему такой вариант:
Код
void main()
{
    double f,a,b,c,x;
    
    // ввод переменных
    cout <<"a = "; cin >> a;
    cout <<"b = "; cin >> b;
    cout <<"c = "; cin >> c;
    cout <<"x = "; cin >> x;
            
     f = c ? (x < 1.) ? (a * x * x + b / c) : (x * x / (c * c)) : (x > 1.5) ? (x - a) / (x * x) : -987.654;

    // выводим результат
    cout << "Result  = " << f << endl; 
}


Пусть проверяет свою логику...  smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Oxy
Дата 6.3.2010, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Awaiting Authorisation
Сообщений: 70
Регистрация: 20.9.2009

Репутация: нет
Всего: 1



Цитата(Dov @  6.3.2010,  17:31 Найти цитируемый пост)
а только на больше / меньше


Код

if (0.9 > 0.2+ 0.7)
    cout << '=';
else
    cout << '#';


?

PM MAIL WWW   Вверх
Vaulter
Дата 6.3.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Цитата(lumentek @ 6.3.2010,  18:41)
спасибо. А еще вот тут  
Код

if(x < 1.)

после единички стоит точка это для того  чтобы компилятор понял что 1 это вещественно число или зачем?

Да!

C++ Final Draft International Standard
C++ International Standard PDF

и не препод, а учитель smile ты сюда бежишь за вопросами smile 
1. спроси у учителя, выслушай и пойми его ответ smile
2. подумай, поищи сам. Попробуй. хоть разок smile
3. спроси здесь  и пойми  ответ smile
4. пойми что это тебе не нужно и смени род деятельности  smile 


Это сообщение отредактировал(а) Vaulter - 6.3.2010, 17:55


--------------------
PM MAIL WWW ICQ   Вверх
Dov
Дата 6.3.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 11
Всего: 88



Oxy, в твоём примере результат вычисления, а в этом -  значения, вводимые пользователем ручками. Что он введёт, то и будет....   я так думаю...   smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0557 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.