Заполнение массива случайными неповторяющимися числами в заданном диапазоне - 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
будут заполнены случайными неповторяющимися числами в заданном диапазоне.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д