2013-04-27 3 views
-4

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

Im начинающий очень, и я хотел, чтобы иметь случайные числа, но у меня есть только один очень большой. Может ли кто-нибудь помочь?

Извините, но вы видите проблемы, которых у меня нет. Теперь я знаю, что я должен писать только >>endl

EDIT: я исправил мой код и он работает сейчас

#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" 
} 
+2

«Что я делаю неправильно?», Помещая этот вопрос как 'C#' – I4V

+0

Кроме того, даже не пытаясь помочь, разместив ошибки, которые вы получаете. – chris

+0

Кроме того, не публиковать фактический код. –

ответ

1
cin<<a; 

Здесь, вы используете неправильный оператор. Подумайте об угловых скобках, показывая поток данных. Вы хотите:

cin>>a; 

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

cout<<t[i]; 

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

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

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

+0

Хорошо, я сделал это. Но это не проблема. Я просто пишу это здесь неправильно. Cout too – Antua

+0

@Antua Посмотреть последнее изменение. –

+0

Im работает в dev-C++, и его право. Я сказал u im beginner – Antua

1
t[i]=rand(); 

не

t[a]=rand(); 

или же вы пишете, что тоже неправильно?

+0

Тоже, извините за это – Antua

+0

Если вы хотите отрицательные числа, вам просто нужно вычитать что-то из значения, возвращаемого rand(). rand() возвращает только положительные числа. – john

2

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

Обычный способ назвать это с тем, что текущее время:

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

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

Обратите внимание, что rand()doesn't return negative values, эта логика вам потребуется реализовать самостоятельно.

1

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

Для того, чтобы заставить его производить разные цифры, вы должны использовать srand().

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

Смежные вопросы