Тема: Допоможіть записати вираз!
Я ще не вмію записувати такі вирази в мові С++, допоможіть будь ласка
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Допоможіть записати вираз!
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Я ще не вмію записувати такі вирази в мові С++, допоможіть будь ласка
А ви гадаєте, що якщо хтось це зробить за вас, то ви навчитеся? Перепишіть у рядок, і замініть корінь на степінь. До речі, піднесення до степеня в C/C++ - pow(основа, степінь). Результат покажіть.
Будь ласка, поверніть до C/C++. ТС видається не безнадійним.
#include "StdAfx.h"
#include <iostream>
#include <math.h>
int main()
{
float x,y;
int a;
printf("x=");
scanf_s("%f",&x);
printf("y=");
scanf_s("%f",&y);
a=ceil(x+(pow(sqrt(x),5))/1+powf(sin(x+y),2)*(x+y));
printf("Result=%f",a);
return 0;
Ось те, що в мене вийшло і безпосередньо саме завдання, помилок ніяких не видає, але консоль закривається після введення Х і У
Консоль закривається, бо програма добігає кінця і виходить.
Поставте перед return 0; виклик getchar();, тоді програма зупиниться, чекаючи вводу, і консоль залишатиметься.
Потім натиснете ENTER для завершення.
pow(sqrt(x),5)) це неправильно, але це вже не до C чи С++, а до математики.
Згадайте, у який степінь перетворюється корінь n-го степеня і почитайте опис функції pow()
#include "StdAfx.h"
#include <iostream>
#include <math.h>
int main()
{
float x,y;
double a;
printf("x=");
scanf_s("%f",&x);
printf("y=");
scanf_s("%f",&y);
a=ceil(x+(pow(x,1/5)))/1+powf(sin(x+y),2)*(x+y));
printf("Result=%f",a);
getchar();
return 0;
}
Якось так?
Результат такий
x=2.3
y=3.4
Result=13.000000Press any key to continue . . .
1. Коли записуєте довгий дріб із операціями в числівнику та знаменнику в рядок, не забувайте про дужки
1+1
--- = (1+1)/(2+2), а не 1+1/1+2
2+2
2. Ви потрапили у відому пастку. Для цілих операндів операція ділення в C ціла, тобто результат буде округлено вниз. 1/5 == 0; 1.0/5.0 == 0.2.
3. Ніякого множення в знаменнику немає. Ви вже вчили синуси на математиці?
4. Нащо ви powf використовуєте? Маєте pow - то ним і користуйтеся.
А загалом із формулою хтось щось перемудрив. Значення sin змінюються від -1 до 1; в квадраті - від 0 до 1. Корінь 5 степеня будь-чого, більшого за 1, суттєво менший за саме число, а його ще й ділять на щось від 1 до 2. Тобто без особливої точності значення цієї формули буде близьким до x. Вас питають про старший біт; для 32-бітного беззнакового (unsigned int) він буде 0 для всіх чисел, менших за 2147483648, і 1 для більших. Тобто в першому наближенні можна спокійно замінити все це обчислення на порівняння x з 2147483648. Насправді точне значення для порівняння буде дещо відмінним і залежати від y; але корінь 5 степеня з 2147483648 - це приблизно 74. Для чисел, більших за 2147483722, там гарантовано 1, а менших за 2147483685 - гарантовано 0; перше число, яке я навів, як бачите, має 7 правильних знаків. Якщо ж питають за старший біт знакового числа, то в ньому якраз зберігається знак числа, який збігається зі знаком x.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися