Заполнение массива случайными неповторяющимися числами в заданном диапазоне - 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;
}

Код к задаче: «Заполнение массива случайными неповторяющимися числами в заданном диапазоне - C (СИ)»

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;
            }
        }

14   голосов, оценка 4.071 из 5


СОХРАНИТЬ ССЫЛКУ