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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 64, средняя оценка - 4.94
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
#1

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

21.10.2011, 09:56. Просмотров 9303. Ответов 8
Метки нет (Все метки)

Как сделать так, чтобы массив а размерностью 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++
Создать заданный массив 10 на 10 элементов содержащие положительные и отрицательные числа.Создать 2 массива одномерных в которых находится...

Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами - C++
Прямоугольную матрицу размером м на н заполнить случайными положительными и отрицательными числами. Из данной матрицы сформировать два...

Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом - C++
Заполнить массив случайными положительными и отрицательными числами и вывести в строку с интервалом ПОМОГИТЕ!!!

Заполнение одномерного массива случайными уникальными числами - C++
Имею код на c++. Подскажите пожалуйста как можно изменить что-бы генерировал разные числа(уникальные). Пример для массива из 3х э-тов 0 2...

Задан файл с отрицательными и положительными целыми числами. Записать в другой файл сначала отрицательные, а потом положительные числа - 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);
1956 / 1093 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
21.10.2011, 10:15 #3
C++
1
*(a+i)=rand()%200-100;
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++
4225 / 2199 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
21.10.2011, 10:26 #6
Заполнение значениями из диапазона от A до B включительно:
http://www.cyberforum.ru/showthread.php?p=2088462
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 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
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
21.10.2011, 13:32  [ТС] #8
Всем спасибо, всё более или менее понятно)
easybudda
Модератор
Эксперт CЭксперт С++
9530 / 5523 / 932
Регистрация: 25.07.2009
Сообщений: 10,602
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);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2011, 16:03
Привет! Вот еще темы с ответами:

Разместить все элементы с положительными значениями в левой части массива, с отрицательными — в правой - C++
помогите, пожалуйста, написать программу на С++: Нужно разместить все элементы с положительными значениями в левой части массива,...

Образовать из матрицы 2 массива с положительными элементами и отрицательными элементами по возрастанию - C++
Дана матрица размера N. Образовать из него 2 массива с положительными элементами и отрицательными элементами по возрастанию. Помогите...

Массив: Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными значениями - в правой - C++
Напишите пожалуйста программу Разместить все элементы с положительными значениями в левой части массива, элементы с отрицательными...

Программа находит индексы с положительными и отрицательными элементами - C++
Ребят я тут прогу написал которая выводит индексы с положительными элементами и отрицательными, но проблема в том что она выводит только...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.10.2011, 16:03
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru