Форум программистов, компьютерный форум CyberForum.ru

Заполнение одномерного массива и положительными, и отрицательными числами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.94
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
21.10.2011, 09:56     Заполнение одномерного массива и положительными, и отрицательными числами #1
Как сделать так, чтобы массив а размерностью n заполнялся случайными числами, среди которых должны быть и отрицательные, и положительные?

Как сделать заполнение массива только положительными числами я понимаю

CSS
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
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
 
int main ( )
{
    srand(time(NULL));
 
    int n;
    int *a;
    
    cout << "Vvedite n=";
    cin>> n;
    
    cout << "Massiv a iz n elementov\n";
 
    a = new int [n];
 
    for (int i=0; i<n; i++)
    {
        *(a+i)=rand()%100;
        cout << *(a+i) << " " ;
    }
    cout << "\n";
 
 
        return 0;
}
А как сделать так, чтобы и отрицательными, и положительными вперемешку?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2011, 09:56     Заполнение одномерного массива и положительными, и отрицательными числами
Посмотрите здесь:

C++ Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами
Массив: Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой C++
Заполнение одномерного массива случайными уникальными числами C++
Заполнение очереди положительными и отрицательными числами C++
C++ Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала отрицательные, а потом положительные числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
svinka
1 / 1 / 0
Регистрация: 14.10.2011
Сообщений: 18
21.10.2011, 10:05     Заполнение одномерного массива и положительными, и отрицательными числами #2
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
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
 
int main ( )
{
        srand(time(NULL));
 
        int n;
        int *a;
 
        cout << "Vvedite n=";
        cin>> n;
 
        cout << "Massiv a iz n elementov\n";
 
        a = new int [n];
 
        for (int i=0; i<n; i++)
        {
                if (i%2 == 0)
                {
                *(a+i)=(rand()%100);
                cout << *(a+i) << " " ;
                }
                else
                {
                *(a+i)=(rand()%100)/2-(rand()%100);
                cout << *(a+i) << " " ;
                }
        }
        cout << "\n";
 
 
                return 0;
}
Добавлено через 45 секунд
можно в цикл добавить условие выполнения рандомного факта например. вооот например больше ли текущий рандом произвольной константы. и от етого выбивать рандомом отрицательный числа.
mimicria
return (true);
 Аватар для mimicria
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,344
21.10.2011, 10:15     Заполнение одномерного массива и положительными, и отрицательными числами #3
C++
1
*(a+i)=rand()%200-100;
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
21.10.2011, 10:21  [ТС]     Заполнение одномерного массива и положительными, и отрицательными числами #4
Допустила ошибку, по заданию массив надо заполнять не целыми, а вещественными элементами.

Переписала программу в соответствии с найденной в интернете

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
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
 
int main ( )
{
    srand(time(NULL));
 
    int n;
    float *a;
    
    cout << "Vvedite n=";
    cin>> n;
    
    cout << "Massiv a iz n elementov\n";
 
    a = new float [n];
 
    for (int i=0; i<n; i++)
    {
        *(a+i) = float (rand()%20001)/100-100;
        cout << *(a+i) << " " ;
    }
    cout << "\n";
return 0;
}
Объясните, что означает (rand()%20001), а то не хочется использовать то, чего я не понимаю.
svinka
1 / 1 / 0
Регистрация: 14.10.2011
Сообщений: 18
21.10.2011, 10:25     Заполнение одномерного массива и положительными, и отрицательными числами #5
ну так рандом от двадцати тысяч одного поделенный на сто и вычтена сотня. по идее аналог вышеприведенного рандома от двухсот. сотня вычитается для получения отрицательного результата.

Добавлено через 39 секунд
1 добавляется для вещественных чисел. шобы не получились целыми.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.10.2011, 10:26     Заполнение одномерного массива и положительными, и отрицательными числами #6
Заполнение значениями из диапазона от A до B включительно:
http://www.cyberforum.ru/showthread.php?p=2088462
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
21.10.2011, 10:45     Заполнение одномерного массива и положительными, и отрицательными числами #7
А разве нельзя просто так же рандомно умножать полученное число на -1?
C++
1
*(a+i) = ( float ) ( rand() % 20001 ) / 100 * ( rand() % 2 ? 1 : -1 );
Добавлено через 4 минуты
Цитата Сообщение от Heidel Посмотреть сообщение
Объясните, что означает (rand()%20001), а то не хочется использовать то, чего я не понимаю.
Это диапазон рандомного числа от 0 до, в данном случае, 20000. В общем от 0 до n - 1. Ну или есть еще пример по ссылке выше для выбора своего начала диапазона.
Heidel
 Аватар для Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
21.10.2011, 13:32  [ТС]     Заполнение одномерного массива и положительными, и отрицательными числами #8
Всем спасибо, всё более или менее понятно)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 16:03     Заполнение одномерного массива и положительными, и отрицательными числами
Еще ссылки по теме:

C++ Разделить двухмерный массив на два линейных - с положительными и отрицательными числами
C++ Образовать из матрицы 2 массива с положительными элементами и отрицательными элементами по возрастанию
C++ Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом

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

Или воспользуйтесь поиском по форуму:
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
21.10.2011, 16:03     Заполнение одномерного массива и положительными, и отрицательными числами #9
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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
    
/* Возвращает вещественное число с произвольным знаком,
    не превышающее по модулю m */
double realrand(double m) {
    double num = ((double)rand() + 0.1) / ((double)rand() + 0.1);
    return num / pow(10.0, ceil(log10(num))) * pow(-1.0, (double)rand()) * m;
}
 
void fill(double * arr, size_t size, double m, double (*func)(double)){
    while ( size-- )
        *arr++ = func(m);
}
 
void dump(const double * arr, size_t size, size_t precission){
    while ( size-- )
        printf("%.*f\n", precission, *arr++);
}
 
#define AFTERPOINT 3
#define WATERMARK (10.0)
 
int main(void){
    double * arr;
    size_t size;
    
    srand(time(NULL));
    while ( printf("Number of elements: ") > 0 && scanf("%u", &size) == 1 && size ){
        if ( ! ( arr = malloc(sizeof(double) * size) ) ){
            fprintf(stderr, "Memory error!\n");
            exit(1);
        }
        fill(arr, size, WATERMARK, realrand);
        dump(arr, size, AFTERPOINT);
        free(arr);
    }
    
    exit(0);
}
Yandex
Объявления
21.10.2011, 16:03     Заполнение одномерного массива и положительными, и отрицательными числами
Ответ Создать тему
Опции темы

Текущее время: 21:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru