Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 28.10.2017
Сообщений: 6
1

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

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

По сути, код рабочий, массив заполняется, сортируется и выводится. Но! Если посмотреть программно, то массив не заполненный и если присвоить значение какого-либо его элемента переменной, он не понимает его. В случаи не с динамическим массивом, все работает. В чем может быть ошибка и как с этим бороться
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
6912 / 5977 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
28.10.2017, 17:14 2
Цитата Сообщение от AlexRadi Посмотреть сообщение
Если посмотреть программно, то массив не заполненный и если присвоить значение какого-либо его элемента переменной, он не понимает его.
Это как?
0
Модератор
Эксперт CЭксперт С++
3911 / 3384 / 599
Регистрация: 07.10.2015
Сообщений: 6,988
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
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® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.