jazykc  2013.3
upoljazykc
 All Classes Files Functions Variables Typedefs Macros Pages
cetnost-znaku-v-poli-retezcu.c
1 /* Četnost znaku v poli řetězců
2 Téma: Dynamická vícerozměrná pole
3 
4 Procvičované učivo: dynamická vícerozměrná pole, funkce, cykly
5 
6 Napište v jazyku C funkci int vyskyty(char* texty[], int pocet, char hledany),
7 která vrací počet výskytů znaku hledany v poli textových řetězců texty.
8 Rozměr pole textových řetězců (počet textových řetězců v poli) lze specifikovat pomocí
9 parametru pocet.
10 Pro testování funkce si v main funkci vytvořte libovolné pole textových řetězců.
11 Příklad výstupu:
12 \code
13 Textove retezce:
14 Ahoj uzivateli,
15 jak se mas?
16 Tohle bude snadne, ne?
17 
18 Znak "e" se v poli vyskytuje 6krát.
19 \endcode
20 */
21 
22 //Povolené knihovny:
23 #include <stdio.h>
24 #include <stdlib.h>
25 
28 int vyskyty(char* texty[], int pocet, char hledany) {
29  int kolik=0;//pocitadlo hledany znak
30  int i,j;//index v texty a retezci
31  for(i=0; i<pocet; i++) {
32  for(j=0; texty[i][j] != '\0'; j++) {
33  if (texty[i][j]==hledany) {
34  kolik++;
35  }
36  }
37  }
38  return kolik;
39 }
40 
41 //testovaci data udelame jako static
42 //h0nza: Hmm, umělo by to hledat š v "Pošťák oběšen na šňůře?"
43 static char *texty[] = {
44 "Ahoj uzivateli",
45 "jak se mas?",
46 "Tohle bude snadne, ne?"
47 //,NULL //nekdy se používí NULL zarážka => není třeba velikost pole
48 };
49 
50 #ifndef NELEM
51 
52 #define NELEM(pole) (sizeof pole/sizeof *pole)
53 // ^^^^^_pole je pointer na pole[0], tj. *pole je 0ty prvek
54 #endif
55 
56 int main (int argc, char *argv[]) {
57  int i;
58  char znak;
59  //nebo tyto vypisy primo do vyskyty()?
60  printf("Textove retezce:\n");//nejdrive retezce v texty vypiseme:
61  for(i=0; i<NELEM(texty); i++) {
62  printf("%s,\n", texty[i]);
63  }
64 
65  znak = 'e'; //a ted spocitame 'e':
66  i = vyskyty(texty, NELEM(texty), znak);
67  printf("Znak '%c' se vyskyty-uje %dkrat\n", znak, i);
68 
69 //TODO: zavolat vyskty() na argc, argv z main(), tj. data z prikazoveho radku
70  return 0;//true, nebo false pokud nic nenalezeno?
71 }
#define NELEM(pole)
int * vyskyty(char *texty[], int pocet, char *hledane)