Что я делаю неправильно? я хочу иметь a
случайные числа. Отрицательные и положительные целые числа
#include <iostream>
#include <cstdlib>
int main(){
int a;
cin<<a;
int t[a];
for(int i=0;i<a;i+=1)
t[a]=rand();
for(int i=0;i<a;i++)
cout>>t[i];
}
Я очень новичок, и я хотел иметь случайные числа, но у меня есть только одно очень большое.
Кто-нибудь может помочь?
Извините, но вы видите проблемы, которых у меня нет. Теперь я знаю, что должен только написать >>endl
РЕДАКТИРОВАТЬ:
Я исправил свой код, и теперь он работает
#include <cstdlib>
#include <time.h>
int main(){
int a;
cin>>a;
for(int i=0;i<a;i++)
cout<<(rand()-rand())<<endl;//i asked only for this "endl"}
cin<<a;
Здесь вы используете неправильный оператор. Представьте, что угловые скобки показывают поток данных. Ты хочешь:
cin>>a;
Аналогично с cout
:
cout<<t[i];
Вы также индексируете t
с a
, а не с i
, во-первых for
цикл:
t[i]=rand();
//^ This is i, not a
Другая проблема заключается в том, что вы используете расширение компилятора для создания массива размера во время выполнения. То есть со стандартным C ++ вы не можете использовать a
как размер вашего массива, так как он не известен во время компиляции.
Вы не сеяли генератор случайных чисел. Вызов srand()
в начале вашей программы.
Обычный способ — вызывать его с любым текущим временем:
std::srand(std::time(0))
Вам нужно будет включить <ctime>
, тоже.
Обратите внимание, что rand()
не возвращает отрицательные значения, эту логику вам нужно реализовать самостоятельно.
t[i]=rand();
не
t[a]=rand();
или ты тоже так написал?
Я не уверен на 100%, но ИМО, rand()
можно создавать только положительные числа, из 0
в 65535
в зависимости от времени компиляции исполняемого файла: это означает, что после того, как вы скомпилировали .exe
файл, он будет давать одни и те же цифры снова и снова!
Чтобы заставить его производить разные номера, вы должны использовать srand()
,
Еще одна вещь:
В C ++ вы не можете выделить динамический массив с type array[n]
[это не в стандарте!], даже если компилятор позволяет вам это сделать!
На самом деле компилятор переводит ваш код в array = new type[n]
что вы должны иметь дело с delete[]
ключевое слово.