Rev 287 | Rev 408 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download
/////////////////////////////////////////////////////////////////
// Program spocita pocet malych, velkych pismen a cislic v napsane radce.
/////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#define TRUE 1
#define FALSE 0
int rnd (int max) // generuje nahodna cela cisla od 0 do zadane hodnoty max.
{
return ( (int) (max * (rand()/(RAND_MAX+1.0))));
}
void init_rnd(void) // inicializuje generator nahodnych cisel
{
time_t t;
unsigned int seed;
time(&t);
seed=(unsigned int) t;
srand(seed);
}
int napln_pole(int *adresa,int velikost) // naplni pole hodnotami
{
int i;
for(i=0;i<velikost;i++) adresa[i]=rnd('Z'-'A'+1)+'A';
}
int vypis_pole(int *adresa,int velikost,int strana)
{
int i;
if(strana) for(i=0; i<velikost;i++) printf("%c",*(adresa+i));
else for(i=velikost;i>=0;i--) printf("%c",*(adresa+i));
}
int setrid_pole(int *adresa,int velikost)
{
int pismeno,vetsipismeno;
int a,b;
for(a=0; a<velikost;a++)
{
pismeno = *(adresa+a);
for(b=a; b<velikost;b++)
{
if (*(adresa+b) > pismeno)
{
vetsipismeno = *(adresa+b);
break;
}
}
adresa[a] = vetsipismeno;
adresa[b] = pismeno;
}
}
int main()
{
int *pole;
int velikost;
init_rnd();
printf("Zadejte velikost pole:");
scanf("%d", &velikost);
pole=(int*)malloc( sizeof(int) * velikost);
if (NULL==pole) printf("pamet nebyla pridelena");
napln_pole(pole,velikost);
vypis_pole(pole,velikost,TRUE);
setrid_pole(pole,velikost);
vypis_pole(pole,velikost,FALSE);
free (pole);
}