Subversion Repositories svnkaklik

Rev

Rev 408 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 408 Rev 437
1
/////////////////////////////////////////////////////////////////
1
/////////////////////////////////////////////////////////////////
2
// Program spocita pocet malych, velkych pismen a cislic v napsane radce.
2
// Program spocita pocet malych, velkych pismen a cislic v napsane radce.
3
/////////////////////////////////////////////////////////////////
3
/////////////////////////////////////////////////////////////////
4
 
4
 
5
#include <stdlib.h>
5
#include <stdlib.h>
6
#include <stdio.h>
6
#include <stdio.h>
7
 
7
 
8
#define TRUE 1
8
#define TRUE 1
9
#define FALSE 0
9
#define FALSE 0
10
 
10
 
11
int rnd (int max)   // generuje nahodna cela cisla od 0 do zadane hodnoty max.
11
int rnd (int max)   // generuje nahodna cela cisla od 0 do zadane hodnoty max.
12
{
12
{
13
  return ( (int) (max * (rand()/(RAND_MAX+1.0))));
13
  return ( (int) (max * (rand()/(RAND_MAX+1.0))));
14
}
14
}
15
 
15
 
16
void init_rnd(void)  // inicializuje generator nahodnych cisel
16
void init_rnd(void)  // inicializuje generator nahodnych cisel
17
{
17
{
18
  time_t t;
18
  time_t t;
19
  unsigned int seed;
19
  unsigned int seed;
20
  time(&t);
20
  time(&t);
21
  seed=(unsigned int) t;
21
  seed=(unsigned int) t;
22
  srand(seed);
22
  srand(seed);
23
}
23
}
24
 
24
 
25
 
25
 
26
int napln_pole(int *adresa,int velikost)  // naplni pole hodnotami
26
int napln_pole(int *adresa,int velikost)  // naplni pole hodnotami
27
{
27
{
28
int i;
28
int i;
29
  for(i=0;i<velikost;i++) adresa[i]=rnd('Z'-'A'+1)+'A';
29
  for(i=0;i<velikost;i++) adresa[i]=rnd('Z'-'A'+1)+'A';
30
}
30
}
31
 
31
 
32
int vypis_pole(int *adresa,int velikost,int strana)
32
int vypis_pole(int *adresa,int velikost,int strana)
33
{
33
{
34
int i;
34
int i;
35
  if(strana) for(i=0; i<velikost;i++) printf("%c",*(adresa+i));
35
  if(strana) for(i=0; i<velikost;i++) printf("%c",*(adresa+i));
36
  else  for(i=velikost;i>=0;i--) printf("%c",*(adresa+i));
36
  else  for(i=velikost;i>=0;i--) printf("%c",*(adresa+i));
37
}
37
}
38
 
38
 
39
int setrid_pole(int *adresa,int velikost)
39
int setrid_pole(int *adresa,int velikost)
40
{
40
{
41
int pismeno,vetsipismeno;
41
int pismeno,vetsipismeno;
42
int a,b;
42
int a,b;
43
 
43
 
44
  for(a=0; a<velikost;a++)
44
  for(a=0; a<velikost;a++)
45
  {
45
  {
46
    pismeno = *(adresa+a);
46
    pismeno = *(adresa+a);
47
 
47
 
48
    for(b=a; b<velikost;b++)
48
    for(b=a; b<velikost;b++)
49
    {
49
    {
50
      if (*(adresa+b) > pismeno)
50
      if (*(adresa+b) > pismeno)
51
      {
51
      {
52
        vetsipismeno = *(adresa+b);
52
        vetsipismeno = *(adresa+b);
53
        break;
53
        break;
54
      }
54
      }
55
    }
55
    }
56
    adresa[a] = vetsipismeno;
56
    adresa[a] = vetsipismeno;
57
    adresa[b] = pismeno;
57
    adresa[b] = pismeno;
58
  }
58
  }
59
}
59
}
60
 
60
 
61
int main()
61
int main()
62
{
62
{
63
int *pole;
63
int *pole;
64
int velikost;
64
int velikost;
65
 
65
 
66
  init_rnd();  
66
  init_rnd();  
67
 
67
 
68
  printf("Zadejte velikost pole:");
68
  printf("Zadejte velikost pole:");
69
  scanf("%d", &velikost);
69
  scanf("%d", &velikost);
70
 
70
 
71
  pole=(int*)malloc( sizeof(int) * velikost);
71
  pole=(int*)malloc( sizeof(int) * velikost);
72
  if (NULL==pole) printf("pamet nebyla pridelena");
72
  if (NULL==pole) printf("pamet nebyla pridelena");
73
 
73
 
74
  napln_pole(pole,velikost);
74
  napln_pole(pole,velikost);
75
  vypis_pole(pole,velikost,TRUE);
75
  vypis_pole(pole,velikost,TRUE);
76
  setrid_pole(pole,velikost);
76
  setrid_pole(pole,velikost);
77
  vypis_pole(pole,velikost,FALSE);
77
  vypis_pole(pole,velikost,FALSE);
78
  
78
  
79
  free (pole);
79
  free (pole);
80
}
80
}