Re: Наближеність чисел
Ні, віднімання модулів вам нічого не дасть.
І на питання про вираз я вже відповідав.
так, але я не розумію, що саме має бути в тому виразі
умову можна так записати if (abs(min)>abs(k-a))
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Наближеність чисел
Для відправлення відповіді ви повинні увійти або зареєструватися
Ні, віднімання модулів вам нічого не дасть.
І на питання про вираз я вже відповідав.
так, але я не розумію, що саме має бути в тому виразі
умову можна так записати if (abs(min)>abs(k-a))
min у вас - це найкраще з попередніх значень a, а отже, порівнювати треба не його, а його відстань до k.
хоча стоп.. перше ми шукаємо відстань від к до а, тоді кожне число а перевіряємо чи є воно найближчим до к.. потім перевіряємо умову в циклі, якщо відстань є більшою за першу відстань, то тоді все спочатку.. тепер я розумію, що ми можемо ввести ще одну змінну для того, щоб витягнути потрібне число з послідовності..
тому перед циклом прописуємо, що min=k-a; c=a; де мін - відстань, а с - наближене значення, відповідно в циклі буде
if (abs(min)>abs(k-a))
{
c=a;
min=k-a;
}
А в загальному код буде так виглядати:
#include <iostream>
#include <stdio.h>
#include <locale>
#include <math.h>
int main()
{
setlocale(LC_CTYPE, "ukr");
unsigned int i, n;
double k, a;
printf("Введiть n=");
scanf_s("%u", &n);
printf("Введiть k=");
scanf_s("%lf", &k);
double min,c;
printf("Ввести 1 число:");
scanf_s("%lf", &a);
min=k-a;
c=a;
for (i = 2; i <= n; i++)
{
printf("Ввести %i число:", i);
scanf_s("%lf", &a);
if (abs(min)>abs(k-a))
{
c=a;
min=k-a;
}
}
printf("Наближене значення: %f\n", c);
system("pause");
return 0;
}
Відстань не буває від'ємною.
Ви нічого не переплутали ?
Якщо ви це серйозно, то я буду змушений переконати вас, що відстань може бути від'ємною.
треба модуль, щоб відстань не була від'ємною
треба модуль, щоб виконати одне порівняння замість двох.
ага, логічно.. я використала модуль, тому порівнювала лише раз, без модуля треба було б два рази порівнювати.. але попердній мій код цього разу вже правильно вийшов?
koala написав:Відстань не буває від'ємною.
Ви нічого не переплутали ?
Якщо ви це серйозно, то я буду змушений переконати вас, що відстань може бути від'ємною.
Ні, нічого, якщо мова не йде про якусь дуже специфічну величину з-поза класичної метричної теорії, на кшталт псевдоріманівих многовидів
https://en.wikipedia.org/wiki/Distance#General_metric
мдаа... дійсно... я щось затупила на цьому.. аж тепер мені все пішло і головне, що мені все ясно.. дякую за допомогу))
Akos_Bond,
abs(min-k)==abs(a-k)
я не розумію чого, але з даною умовою чи попередньою програма працює некоректно.. вона виводить тільки перше число, яке ми вводимо, у результаті.. моя викладачка з оп не дивлячись, що буде в результаті сказала, що це неправильно, адже в умові порівнювати не можна..
Звісно. Ця умова містить очевидну помилку, але оскільки вам усе було ясно, я не став її виправляти.
Для відправлення відповіді ви повинні увійти або зареєструватися