Subversion Repositories svnkaklik

Rev

Rev 313 | 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);
}