Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

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


Ответ
 
Опции темы
Старый 08.11.2019, 13:23   #11
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,585
По умолчанию

Под словом разрешается я подразумевал "работает как ожидалось". А если это запрещено, то на запрет есть основания, одним из которых является неожиданное значение выражения
Вадим Мошев вне форума Ответить с цитированием
Старый 08.11.2019, 13:26   #12
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,097
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Под словом разрешается я подразумевал "работает как ожидалось".
У каждого свое ожидалось. Кто знает более-менее язык понимает, что там ожидается.

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
А если это запрещено, то на запрет есть основания, одним из которых является неожиданное значение выражения
Так значение не неожиданное.
Пишу программы на С++. ТЗ, цену и сроки на p51x.fr {@} яндекс.ру
p51x вне форума Ответить с цитированием
Старый 08.11.2019, 15:45   #13
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 315
По умолчанию

Так, а что тут дискуссировать?
Цитата:
Сообщение от BDA Посмотреть сообщение
Проблемка, что и
Не вижу проблемки.
Если кому интересно:
Вот ссылка на он-лайн CPP компиль.
Вот листинг с тестом:
Код:
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
const double p = M_PI;
int main()
{
	double x, f, f1, f2;
	cout << "Enter X" << endl;
	cin >> x;
	// Check input\output
	f1 = (pow(x, 2)) - x;
	cout << "f1= " << f1 << endl;
	f2 = (pow(x, 2)) - (sin(p * x));
	cout << "f2= " << f2 << endl;
	// End check
	if (x < 0){
	    cout << "No F(x), Input Error"; return 0;
	}
	else 
	    //if ((0 <= x) && (x <= 1)){ // "if 1" больше подходит под условие ТС
	    if (0 < x < 1){ // "if 2" как алтернатива
		f = (pow(x, 2)) - x;
		}
	else 
	    //if (x > 1){ // "if 1" больше подходит под условие ТС
	    if (x >= 1){ // "if 2" как алтернатива
		f = (pow(x, 2)) - (sin(p * x));
		}
	cout << "F(x) = " << f << endl;
	system("pause");
	return 0;
}
И как говорил Лис, программа должна делать что хотели, а не что написали.
Цитата:
Сообщение от BDA Посмотреть сообщение
Так что, Desc, прошу ткнуть в стандарт плюсов
Ткнул Раз
Ткнул Два
Ткнул Три

P. S.
Только вот автору темы похоже побарабану наши диспуты.

Последний раз редактировалось Desc; 08.11.2019 в 15:53. Причина: Добавил P. S.
Desc вне форума Ответить с цитированием
Старый 08.11.2019, 16:19   #14
BDA
Модератор
Заслуженный модератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 5,429
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Оно то разрешается
Да, неверно выразился. Хотел сказать, что срабатывает как двойное неравенство в математике.

Desc, а теперь введите x = 0.5 и зацените значение f.
Так диспуты для общего развития, а не ради ТС.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 08.11.2019, 16:19   #15
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
Только вот автору темы похоже побарабану наши диспуты.
Автору, может, и по барабану, а я вот весьма удивлена написанным.

А что это за якобы доказательства стандарта плюсов?

Цитата из первого:
Цитата:
В математике правильной записью считается такая запись: 0 <= x < 30, а в С++ правильной записью считается вот такая запись: ( x >= 0 ) && ( x < 30 ) или такая 0 <= x && x < 30
Тут как бы противоположное "доказательству" говорится.

Второе и третье в себе не содержат даже записей вида "x < y < z".

А вообще существует такой документик - стандарт С++. А не чьи-то непонятные статейки.

Сам С++ много чего может разрешить делать. Это один из лучших языков, чтобы прострелить себе ногу. Но это значит лишь то, что пользоваться подобными штуками можно только в том случае, если понимаешь их механизм.

Вот в примере if (0 < x < 1) что первое посчитается? 0 < x или x < 1? С чем второе условие сравнится? С полученным результатом первого или все-таки с x?

Если убрать из вашей программы лишние вычисления, оставить только условия:

Код:
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
const double p = M_PI;
int main()
{
	double x;
	cout << "Enter X" << endl;
	cin >> x;
	if (x < 0){
	    cout << "No F(x), Input Error"; 
	}
    if (0 < x < 1){
		cout << "0 < x < 1"; 
		}
	else 
	    if (x >= 1){ 
		cout << "x >= 1"; 
		}
	system("pause");
	return 0;
}
и ввести туда 0, то программа ответит

Код:
Enter X
0
0 < x < 1
То есть она при 0 зайдет в то условие, которое проверяет, что х > 0. Разве это правильно?
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 08.11.2019, 16:48   #16
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,097
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
Вот в примере if (0 < x < 1) что первое посчитается? 0 < x или x < 1?
https://en.cppreference.com/w/cpp/la...tor_precedence

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
С чем второе условие сравнится? С полученным результатом первого или все-таки с x?
С полученным приведенным результатом. У вас же в std::cout << 5 << 6 6 не в 5 "сдвигается"/выводится.
Пишу программы на С++. ТЗ, цену и сроки на p51x.fr {@} яндекс.ру
p51x вне форума Ответить с цитированием
Старый 08.11.2019, 17:09   #17
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Это были вопросы для автора совета писать условие в виде x < y < z, "на подумать" стоит ли так делать.

Но все равно спасибо за ответы.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 08.11.2019, 17:21   #18
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 315
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Desc, а теперь введите x = 0.5 и зацените значение f
Заценил, не учел.
Можно использовать другой вариант "И"
Код:
        else 
	    if ((0 <= x) && (x <= 1)){ // "if 1" больше подходит под условие ТС
	    //if (0 < x < 1){ // "if 2" как алтернатива
		f = (pow(x, 2)) - x;
		}
	else 
	    if (x > 1){ // "if 1" больше подходит под условие ТС
	    //if (x >= 1){ // "if 2" как алтернатива
		f = (pow(x, 2)) - (sin(p * x));
		}
Цитата:
Сообщение от ACE Valery Посмотреть сообщение
условие в виде x < y < z, "на подумать" стоит ли так делать
В листинге оба варианта "И" приведены. А что хорошо и что не очень, преподаватель подскажет студенту. Или сам додумает. Код то вычисления по условию выполняет.
Desc вне форума Ответить с цитированием
Старый 08.11.2019, 18:03   #19
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Цитата:
Сообщение от Desc Посмотреть сообщение
Код то вычисления по условию выполняет.
И то правда

Чем больше студентов, которые тупо постят задачки, не желая разбираться, и чем больше советчиков, которые дают решения "на отвали", тем ценнее я как специалист. Пусть даже и не в С++. Но подход-то к работе от языка не зависит.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 08.11.2019, 19:10   #20
Desc
Форумчанин
 
Аватар для Desc
 
Регистрация: 21.11.2007
Сообщений: 315
По умолчанию

Цитата:
Сообщение от ACE Valery Посмотреть сообщение
и чем больше советчиков, которые дают решения "на отвали"
Да ладно.. Где тут "на отвали"?
Код с двумя вариантами if, на выбор. Один из них правда, как выяснилось, с "0.5" путается. Так есть другой if в коде.
Desc вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корректность xml данных Utkin Общие вопросы по программированию, компьютерным наукам 4 06.07.2013 19:49
Корректность ввода на СИ glebast Помощь студентам 4 14.09.2012 22:42
Корректность скобок! Sport Помощь студентам 3 22.03.2012 20:33
Корректность Регулярного выражения Altera Свободное общение 4 18.08.2011 17:44
Корректность закачки _Den_1984 Работа с сетью в Delphi 0 15.02.2011 14:30