Заполнение массива случайными неповторяющимися числами в заданном диапазоне - C (СИ)
Формулировка задачи:
Нужно заполнить массив целых чисел в любом диапазоне, не допуская генерации повторяющихся чисел..
Правда ничего не выдаёт и как я понимаю, ошибка там, где проверка на повторения..
Листинг программы
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <locale.h>
- int main()
- {
- setlocale (LC_ALL,"russian");
- const int n=100;
- int a[n],m,st,fin,r;
- printf("Введите размер массива \n");
- scanf_s("%d",&m);
- printf("Введите начало диапазона \n");
- scanf_s("%d",&st);
- printf("Введите конец диапазона \n ");
- scanf_s("%d",&fin);
- for (int i=0;i<m;i++)
- {
- r=st+rand()%(fin-st);
- a[i]=r;
- for (int l=0;l<m;l++)
- {
- while (a[i]==a[l])
- {
- r=st+rand()%(fin-st);
- a[l]=r;
- }
- }
- }
- for (int i=0;i<m;i++)
- printf("%d ",a[i]);
- getch();
- return 0;
- }
Решение задачи: «Заполнение массива случайными неповторяющимися числами в заданном диапазоне»
textual
Листинг программы
- for (int l=0;l<m;l++)
- {
- if (i==l) break; //прерывание цикла
- while (a[i]==a[l])
- {
- r=st+rand()%(fin-st);
- a[l]=r;
- }
- }
Объяснение кода листинга программы
В данном коде происходит следующее:
- Задаются начальные значения переменных:
m
- количество элементов, которые нужно заполнить в массивеi
- индекс текущего элемента, который заполняетсяl
- индекс проверяемого элементаst
- начало диапазона случайных чиселfin
- конец диапазона случайных чиселa
- массив, который заполняется
- В цикле
for
перебираются все элементы массиваa
. На каждой итерации выполняется следующее:- Если
i
равноl
, то цикл прерывается. Это сделано для того, чтобы не выполнять лишние итерации после того, как все элементы массива заполнены. - В цикле
while
проверяется, является ли текущий элементa[i]
равным любому другому элементу массиваa[l]
. Если это так, то цикл продолжает выполняться. - Если цикл
while
завершен, то генерируется случайное число в диапазоне отst
доfin
и присваивается элементуa[l]
.
- Если
- После завершения цикла
for
все элементы массиваa
будут заполнены случайными неповторяющимися числами в заданном диапазоне.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д