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

rand + ошибки объявления массива

04.11.2010, 20:19. Показов 2539. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня такое задание:
Используя датчик случайных чисел, заполнить элементы массива неповторяющимися числами.
Вот мой код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
int i;
const int n;
cout<<"Vvedite n"<<'\n';
cin>>n;
int mas[n];
for (i=0;i<n;i++)
{
mas[i]=rand()%n;
cout<<"mas["<<i<<"]="<<mas[i]<<'\n';
}
return 0;
}
И вот мои ошибки, выводимые компилятором.
Code
1
2
3
1>e:\студенчество\информатика\4 лаба\5\5\5.cpp(12) : error C2057: требуется константное выражение
1>e:\студенчество\информатика\4 лаба\5\5\5.cpp(12) : error C2466: невозможно выделить память для массива постоянного нулевого размера
1>e:\студенчество\информатика\4 лаба\5\5\5.cpp(12) : error C2133: mas: неизвестный размер
Как их исправить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.11.2010, 20:19
Ответы с готовыми решениями:

Ошибки объявления
Stack.h #pragma once class Stack { public: void push (StackPtr *,int); int pop(StackPtr*); int isEmpty(StackPtr);

Исправить ошибки при работе с функцией rand
Он просто выводит максимальное число вместо того чтобы выводить рандомное или я что то не так делаю? Ознакомьтесь с правилами форума. ...

Странные ошибки после объявления using namespace std
Доброго времени суток недавно решал кое какую задачку и возникла проблем в принципе не критическая ибо компилируется все правильно но все...

5
Freelance
Эксперт С++
 Аватар для asics
2891 / 1826 / 356
Регистрация: 09.09.2010
Сообщений: 3,841
04.11.2010, 20:25
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
int i;
int n, *mas;
cout<<"Vvedite n"<<'\n';
cin>>n;
mas = new int[n];
for (i=0;i<n;i++)
{
mas[i]=rand()%n;
cout<<"mas["<<i<<"]="<<mas[i]<<'\n';
}
delete[] mas;
return 0;
}
Надо юзать динамику.
1
0 / 0 / 0
Регистрация: 14.10.2010
Сообщений: 18
04.11.2010, 20:38  [ТС]
asics, увы
C#
1
2
3
4
5
6
7
Лабораторная работа №4 (2 часа)
" Одномерные статические массивы"
 
Цель : получение навыков по созданию и работе с одномерными статическими массивами.  
 
1. Требуемая теоретическая подготовка
Определение и способы инициализации одномерного статического массива. Обработка элементов массива.

Немного поменяла код (убрала возможность вводить n)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "stdafx.h"
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
srand((unsigned)time(NULL));
int i;
const int n=20;
int mas[n];
for (i=0;i<n;i++)
{
mas[i]=rand()%n;
cout<<"mas["<<i<<"]="<<mas[i]<<'\n';
}
return 0;
}
Компилируется, но несмотря на srand((unsigned)time(NULL)); выводятся повторяющиеся числа.
Миниатюры
rand + ошибки объявления массива  
0
 Аватар для KuKu
1563 / 1041 / 94
Регистрация: 17.04.2009
Сообщений: 2,995
04.11.2010, 20:44
Цитата Сообщение от Нотка Посмотреть сообщение
Компилируется, но несмотря на srand((unsigned)time(NULL)); выводятся повторяющиеся числа.
А функция ранд вместе с сранд и не гарантируют, что числа не будут повторяться. Они выдает случайные числа, а то что бы не повторялись, уже вы должны отслеживать.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
04.11.2010, 20:46
Нотка, ну само собой так числа будут повторяться (вернее могут). Вот Вам с неповторяющимися:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main(){
    int * arr, size;
    std::cout << "Number of elements: ";
    std::cin >> size;
    arr = new int [ size ];
 
    srand(time(NULL));
 
    for ( int i = 0; i < size; ++i )
        arr[i] = rand() % size + size * i;
 
    std::cout << size << " unique random numbers:" << std::endl;
    for ( int i = 0; i < size; ++i )
        std::cout << arr[i] << ' ';
    std::cout << std::endl;
 
    delete [] arr;
    system("pause");
 
    return 0;
}
1
ниначмуроФ
 Аватар для PointsEqual
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
04.11.2010, 21:02
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
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
 
int main(){
        int * arr, size;
        std::cout << "Number of elements: ";
        std::cin >> size;
        arr = new int [ size ];
 
        srand(time(NULL));
 
        for ( int i = 0; i < size; ++i )
                arr[i] = i;
 
        for ( int i = 0; i < size; ++i )
            std::cout<<arr[i]<<" ";
 
        std::random_shuffle(arr,arr+size);
 
        std::cout << size << "Unique random numbers:" << std::endl;
        for ( int i = 0; i < size; ++i )
                std::cout << arr[i] << ' ';
        std::cout << std::endl;
 
        delete [] arr;
        system("pause");
 
        return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.11.2010, 21:02
Помогаю со студенческими работами здесь

Объявления массива.
Как увеличить количество переменных в массиве?

Объяснить строку объявления массива
Ньюанс int* array = new int; на С/C++ Пришлость мне недавно C# код в почти голый C(C++) переписывать. Как-то прощелкал и след....

Инициализация массива после объявления
Привет народ, нужна ваша помощь. Допустим у меня есть класс с закрытым полем-массивом: //someClass.h class someClass{ int arr;...

Функция объявления двумерного массива
Данный код - объявляет двумерный массив arr. Как из этого куска кода сделать функцию? Передаваемые параметры как мне кажется n и m, а...

Массивы: функция rand() и размер массива. Совместимости
Здравствуйте уважаемые программисты! Всех с праздником!) В общем переписываю одну и ту же программу который раз, ну чуть модифицирую, и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru