jazykc  2013.3
upoljazykc
 All Classes Files Functions Variables Typedefs Macros Pages
cetnost-znaku-v-poli-retezcu2.c
Go to the documentation of this file.
1 
24 //Povolené knihovny:
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include <string.h>
28 
33 int *vyskyty(char* texty[], int pocet, char *hledane) {
34  int *koliky;//pocitadla hledane[k] znak
35  int kolik;//pocitadlo vyskytu znaku
36  char hledany;
37  int i,j,k;//index v texty a retezci texty[i] a hledane[k]
38  int hledanych=strlen(hledane);
39 
40  koliky = (int*)malloc(hledanych * sizeof(int *));
41  for(k=0; k<hledanych; k++) {
42  hledany=hledane[k];
43  kolik=0;
44  for(i=0; i<pocet; i++) {
45  for(j=0; texty[i][j] != '\0'; j++) {
46  if (texty[i][j]==hledany) {
47  kolik++;
48  }
49  }
50  }
51  koliky[k]=kolik;
52  }
53  return koliky;
54 }
55 
56 //testovaci data udelame jako static
57 //h0nza: Hmm, umělo by to hledat š v "Pošťák oběšen na šňůře?"
58 static char *texty[] = {
59 "Ahoj uzivateli",
60 "jak se mas?",
61 "Tohle bude snadne, ne?"
62 //,NULL //nekdy se používí NULL zarážka => není třeba velikost pole
63 };
64 
65 #ifndef NELEM
66 
67 #define NELEM(pole) (sizeof pole/sizeof *pole)
68 // ^^^^^_pole je pointer na pole[0], tj. *pole je 0ty prvek
69 #endif
70 
71 int main (int argc, char *argv[]) {
72  int i, len;
73  int *pi;
74  char *znaky;
75  //nebo tyto vypisy primo do vyskyty()?
76  printf("Textove retezce:\n");//nejdrive retezce v texty vypiseme:
77  for(i=0; i<NELEM(texty); i++) {
78  printf("%s,\n", texty[i]);
79  }
80 
81  znaky = "eais"; //a ted spocitame znaky:
82  pi = vyskyty(texty, NELEM(texty), znaky);
83  len = strlen(znaky);
84  for(i=0; i<len; i++) {
85  printf("Znak '%c' se vyskyty-uje %dkrat\n", znaky[i], pi[i]);
86  }
87 
88 //TODO: zavolat vyskty() na argc, argv z main(), tj. data z prikazoveho radku
89  return 0;//true, nebo false pokud nic nenalezeno?
90 }
#define NELEM(pole)
int * vyskyty(char *texty[], int pocet, char *hledane)