1

Тема: Масив вказівників

Задача така: Утворити масив із 10 вказівників на динамічні дробові змінні (кожен елемент масиву вказує на одну дробову змінну). Динамічні дробові змінні проініціалізувати випадковими значеннями (або з клавіатури). Знайти найменше число серед створених динамічних змінних і поміняти його місцями з останнім числом.

І, ніби все ясно, але проблема в тому, я не знаю як оформити масив вказівників на динамічні змінні, щоб не вручну записувати всі 10 змінних.
Поясніть мені, будь ласка, як це правильно зробити.

2

Re: Масив вказівників

Все досить чітко описано навіть в тій самій вікіпедії

3

Re: Масив вказівників

Якщо я правильно зрозумів, що таке динамічні дробові змінні, то в циклі з допомогою new double.

4

Re: Масив вказівників

Реалізувала таким чином:

Прихований текст
#include <iostream>
#include <stdlib.h>
#include <ctime>
 
using namespace std;
 
int main()
{
    srand(unsigned(time(0)));
 
    const int ARRAY_SIZE = 10;
 
    double *p_numbers[ARRAY_SIZE];
    for (int i = 0; i < ARRAY_SIZE; ++i)
        p_numbers[i] = new double(-5 + (double)rand() / RAND_MAX * 25);
 
 
    cout << "Array: \n";
    for(int i = 0; i < ARRAY_SIZE; ++i)
        cout << *p_numbers[i] << " ";
     cout << "\n";
 
     double min = *p_numbers[0];
     int pos_min = 0;
     for (int i = 1; i < ARRAY_SIZE; ++i)
     { if (*p_numbers[i] < min)
            min = *p_numbers[i];
            pos_min = i;
     }
     cout << "Min: " << min << "\n";
 
     *p_numbers[pos_min] = *p_numbers[ARRAY_SIZE - 1];
     *p_numbers[ARRAY_SIZE - 1] = min;
  
    cout << "Swap array: \n";
    for(int i = 0; i < ARRAY_SIZE; ++i)
        cout << *p_numbers[i] << " ";
     cout << "\n";
 
     for (int i = 0; i < ARRAY_SIZE; ++i)
        delete p_numbers[i];
 
    return 0;
}

Але тепер інша проблема: не міняються місцями елементи, а мінімальний дублюється на місці останнього, а той просто зникає. Що може бути не так?

5 Востаннє редагувалося koala (02.10.2015 13:51:32)

Re: Масив вказівників

Ось тому ЗАВЖДИ треба ставити {} після if/while/for:

if (*p_numbers[i] < min)
{ //<-- забули!
                min = *p_numbers[i];
                pos_min = i;
}//<-- забули!
Подякували: pika19892

6

Re: Масив вказівників

Дякую. Знову ви мене виручили :[