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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2020, 16:45   #1
vitakonnor
Новичок
Джуниор
 
Регистрация: 26.03.2020
Сообщений: 2
По умолчанию [C++] Помогите решить уравнение с помощью do-vhile

Помогите решить задачу циклического алгоритма с использованием оператора итерации do-while (код c++). Исходные данные в изображении. Работаю в Microsoft Visual Studio Community*2019. Напечатал код, но он не работает в чем проблема? (как считаю проблема в 19 строке, но из-за неопытности не знанию как прописать строку правильно чтобы уравнение считалось верно)

Код:
Код:
#include "stdio.h"
#include <iostream>
#include <Windows.h>
#include <math.h>
#include <TCHAR.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	SetConsoleOutputCP(1251);
	double a = 2, b = 0.7, c = 0.5, tmin, tmax, dt, t, z, tr;
	cout << "Введите предельное значение аргумента tmin и tmax, а так же шаг аргумента dt:\n";
	cin >> tmin >> tmax >> dt;
	cout << "Аргумент X\t" << "Функция Z\n\n";
	t = tmin;
	tr = t * 3.14159265358979823846 / 180;
	do
	{
		z = a * cos((b * tr * sin(tr))) + c;
		if (cos((b * tr * sin(tr))) >1 && cos((b * tr * sin(tr))) < -1 && sin(tr) > 1 && sin(tr) < -1) cout << t << "\t\t" << z << "\n";
		else cout << t << "\t\t" << "Неверный аргумент\n";
		t += dt;
	} while (t <= tmax);
	return 0;
}
Изображения
Тип файла: png Безымянный.png (24.0 Кб, 0 просмотров)

Последний раз редактировалось vitakonnor; 26.03.2020 в 16:48.
vitakonnor вне форума Ответить с цитированием
Старый 26.03.2020, 21:46   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Не вижу хучь убей тут решения уравнения, вижу: затабулировать функцию на заданном интервале. Эти странные if'ы ... Не может быть косинус больше 1 по абс. величине, так чего его проверять ? Тупо для кажого аргумента вычислить значение z и в вывод: аргумент => функция. Уравнение, как учили в старину, - это найти такой x, для которого F(X)=0. И вряд ли с переходом в капитализьм что-то тут поменялось.

Последний раз редактировалось digitalis; 26.03.2020 в 21:50.
digitalis вне форума Ответить с цитированием
Старый 27.03.2020, 07:23   #3
vitakonnor
Новичок
Джуниор
 
Регистрация: 26.03.2020
Сообщений: 2
По умолчанию

Спасибо за ответ.
Правильный вариант, тема закрыта
Код:
#include "stdio.h"
#include <iostream>
#include <Windows.h>
#include <math.h>
#include <TCHAR.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
	SetConsoleOutputCP(1251);
	double a = 2, b = 0.7, c = 0.5, tmin, tmax, dt, t, z;
	cout << "Введите предельное значение аргумента tmin и tmax, а так же шаг аргумента dt:\n";
	cin >> tmin >> tmax >> dt;
	cout << "Аргумент T\t" << "Функция Z\n\n";
	t = tmin;
	do
	{
		z = a * cos((b * (t * 3.14159265358979823846 / 180) * sin(t * 3.14159265358979823846 / 180))) + c;
		if (t >= 0 && t <= 90) cout << t << "\t\t" << z << "\n";
		else cout << t << "\t\t" << "Неверный аргумент\n";
		t += dt;
	} while (t <= tmax);
	return 0;
}
vitakonnor вне форума Ответить с цитированием
Старый 27.03.2020, 08:49   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,536
По умолчанию

Ничего тут правильного нет. Проверять корректность введённого диапазона (хотя какая там может быть некорректность, разве что tmax < tmin) нужно до цикла, и тогда не придётся в цикле тупо на каждой итерации сравнивать t, причём не с заданными tmax, tmin , а с константными 0 и 90 град. Из двух одно - или tmax, tmin задаются константами в начале программы, или же вводятся (как в этом коде), но уж тогда сравнивать нужно с этими введёнными значениями. До цикла, конечно. А так введу я, к примру, от -45 до +180град., а прога по идиотски после 90град. будет долдонить об неправильный аргумент.
Хотя как хороший пример плохого программирования - годится. ТСа он, может, и удовлетворит, а неокрепшие умы начинающих программеров подумают, что вот так и надо.

Последний раз редактировалось digitalis; 27.03.2020 в 09:00.
digitalis вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите решить уравнение Canty Помощь студентам 1 09.09.2018 21:37
C++,помогите решить уравнение tarakana Помощь студентам 0 11.11.2015 01:19
помогите решить уравнение fist53 Паскаль, Turbo Pascal, PascalABC.NET 3 04.06.2009 22:47