Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C (СИ) Динамическое выделение памяти для двумерного массива Здравствуйте! В следующей программе я пытаюсь выделить динамически память для двумерного массива. Размерности массива задаются в качестве аргументов командной строки. В процессе выполнения программы вылетает исключение. Не подскажите, где моя ошибка? #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv) https://www.cyberforum.ru/ c-beginners/ thread44166.html C (СИ) Найти элемент, наиболее близкий к среднему значению всех элементов массива
Дан массив целых чисел. Найти элемент , наиболее близкий к среднему значению всех элементов массива.. Вот мой код, Наверняка есть попрроще #include<stdio.h> #include<math.h> main() { int a={6,8,-18,-9,7},i,n=0,s=0; float sr,k,b,z=0; float c=sizeof(a) / sizeof(a); for (i=0; i<=(c-1); i++)
C (СИ) Вывести все номера элементов, оканчивающиеся цифрой 0 Дан двухмерный массив целых чисел.Вывести все номера элементов, оканчивающиеся цифрой 0, если таких элементов нет, вывести соответствующие сообщение. #include<stdio.h> main() { int i,j,a={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}; for (i=0;i<5;i++){ for (j=0;j<5;j++) if ( a%10==0) printf("%d%d",i,j); else {printf("Takih chisel net\n"); }} https://www.cyberforum.ru/ c-beginners/ thread43624.html C (СИ) Сравнить первый и второй элементы массива https://www.cyberforum.ru/ c-beginners/ thread43603.html
Дан двухмерный массив. Сравнить первый и второй элементы массива. Если второй элемент меньше первого, то поменять их местами..Затем то же сделать со вторым и третьим........, предпоследним и последним. Вот мой код программы, но дело в том, что он пропускает последние элементы в третьем столбике, как это исправить??? #include<stdio.h> main() { int a={{8,4,6}, {7,9,1} , ...
C (СИ) Конкатенация строк: В конец исходной строки дописывается мусор
доброго времени суток.надо написать функцию которая делает конкатенацию строк. функцию написал,но в конец исходной строки дописывается мусор, подскажите как можно этот мусор убрать??если бы это был численный массив можно было бы обнулить а тут..? #include<stdio.h> #include<conio.h> #include<string.h> #define M 15 void conc(char *,char *); int main() { char s1,s2;
C (СИ) Как правильнее использовать main () #include "stdafx.h" #include <windows.h> #include <stdio.h> #include <time.h> #include <iostream> using namespace std; void main() { https://www.cyberforum.ru/ c-beginners/ thread42944.html
C (СИ) Ввод\вывод массива через функции https://www.cyberforum.ru/ c-beginners/ thread42503.html
Помогите плз исправить) Нужно осуществить ввод\вывод массива #include "stdio.h" #include "conio.h" #define N 10 #define M 10 void output (int n, int m,float a ); void input (int n, int m, float a ); //void sort (int n, int m, float b , float *S); int main()
C (СИ) Осуществить поиск по категории, удаление по номеру телефона абонента
Здравствуйте! У меня есть программа, но она работает не так как нужно. Требуется организовать добавление, хранение, поиск, просмотр, удаление элементов структуры в виде списка: в моём случае нужно осуществить поиск по категории, удаление по номеру телефона абонента. Т.е. пользователем вводится список справок о междугородних телефонных разговорах. Справка содержит: номер телефона абонента, год,...
C (СИ) Добавление символов в переменную строкового типа https://www.cyberforum.ru/ c-beginners/ thread42167.html
нашел вот такой пример:void strcat_char(char *str, char ch) { while (str) str++;//доходим до конца строки *str = ch;//пишем в конец строки } но компилятор BCC выдает null, NULL pointer assigment
C (СИ) Поиск последовательности в файле Приветствую всех, всем доброго времени суток. Возникла проблема в ходе работы с файлами. Расскажу немного о работе программы: Исходные данные: 2 текстовых файла; Что необходимо сделать: необходимо открыть файл № 1 (состоящий из строк, разделённых "\n"), считать из него некоторую последовательность цифр, затем открыть файл № 2 (состоящий из так же организованных строк) и найти в нём... https://www.cyberforum.ru/ c-beginners/ thread42148.html
C (СИ) Построение графика функции в пределах прямоугольника
Помогите с графиком функции.Проблема в том, что надо его уместить в рамку(я задал ее rectangle(x,y,d,v) )и висчитать умножитель, чтоб график уместился в нее. По координате Y проблем ето не составило, а по Х не знаю, как найти етот умножитель.Надеюсь ктота покопирсается в моем коде и чем то поможет)))) #include <graphics.h> #include<bios.h> #include <stdlib.h> #include <stdio.h>...
C (СИ) Редактирование файла hosts через консоль Помогите пожалуйста!мне нужна помошь, хочу создать прогу через которую можно будет разблокировать и заблокировать сайты...но мне эту нужно делать через консоль... #include "stdafx.h" #include <iostream> #include <fstream> #include "locale.h" #include "windows.h" using
Эксперт С++
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
0

Генерация массива целых случайных чисел, которые не повторяются - C (СИ) - Ответ 222553

22.07.2009, 19:31. Показов 138508. Ответов 4
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Случайные числа.
Генерация случайного целого числа в заданном диапазоне.
Генерация массива целых случайных чисел, которые не повторяются.

Функция rand() возвращает псевдослучайное число в интервале от 0 до RAND_MAX.
Но при запуске программы вы всегда будете всегда получать одну и ту же последовательность чисел. Чтобы этого не происходило следует с помощью функции srand() инициализировать генератор случайных чисел с помощью некоторого начального случайного значения.
Например: srand( time( NULL ) ).

Генерация случайного целого числа в заданном диапазоне.

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
int gen_random( int range_min, int range_max );
 
/* ================================================================ */
int main( int argc, char *argv[] ) {
    
int range_min, range_max, rand_val;
 
 
srand( time( NULL ) );
 
if ( argc!=1+2 ) {
    fprintf( stderr, "Usage: gen_random range_min range_max\n" ); exit( 1 );
}
 
range_min= atoi( argv[1] );
range_max= atoi( argv[2] );
rand_val= gen_random( range_min, range_max );
 
printf( "random value in range [%d;%d] is %d\n", range_min, range_max, rand_val );
 
return 0;
 
} /* main() */
 
/* ================================================================ */
int gen_random( int range_min, int range_max ) {
 
if ( range_min>range_max ) {
    fprintf( stderr, "gen_random(): Invalid arguments\n" ); exit( 1 );
}
 
return range_min+rand()%(range_max-range_min+1);
    
} /* gen_random() */


Генерация массива целых случайных чисел, которые не повторяются.

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MAX_ARR_SIZE    1024
 
void gen_random_uniq( int arr_size, int *parr, int range_min, int range_max );
 
/* ================================================================ */
int main( int argc, char *argv[] ) {
 
int i, arr_size;
int arr[MAX_ARR_SIZE];
int range_min, range_max;
 
 
srand( time( NULL ) );
 
if ( argc!=1+3 ) {
    fprintf( stderr, "Usage: gen_random_uniq arr_size range_min range_max\n" ); exit( 1 );
}
arr_size= atoi( argv[1] );
range_min= atoi( argv[2] );
range_max= atoi( argv[3] );
if ( arr_size<0 || arr_size>MAX_ARR_SIZE ) {
    fprintf( stderr, "Invalid array size\n" ); exit( 1 );
}
gen_random_uniq( arr_size, arr, range_min, range_max );
 
printf( "random unique array: array size is %d, range is [%d;%d]\n",
    arr_size, range_min, range_max
);
for ( i= 0; i<arr_size; i++ ) {
    printf( " %d", arr[i] );
}
printf( "\n" );
 
return 0;
 
} /* main() */
 
/* ================================================================ */
void gen_random_uniq( int arr_size, int *parr, int range_min, int range_max ) {
 
int i, j;
int dup_flag;
int rand_val, range_width= range_max-range_min+1;
 
 
if ( range_width<1 || arr_size<0 || arr_size>range_width ) {
    fprintf( stderr, "gen_random_uniq(): Invalid arguments\n" ); exit( 1 );
}
 
for ( i= 0; i<arr_size; i++ ) {
    for ( ; ; ) {
        rand_val= range_min+rand()%range_width;
        dup_flag= 0;
        for ( j= 0; j<i; j++ ) {
            if ( rand_val == parr[j] ) { dup_flag= 1; break; }
        }
        if ( !dup_flag ) { break; }
    }
    parr[i]= rand_val;
}
    
} /* gen_random_uniq() */


Генерация массива целых случайных чисел, которые не повторяются (быстрый алгоритм).

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define MAX_ARR_SIZE    10240
 
void gen_random_uniq2( int arr_size, int *parr, int range_min, int range_max );
 
/* ================================================================ */
int main( int argc, char *argv[] ) {
 
int i, arr_size;
int arr[MAX_ARR_SIZE];
int range_min, range_max;
 
 
srand( time( NULL ) );
 
if ( argc!=1+3 ) {
        fprintf( stderr, "Usage: gen_random_uniq2 arr_size range_min range_max\n" ); exit( 1 );
}
arr_size= atoi( argv[1] );
range_min= atoi( argv[2] );
range_max= atoi( argv[3] );
if ( arr_size<0 || arr_size>MAX_ARR_SIZE ) {
        fprintf( stderr, "Invalid array size\n" ); exit( 1 );
}
gen_random_uniq2( arr_size, arr, range_min, range_max );
 
printf( "random unique array: array size is %d, range is [%d;%d]\n",
        arr_size, range_min, range_max
);
for ( i= 0; i<arr_size; i++ ) {
        printf( " %d", arr[i] );
}
printf( "\n" );
 
return 0;
 
} /* main() */
 
/* ================================================================ */
void gen_random_uniq2( int arr_size, int *parr, int range_min, int range_max ) {
 
int i, arr2_size, index, range_width;
int *parr2= NULL;
 
 
/* Check arguments */
range_width= range_max-range_min+1;
if ( range_width<1 || arr_size<0 || arr_size>range_width ) {
        fprintf( stderr, "gen_random_uniq2(): Invalid arguments\n" ); exit( 1 );
}
if ( arr_size == 0 ) { return; }
 
 
/* Alloc */
parr2= (int*)malloc( range_width*sizeof(int) );
if ( parr2 == NULL ) {
    fprintf( stderr, "gen_random_uniq2(): No enough memory\n" ); exit( 1 ); 
}
 
/* Init */
for ( i= 0; i<range_width; i++ ) {
    parr2[i]= range_min+i;
}
 
/* Loop */
arr2_size= range_width;
for ( i= 0; i<arr_size; i++ ) {
    index= rand()%arr2_size;
    parr[i]= parr2[index];
    arr2_size--;
    parr2[index]= parr2[arr2_size];
}
 
/* Free */
if ( parr2 != NULL ) { free( parr2 ); parr2= NULL; }
 
} /* gen_random_uniq2() */


Если не подходит стандартный rand().

Дополнительная информация.
http://ru.wikipedia.org/wiki/Г... йных_чисел

Популярный генератор псевдослучайных чисел.
SIMD-oriented Fast Mersenne Twister (SFMT).
SFMT генерирует 128-битные целые псевдослучайные числа в один шаг.
dSFMT напрямую генерирует вещественные (double) псевдослучайные числа.
http://www.math.sci.hiroshima-... index.html


Вернуться к обсуждению:
Генерация массива целых случайных чисел, которые не повторяются C (СИ)
57
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2009, 19:31
Готовые ответы и решения:

Генерация массива целых случайных чисел, которые не повторяются
Нужно получить числа от 0 до 15 в рандомном порядке, делаю так: BOOL...

Вычислить сумму всех чисел массива, которые повторяются и произведение всех чисел, которые не повторяются
Задано массив целых чисел A(n), n=&lt;500. Разработать программу, которая вычисляет сумму всех чисел,...

Из массива целых случайных чисел получить массив из чисел, которые встречаются более одного раза
Из массива целых случайных чисел X=(x i) где i=(1,2,..n) получить массив Y=(y(m)),из чисел которые...

Генерация случайных целых чисел в заданном интервале
Здравствуйте! Правильно ли я прописал код случайных чисел от -1 до 2 ??? Спасибо. procedure...

4
22.07.2009, 19:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.07.2009, 19:31
Помогаю со студенческими работами здесь

Генерация случайных целых чисел из заданного диапазона значений, чтобы получить заданную сумму
Генерация случайных целых чисел из заданного диапазона значений, чтобы получить заданную сумму....

Найти количество чисел , которые повторяются в массиве, а также сколько именно раз они повторяются
Помогите, пожалуйста, Пользователь определяет размер массива, заполняет его и программа считает...

Генерация массива случайных чисел
Начал свое знакомство с haskell, но наступил ступор, когда понадобилось решить задачу, для которой...

Генерация массива случайных чисел
помогите пожалуйста ! нужно написать функцию которая будет генирировать числа от 1 до 60 и...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru