1 Востаннє редагувалося Joker (07.08.2014 13:07:14)

Тема: swap [Вирішено]; random

Проблемка з функцією swap
Коли працюю з звичайними змінними все супер.

    double a, b;

    cin >> a >> b;

    cout << " a = " << a << endl;
    cout << " b = " << b << endl;

    swap(a, b);

    cout << " \n a = " << a << endl;
    cout << " b = " << b << endl;

Так все супер!!!
А от коли я хочу поміняти місцями елементи масиву - помилка.
Єдиний вихід що я знайшов це помістити елементи масиву у окремі змінні, але тоді простіше поміняти елементи масиву вручну (не функцією, а через 3 змінну)

Можливо я щось не правильно роблю?
Можливо це неможливо за допомогою цієї функції, є інші? (чи краще вручну?)

2

Re: swap [Вирішено]; random

Якщо точніше мені потрібно поміняти

swap (arr[i], min)

все опрацьовується у циклі

3

Re: swap [Вирішено]; random

В гілку негайно викликаються телепати, які розкажуть нам, як визначені arr, min і яка саме помилка виникає.

4 Востаннє редагувалося Joker (06.08.2014 22:46:27)

Re: swap [Вирішено]; random

ну добре, я думав це зайвий код.
ОГО!!! Пояснюю, після того як я створив цю тему, код програми неодноразово редагувався. Відновлював з пам'яті і заодно дещо підкоректував його. І тепер він працює. Де помилка не знаю. Скоріш за все, як завжди якась дурня.

працюючий код
#include <iostream>
#include <conio.h>
#include <time.h>
#include <random>
using namespace std;

int main()
{
    setlocale(LC_CTYPE, "ukr");
    srand(time(NULL));

    const int size = 10;
    int arr[size];

    // Заповнення масиву
    for (int i = 0; i < size; ++i)
        arr[i] = rand() % 100;

    // Вивід масиву на екран
    cout << "\n" << "Початковий масив:" << endl;
    for (int i = 0; i < size; ++i)
        cout << "arr [" << i << "] = " << arr[i] << endl;

    // Пошук мінімального значення
    int min = arr[0];
    int index;
    for (int i = 0; i < size; ++i)
    {
        if (arr[i] < min)
        {
            min = arr[i];
            index = i;
        }

    }

    cout << "\n" << "Мiнiмальне значення = " << min << endl;
    cout << "\n" << " arr [0] = " << arr[0] << endl;
    cout << "index of min = " << index << endl;

    swap(arr[0], arr[index]);
    cout << "arr[0] = " << arr[0] << endl;
    cout << "arr[index] = " << arr[index];
    _getch();
    return 0;
}

Вибачте за таке непорозуміння  *SORRY*

5

Re: swap [Вирішено]; random

Доречі, у мене чомусь random видає тільки цілі числа.

Припущення:
1) Я роблю щось неправильно? (тоді я кину код)
2) Рандом не може видавати дробові числа?

6 Востаннє редагувалося koala (07.08.2014 08:50:10)

Re: swap [Вирішено]; random

random - це бібліотека, бібліотека не може давати числа. Ви щось робите явно не так.

7 Востаннє редагувалося Joker (07.08.2014 09:29:17)

Re: swap [Вирішено]; random

Коли викликаю функцію rand ... і хочу присвоїти значення якісь змінній.

#include <iostream>
#include <time.h>
#include <random>
#include <conio.h>
using namespace std;

int main ()
{
srand (time(NULL));
double a = rand () % 100;

return 0;
}

Я хочу щоб rand закинув у змінну а якесь дробове число.

8

Re: swap [Вирішено]; random

koala написав:

random - це бібліотека, бібліотека не може давати числа. Ви щось робите явно не так.

Не в всіх випадках ще є функція random(); вона видає тільки цілі числа від 0 до н. Знаходиться у stdlib.h (точно робить в Turbo C++ 3.0) https://yadi.sk/i/uUjAlDRuZDEo5

9

Re: swap [Вирішено]; random

Подивіться визначення функції rand в довідці, документації чи бібліотеці і подумайте.
Підказка: "функції rand()%" не існує. Існує функція rand і оператор %.

10

Re: swap [Вирішено]; random

Добре скажу так. Як закинути будь-яке (рандомне, випадкове) дробове число у змінну?

11

Re: swap [Вирішено]; random

У вас зараз є два шляхи:

темний бік Сили

я даю вам те, чого ви хочете, але наступного разу ви знову побіжите на форум з питанням, бо у вас буде формула для розв'язання вашої проблеми, а не розуміння, як розв'язувати такі проблеми

світлий бік Сили

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

Що обираєте?

12

Re: swap [Вирішено]; random

Ну зазвичай я граю за зло. Але я вибираю світлий бік (заради того, щоб зло стало сильнішим).
Час у мене заки є, зусиля можна знайти.

Ну то за роботу...
Я можу розмовляти:
1) скайп
2) соц мережі
3) тут

13

Re: swap [Вирішено]; random

Тоді наведіть проголошення функції rand і щось скажіть про те, як із неї:
- отримати число в певному діапазоні і до чого тут %;
- отримати дробне число.
Свої роздуми, хоч щось. Якщо важко - забудьте, що це rand і уявіть собі, що це функція для вводу чисел із таким самим заголовком.

14 Востаннє редагувалося Joker (07.08.2014 10:34:38)

Re: swap [Вирішено]; random

Зрозумів не все що ви від мене хочете.
% - оператор ділення по модулю (ділення з остачею)
Нюанси оператора % :
1) працює тільки з цілими числами
2) приділенні меншого числа на більше, результатом буде менше число (3%5 = 3)

Щоб використовувати функцію rand потрібно підключити 2 бібліотеки

#include <time.h>
#include <random>

time.h - щоб задати початкове зерно відліку.
random - містить функцію rand

початкове зерно задається за допомогою srand(). Потрібно вказати всередині time(NULL) відлік мілісекунд з якогось там року.

Діапазон від x до y
rand () % (x+1-y) + y

От здається і все, що  я знаю  про цю функцію

15

Re: swap [Вирішено]; random

Ви взагалі знаєте, що таке заголовок функції?

16

Re: swap [Вирішено]; random

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

17

Re: swap [Вирішено]; random

Так який заголовок функції rand?

18 Востаннє редагувалося Joker (07.08.2014 11:05:53)

Re: swap [Вирішено]; random

random

Прихований текст

Відчуваю себе як на контрольній з біології. Слава Богу я забув щоденник

19

Re: swap [Вирішено]; random

Значить, не знаєте. Ось проголошення (заголовок):

int rand (void);

Тобто функція rand нічого не приймає параметрами і видає int. Ціле. Яке саме? Правильно - випадкове. А залишок від ділення цього числа на якесь x буде давати випадкове число від нуля до x. А якщо додати до цього числа y, то отримаємо одне з x чисел від y до y+x - що ви і продемонстрували формулами. Це зрозуміло?
Тоді поїхали далі. Як отримати дробне число з цілого?

20

Re: swap [Вирішено]; random

Умм. У мене було 2 припущення. Але перед тим як опозоритися я їх протестував. Так от жодне з них не правильне.
І у мене нема більше варіантів.
Здаюсь (я так і думав що я тупий).