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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2019, 20:20   #1
_piSarUGA_
Новичок
Джуниор
 
Регистрация: 02.12.2019
Сообщений: 3
По умолчанию Почему при получении 0 выдает билиберду

суть вопроса в чём: перебираю х с шагом 0,4, с -2 до 7 и вывожу на экран.
как только шаг доходит до нуля, выводит билиберду, до и после нуля всё отлично.
работаю в Visual 2019, пробовал в онлайн компиляторе.
листинг и скрин вывода прилагаю.

Код:
#include <iostream>
#include <cmath>

int main() {
	
	double f = 0,
		x_min = -2,
		x_max = 7,
		a;

	std::cout << "Enter a:";
	std::cin >> a;

	for (double x = x_min; x <= x_max; x += 0.4) {

		if (fabs(cos(x) > 1 / sqrt(2)) ) {
			f = x + sqrt(a);
		}
		else {
			f = x - 1;
		}

		if (fmod(int(f), 2) == 0) {
			std::cout << "f(" << x << ")\t= \t" << int(f) << "\t: celoe, chet; \n";
		}
		else {
			std::cout << "f(" << x << ")\t= \t" << int(f) << " \t: celoe, nechet; \n";
		}

	}

	return 0;
}
Изображения
Тип файла: png Screenshot_1.png (30.3 Кб, 5 просмотров)

Последний раз редактировалось BDA; 02.12.2019 в 21:05.
_piSarUGA_ вне форума Ответить с цитированием
Старый 02.12.2019, 21:06   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

У вас получилось просто очень маленькое отрицательное число, но не ноль.
Можно сделать так:
Код:
std::cout << "f(" << std::fixed << x << ")\t= \t" << int(f) << "\n";
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.12.2019, 21:17   #3
_piSarUGA_
Новичок
Джуниор
 
Регистрация: 02.12.2019
Сообщений: 3
По умолчанию

Я это уже понял.
Вопрос в другом, если я использую int(f), то у меня шаг потеряется (будет -2, -1, -1 и т.д.). Могу ли я округлить до одного знака после запятой?
Цитата:
Сообщение от BDA Посмотреть сообщение
У вас получилось просто очень маленькое отрицательное число, но не ноль.
Можно сделать так:
Код:
std::cout << "f(" << std::fixed << x << ")\t= \t" << int(f) << "\n";
_piSarUGA_ вне форума Ответить с цитированием
Старый 02.12.2019, 21:26   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Если округлять только для вывода:
Код:
#include <iomanip>

std::cout << std::fixed << std::setprecision(1) << "f(" << x << ")\t= \t" << f << "\n";
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 02.12.2019, 21:34   #5
_piSarUGA_
Новичок
Джуниор
 
Регистрация: 02.12.2019
Сообщений: 3
По умолчанию

немного кривовато получилось, но и на том спасибо!

Цитата:
Сообщение от BDA Посмотреть сообщение
Если округлять только для вывода:
Код:
#include <iomanip>

std::cout << std::fixed << std::setprecision(1) << "f(" << x << ")\t= \t" << f << "\n";
Изображения
Тип файла: png Screenshot_2.png (30.9 Кб, 3 просмотров)
_piSarUGA_ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Почему JS выдает undefined?? Shvarcengold Помощь студентам 4 27.12.2017 00:07
Почему постоянно выдает 0? Shadowfank Общие вопросы C/C++ 2 02.03.2017 20:56
Не знаю почему выдает ошибку marina krasa Microsoft Office Excel 3 25.05.2013 22:22
Почему выдает ошибку??? marales Помощь студентам 6 30.12.2012 16:17
Выдает ошибку, обьясните почему... MuRDOC Общие вопросы C/C++ 8 05.05.2010 20:59