1 Востаннє редагувалося kerimov_e (17.12.2019 20:36:59)

Тема: Округлення з використанням елементарних арифметичних операцій

Дане дійсне число Х. Одержати число Х, округлене до найближчого цілого, використовуючи тільки елементарні арифметичні операції (+, –, *, /).

Як з цього коду зробити округлення з використанням елементарних арифметичних операцій?

//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <math.h>
using namespace std;
 
int main ()
{
    double x;
        cout<<"vved' nechile chislo= ";
    cin >> x;
        cout<<"cila chast. cisla = ";
  
    if(x >= 0)cout << floor(x) << endl; 
    if(x < 0) cout << ceil(fabs(x)) << endl;
       cout<<"okryglenno do najblizh= ";
 
    if(x >= 0)cout << floor(x) << endl; 
    if(x < 0) cout << ceil(x) << endl;


system("pause");
    return 0;}

2

Re: Округлення з використанням елементарних арифметичних операцій

З цього коду - ніяк, очевидно. Він просто викликає стандартні функції для потрібного вам перетворення, а вам треба написати аналог такої функції.
Уточніть у викладача - мова йде про:
- саме отримання формули цілої частини з дійсного числа (це неможливо) і її представлення у вигляді коду;
- отримання цілої частини математично коректною процедурою, що не використовує інших перетворень чисел, окрім згаданих, але вільно може використовувати цикли, присвоєння, порівняння і т.д.;
- отримання цілої частини за допомогою згаданих операторів мови C++, тоді потрібне уточнення, наприклад, чи можна користуватися оператором присвоєння '='? А операторами виведення? А якщо ні, то як тоді?

3

Re: Округлення з використанням елементарних арифметичних операцій

double x = 5.5654;
int y = x;

використовує неявне перетворення, що вважається дурним тоном у програмуванні, але робить те, що вам треба; але, підозрюю, це не те, що мав на увазі ваш викладач.

Подякували: Arete1

4

Re: Округлення з використанням елементарних арифметичних операцій

Цікаво, операції порівняння використовувати можна? Якщо так, то ось простий, неоптимальний, але робочий варіант: збільшуєте шукане число на 1, доки воно не наблизиться до заданого значення менш ніж на 0.5 (замість збільшення на 1 можна придумати щось краще, напр., дихотомічний пошук, як у грі «вгадай число», але загальний принцип той же).

Подякували: koala, Arete2

5

Re: Округлення з використанням елементарних арифметичних операцій

Я теж про дихотомію подумав. Але ж не сказано, якими саме конструкціями мови можна користуватися - якщо можна циклами, порівнянням та присвоєнням користуватися, то чому неявним перетворенням не можна?