С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 6
1

Ошибка заполнения динамического массива рандомными числами

28.10.2017, 17:06. Показов 810. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
По сути, код рабочий, массив заполняется, сортируется и выводится. Но! Если посмотреть программно, то массив не заполненный и если присвоить значение какого-либо его элемента переменной, он не понимает его. В случаи не с динамическим массивом, все работает. В чем может быть ошибка и как с этим бороться
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include  <stdlib.h>
using namespace std;
 
//Функция сортировки массива методом выбора
void sortV(const int n, int *st)
{
    int a;
    for(int i=0; i<n; i++)
    {
        int imin=i;
        for(int j=i+1; j<n; j++)
            if(st[j]<st[imin]) 
                imin=j;
 
        a=st[i];
        st[i]=st[imin];
        st[imin]=a;
 
    }
}
 
void main() 
{
    setlocale(LC_ALL,"Rus");
    int n;
    cout<<"Размер массива > "; cin>>n;
    int *mas= new int[n]; //динамический массив 
    for (int i=0; i<n; i++)
        mas[i]=rand()%100; //заполнение массива случайными числами
    sortV(n, mas);//сортировка массива
    for (int i=0; i<n; i++)
        cout<<mas[i]<<" "<<endl; //вывод массива 
    cout<<endl;
    system("pause");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2017, 17:06
Ответы с готовыми решениями:

Ошибка заполнения динамического двумерного массива
При заполнении массива mas происходит выход за границы массива. По ходу исполнения программы данные...

Заполнение массива рандомными числами
Здравствуйте! Нужно заполнить массив float рандомными числами от 0.3 до 0.9 #define MIN 0.3...

Заполнение массива рандомными числами
Мне необходимо создать массив из 20000 элементов порядок элементов по возрастанию и по убыванию....

Заполнение двумерного массива рандомными числами
Здравствуйте! Стоит задача заполнить двумерный массив случайными значениями, для этого я...

3
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
28.10.2017, 17:14 2
Цитата Сообщение от AlexRadi Посмотреть сообщение
Если посмотреть программно, то массив не заполненный и если присвоить значение какого-либо его элемента переменной, он не понимает его.
Это как?
0
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
28.10.2017, 17:42 3
AlexRadi, все работает исправно...
Присоединяюсь к вопросу: "Это как?"
Что Вы понимаете под "посмотреть программно"?
И что значит "массив не заполненный"?
0
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 6
28.10.2017, 23:06  [ТС] 4

Если через точку останова смотреть, простите, не знаю как правильно это сказать)

Добавлено через 47 минут
Ну или можно сделать так. Программа не работает, ошибку найти не могу)

Задание:
Написать программу, которая:
- запрашивает у пользователя размер одномерного массива и ключ для поиска;
-формирует массив случайных чисел заданного размера;
-осуществляет сортировку выбором получившегося массива;
-осуществляет фибоначчиев поиск в отсортированном массиве;
- возвращает количество найденных в массиве совпадений с ключом и их порядковые номера.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include  <iostream>
#include    <stdlib.h>
using  namespace  std;
 
//Функция  сортировки  массива  методом  выбора
void  sortV(const  int  n,  int  *st)
{
    int  a;
    for(int  i=0;  i<n;  i++)
    {
        int  imin=i;
        for(int  j=i+1;  j<n;  j++)
            if(st[j]<st[imin])  
                imin=j;
 
        a=st[i];
        st[i]=st[imin];
        st[imin]=a;
 
    }
}
 
void  main()  
{
    setlocale(LC_ALL,"Rus");
    int  key,n,  kol=0;
    bool  el=false;
    cout<<"Размер  массива  >  ";  cin>>n;
    int  *mas=  new  int[n];  //динамический  массив  
    int  f[200];
    for  (int  i=0;  i<n;  i++)
        mas[i]=rand()%100;  //заполнение  массива  случайными  числами
    sortV(n,  mas);//сортировка  массива
    for  (int  i=0;  i<n;  i++)
        cout<<mas[i]<<"  "<<endl;  //вывод  массива  
    cout<<"Искомый  элемент  >  ";
    cin>>key;  //ввод  искомого  числа  
    f[0]  =  1;
    f[1]  =  1;
    int  j  =  1;
    do
    {
        j++;
        f[j]=0;
        f[j]  =  f[j  -  1]  +  f[j  -  2];
    }
    while(f[j]  <=  n);
    int  i,  p,q;
    i=f[j-1];
    p=f[j-2];
 
    int  t=j-1;
    while(1)
    {
        if  (key==int(&mas[i]))
        {
            kol++;
            cout<<"Ключ  найден.  Индекс  =  "<<  i  <<endl;
        }
 
        if  (key<int(&mas[i]))
        {
            if(q==0)
            {
                cout<<"Ключ  не  найден."<<endl;
                break;
            }
 
            if(q!=0)
            {
                i-=  f[t-3];
                p  =  f[t-3];
                q  =  f[t-2]-f[t-3];
            }
        }
        else
        {
            t--;
            i=f[t];
        }
    }
 
    cout<<endl;
    system("pause");
}
Добавлено через 4 часа 25 минут
Все, проблема найдена, осталось только с самим методом разобраться. Спасибо тем, кто пытался помочь)

Добавлено через 4 минуты
Как тему закрыть?
0
28.10.2017, 23:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 23:06
Помогаю со студенческими работами здесь

Заполнение массива рандомными числами без повторений
Здравствуйте! Пытаюсь заполнить массив рандомными числами без повторений, в коде есть проверка на...

Некорректное значение числа при заполнении массива рандомными действительными числами
Заполняю массив рандомными действительными числами.Иногда выходит такое значение числа,как в...

Ошибка заполнения динамического массива
Я создал массив, потом заполнил, а когда вывел мне показало &quot;dddd&quot;, а дальше абракадабра. почему...

Заполнение массива рандомными числами
есть последовательность чисел a1...a30. заполняю ее рандомными числами. нужно сделать так, чтобы...

Заполнение ступенчатого массива рандомными числами
Всем привет. У меня такая проблема: ступенчатый массив создан, но я не знаю как заполнить его...

Задача: сортировка массива с рандомными числами
Надо отсортировать массив с рандомными числами по методу &quot;Пузырька&quot;. int func() { int a; int...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru