Числа положительные и отрицательные

Что я делаю неправильно? я хочу иметь 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"}

-4

Решение

cin<<a;

Здесь вы используете неправильный оператор. Представьте, что угловые скобки показывают поток данных. Ты хочешь:

cin>>a;

Аналогично с cout:

cout<<t[i];

Вы также индексируете t с a, а не с i, во-первых for цикл:

t[i]=rand();
//^ This is i, not a

Другая проблема заключается в том, что вы используете расширение компилятора для создания массива размера во время выполнения. То есть со стандартным C ++ вы не можете использовать a как размер вашего массива, так как он не известен во время компиляции.

1

Другие решения

Вы не сеяли генератор случайных чисел. Вызов srand() в начале вашей программы.

Обычный способ — вызывать его с любым текущим временем:

std::srand(std::time(0))

Вам нужно будет включить <ctime>, тоже.

Обратите внимание, что rand() не возвращает отрицательные значения, эту логику вам нужно реализовать самостоятельно.

2

t[i]=rand();

не

t[a]=rand();

или ты тоже так написал?

1

Я не уверен на 100%, но ИМО, rand() можно создавать только положительные числа, из 0 в 65535в зависимости от времени компиляции исполняемого файла: это означает, что после того, как вы скомпилировали .exe файл, он будет давать одни и те же цифры снова и снова!

Чтобы заставить его производить разные номера, вы должны использовать srand(),

Еще одна вещь:
В C ++ вы не можете выделить динамический массив с type array[n] [это не в стандарте!], даже если компилятор позволяет вам это сделать!
На самом деле компилятор переводит ваш код в array = new type[n] что вы должны иметь дело с delete[] ключевое слово.

1
По вопросам рекламы [email protected]