С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 3
Регистрация: 11.12.2016
Сообщений: 137

Ошибка в объявлении массива переменной длины

16.10.2017, 21:48. Показов 2728. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
на visual studio не работает в другом компиляторе работает
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
// lab3_redix.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <ctime>
 
using namespace std;
 
 
int getMax(int arr[], int n)
{
    int mx = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] > mx)
            mx = arr[i];
    return mx;
}
 
void countSort(int arr[], int n, int exp)
{
    int output[n]; //<-- требует константный значени
    int i, count[10] = { 0 };
 
    for (i = 0; i < n; i++)
        count[(arr[i] / exp) % 10]++;
 
    for (i = 1; i < 10; i++)
        count[i] += count[i - 1];
 
    for (i = n - 1; i >= 0; i--)
    {
        output[count[(arr[i] / exp) % 10] - 1] = arr[i];
        count[(arr[i] / exp) % 10]--;
    }
 
    for (i = 0; i < n; i++)
        arr[i] = output[i];
}
 
void radixsort(int arr[], int n)
{
    int m = getMax(arr, n);
    for (int exp = 1; m / exp > 0; exp *= 10)
        countSort(arr, n, exp);
}
 
int main() {
    setlocale(LC_ALL, "Rus");
    //  srand(time(0));
 
    int k, *arr;
    cout << "вводите размер массива: ";
    cin >> k;
    arr = new int[k];
    for (int i = 0; i < k; ++i) {
        arr[i] = rand() % 500;
    }
 
    int n = k;
    radixsort(arr, n);
 
    for (int i = 0; i < n; ++i) {
        cout << arr[i] << " ";
    }
 
    return 0;
}
ФОТО:
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2017, 21:48
Ответы с готовыми решениями:

Ошибка в объявлении переменной
Пишу программу, в которой нужно ввести строку символов (для дальнейшего ее шифрования), затем создать файл и в него записать эту строку. Но...

Ошибка в объявлении статической переменной
Знакомлюсь со статическими переменными в ООП, первая программа, ошибки в строке 6 . Как исправить? Заранее спасибо extra qualification...

Ошибка при объявлении переменной
Кто-нибудь может подсказать, в чем здесь проблема ? Есть запрос: DECLARE currTabName character varying(128), --текущее...

11
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
16.10.2017, 21:54
Лучший ответ Сообщение было отмечено Руслан997 как решение

Решение

C++
1
2
3
int output=new int[n]; //<-- требует константный значени
....
delete[] output;//в конце
Кстати, 56 строка у Вас
Цитата Сообщение от Руслан997 Посмотреть сообщение
arr = new int[k];
после 66 надо добавить
C++
1
delete[] arr;
2
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
16.10.2017, 22:01
del.
0
0 / 0 / 3
Регистрация: 11.12.2016
Сообщений: 137
16.10.2017, 22:05  [ТС]
Цитата Сообщение от Azazel-San Посмотреть сообщение
ну, так дайте ему это константное значения, тем более вы n в теле ф-и никак не изменяете, как и exp вроде, поэтому
C++Выделить код
1
void countSort(int arr[], const int n, const int exp)
не помогло
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
16.10.2017, 22:09
не помогло
очень информативно. а что вы сделали? и что значит не помогло? может в других местах теперь проблемы и есть смысл показать, что именно там у вас теперь происходит?
0
0 / 0 / 3
Регистрация: 11.12.2016
Сообщений: 137
16.10.2017, 22:14  [ТС]
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
86
87
88
89
90
91
92
93
94
95
96
// lab3_redix.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <locale.h>
#include <ctime>
 
using namespace std;
 
 
int getMax(int arr[], int n)
{
    int mx = arr[0];
    for (int i = 1; i < n; i++)
        if (arr[i] > mx)
            mx = arr[i];
    return mx;
}
 
void countSort(int arr[], const int n, const int exp)
{
    int output[n]; //<-- требует константный значени
    int i, count[10] = { 0 };
 
    for (i = 0; i < n; i++)
        count[(arr[i] / exp) % 10]++;
 
    for (i = 1; i < 10; i++)
        count[i] += count[i - 1];
 
    for (i = n - 1; i >= 0; i--)
    {
        output[count[(arr[i] / exp) % 10] - 1] = arr[i];
        count[(arr[i] / exp) % 10]--;
    }
 
    for (i = 0; i < n; i++)
        arr[i] = output[i];
 
    delete[] output;
}
 
void radixsort(int arr[], int n)
{
    int m = getMax(arr, n);
    for (int exp = 1; m / exp > 0; exp *= 10)
        countSort(arr, n, exp);
}
 
int main() {
    setlocale(LC_ALL, "Rus");
    srand(time_t(0));
 
    unsigned int start_time, end_time;
    int ques;
    //char q;
    //char yes = 'y';
 
    int k, *mas;
    cout << "вводите размер массива: ";
    cin >> k;
    mas = new int[k];
    for (int i = 0; i < k; ++i) {
        mas[i] = rand() % 500;
    }
    //cout << "Вводить созданная массив на экран: (y or n) ";
    //cin >> q;
    //switch (q == yes) {
    //case 1:for (int i = 0; i < k;i++) {
    //  cout << mas[i] << " ";
    //}
    //     break;
    //}
    cout << endl;
    cout << "1: По старшему разряду\n";
    cin >> ques;
    if (ques >= 0 && ques <= 1) {
        switch (ques)
        {
        case 0: {
            start_time = clock();
            radixsort(mas, k);
            end_time = clock();
            for (int i = 0; i < k; i++) {
                cout << mas[i] << " ";
            }
            break;
        }
        }
    }
    else cout << "Не верный выбор!\n";
    cout << "runtime = " << end_time - start_time << endl; // время работы программы
 
    return 0;
}
тот же ошибка с требует контактный значения
0
0 / 0 / 3
Регистрация: 11.12.2016
Сообщений: 137
16.10.2017, 22:16  [ТС]
Цитата Сообщение от zss Посмотреть сообщение
delete[] output;//в конце
нельзя удалить элемент являвшийся указателем
0
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
16.10.2017, 22:16
прикольно. а вас не навело на мысль, что раз вы подобную ситуацию в другом месте уже исправили, то то же самое надо проделать и в других подобных местах?
если нет, то вот тут инструкция: Ошибка в объявлении массива переменной длины
0
0 / 0 / 3
Регистрация: 11.12.2016
Сообщений: 137
16.10.2017, 22:21  [ТС]
Цитата Сообщение от DU3 Посмотреть сообщение
прикольно. а вас не навело на мысль, что раз вы подобную ситуацию в другом месте уже исправили, то то же самое надо проделать и в других подобных местах?
если нет, то вот тут инструкция: Ошибка в объявлении массива переменной длины
знаете http://c9.io там тот же самое код работает мне просто на визуал нужен
0
0 / 0 / 3
Регистрация: 11.12.2016
Сообщений: 137
16.10.2017, 22:25  [ТС]
Цитата Сообщение от DU3 Посмотреть сообщение
прикольно. а вас не навело на мысль, что раз вы подобную ситуацию в другом месте уже исправили, то то же самое надо проделать и в других подобных местах?
C++
1
2
int output=new int[n]; //<-- требует константный значени
delete[] output;//в конце
когда эту поменяю код вообще не работает
0
 Аватар для Shemp
18 / 17 / 9
Регистрация: 08.05.2017
Сообщений: 35
16.10.2017, 22:31
Руслан997,
C++
1
int *output = new int[n];
1
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
17.10.2017, 06:34
Руслан997, Вы хотя бы чуть чуть думаете, когда вставляете какие-либо операторы в код, что они делают?
Выделяем память для динамического массива:
C++
1
int *output = new int[n];
Пользуемся им.
.......................................
Когда массив не нужен, память обязаны освободить
C++
1
delete[] output;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2017, 06:34
Помогаю со студенческими работами здесь

Ошибка при объявлении переменной
В чем разница?

Желтая ошибка про объявлении переменной в Swift
Товарищи программисты, пожалуйста, скажите, почему при объявлении новой переменной вылетает желтая ошибка как на скриншоте ниже, хотя...

Ошибка при объявлении переменной Структурного Типа
Не могу понять: почему при инициализации переменной структурного типа происходит ошибка? (Expected expression before '{' line 18) ...

Ошибка компилятора при объявлении переменной в другом файле
Здравствуйте, подскажи пожалуйста почему возникает ошибка ||error: ld returned 1 exit status| Моя программа: main.cpp #include...

ошибка в объявлении переменной, что может быть не так?
Доброго времени суток. У меня есть таблица id | name | description | parent_id | type Возник вопрос вот в чем. Пользователь...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru