Напечатать элементы массива, частота встречаемости которых минимальна - C (СИ)

Формулировка задачи:

Нужна помощь с задачей: Задан массив m[n], элементами которого являются "длинные" целые числа. Напечатать все те элементы массива,частота встречаемости которых минимальна. то есть если я правильно понял,то нужно вывести все не повторяющиеся элементы ? я написал такой код, все компилится, но программа не работает,а я не могу понять почему
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
void fill(long int* mass,int size,long a,long b)
{
    int i;
    srand((unsigned int)time(0));
    for(i=0;i<size;i++)
    {
            mass[i]=(b-a)*((long int)rand())/RAND_MAX+a;
    }
}
void displayMinimalOccurence(long int* mass,int size)
{
    int i,j,k;
    for(i=0;i<size;i++)
        {
            k=0;
            for(j=0;j<size;j++)
                {   
                    if(mass[i]==mass[j])
                        k++;
                    if(k==1)
                        printf("%l, ",mass[i]);
                }
        }
}
 
void main()
{
    long int* mass,a,b;
    int size;
    
    printf("Zadaite razmer massiva\n");
    scanf("%d",&size);
    mass=(long int*)malloc(sizeof(long int)*size);
    
    printf("Zadaite otrezok zapolnenia[a,b]\n");
    scanf("%l %l",&a,&b);
    
    fill(mass,size,a,b);
    displayMinimalOccurence(mass,size);
    system("pause");
}

Код к задаче: «Напечатать элементы массива, частота встречаемости которых минимальна - C (СИ)»

textual
#include <malloc.h>
#include <stdio.h>
 
void PrintOft(long int *Arr, int n)
{
    long int *V;
    int *F;
    int i,j,k,min,q;
 
    V=(long *) calloc(n,sizeof(long int)); /* уникальные значения */
    F=(int *) calloc(n,sizeof(int)); /* частоты повторения */
 
    k=-1;
 
    for (i=0; i<n; i++)
    {
        q=0;
        for (j=0; j<=k; j++)
            if (V[j]==Arr[i])
            {
                q=-1;
                F[j]++;
                break;
            }
        if (q==0)
        {
            k++;
            V[k]=Arr[i];
            F[k]=1;
        }
    }
 
        /* ищем минимальную частоту */
 
    min=F[0];
    for (i=0; i<k; i++) if (F[i] < min) min=F[i];
    
        /* печать элементов с минимальной частотой */
 
    for (i=0; i<k; i++) if (F[i]==min) printf("%d ",V[i]);
 
    printf("\n");
 
    free(V);
    free(F);
 
}
 
int main(int argc, char* argv[])
{
    long int A[15]={1,1,1,123,45,736,-6,123,736,45,45,45,-6,-6,-6};
    PrintOft(A,15);
    return 0;
}
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

7   голосов, оценка 3.714 из 5


СДЕЛАЙТЕ РЕПОСТ
Похожие ответы