Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- void zliczanie(int *tab,int n);
- int maks(int *tab,int n);
- int main()
- {
- char znak='d';
- int *tab=NULL,n,i;
- while(znak!='q')
- {
- printf("Co chcesz zrobic?\nw - wyswietlenie tablicy\nm - maksimum tablicy\nt - tworzenie tablicy\ns - sortowanie przez zliczanie\nq - wyjscie z programu\n");
- fflush(stdin);
- scanf("%c",&znak);
- switch (znak)
- {
- case 't':
- fflush(stdin);
- scanf("%d",&n);
- tab=(int *)realloc(tab,sizeof(int)*n);
- for(i=0;i<n;i++)
- {
- fflush(stdin);
- scanf("%d",tab+i);
- }
- break;
- case 'w':
- for(i=0;i<n;i++)
- {
- printf("%d ",*(tab+i));
- }
- break;
- case 'm':
- printf("Maksimum: %d\n",maks(tab,n));
- case 's':
- zliczanie(tab,n);
- break;
- default:
- break;
- }
- }
- return 0;
- }
- int maks(int *tab,int n)
- {
- int i=0,max=tab[0];
- for (i=1;i<n;i++)
- if(tab[i]>max)
- max=tab[i];
- return max;
- }
- void zliczanie(int *tab,int n)
- {
- int k=maks(tab,n),i=0,*b=NULL,*c=NULL;
- b=(int *)realloc(b,n*sizeof(int));
- c=(int *)realloc(c,(k+1)*sizeof(int));
- for(i=0;i<=k;i++)
- c[i]=0;
- for (i=0;i<n;i++)
- c[tab[i]]=c[tab[i]]+1;
- for(i=1;i<=k;i++)
- c[i]+=c[i-1];
- for (i=0;i<n;i++)
- {
- b[c[tab[i]]-1]=tab[i];
- c[tab[i]]=c[tab[i]]-1;
- }
- for(i=0;i<n;i++)
- tab[i]=b[i];
- free(b);
- free(c);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement