Skip to content
This repository was archived by the owner on Jul 3, 2019. It is now read-only.

Commit 81514ce

Browse files
committed
1 rocnik pridany
1 parent 3a2568b commit 81514ce

File tree

6 files changed

+958
-0
lines changed

6 files changed

+958
-0
lines changed

1 BIT/ITO/xgulan00.pdf

1.08 MB
Binary file not shown.

1 BIT/IUS/Projekt2/proj2.pdf

692 KB
Binary file not shown.

1 BIT/IUS/Projekt3/xgulan00.pdf

806 KB
Binary file not shown.

1 BIT/IZP/Projekt1/proj1.c

+251
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
/*
2+
* Soubor: main.c
3+
* Datum: 25.10.2013
4+
* Autor: 1BIA - Filip Gulan, [email protected]
5+
* Projekt: 1BIT cislo 1: Pocitanie slov
6+
* Popis viz:
7+
https://wis.fit.vutbr.cz/FIT/st/cwk.php?title=IZP:Projekt1&id=9416
8+
*/
9+
10+
#include <stdio.h>
11+
#include <stdlib.h>
12+
#include <string.h>
13+
#include <limits.h>
14+
15+
#define MNOZINA (((znakvstup < '0') || (znakvstup > '9' && znakvstup < 'A') || (znakvstup > 'Z' && znakvstup < 'a') || (znakvstup > 'z') ) && (znakvstup != '-') && (znakvstup != '_')) //mnozina obsahujuca oddelovace slov
16+
#define MNOZINAARG (((argv[1][0] < '0') || (argv[1][0] > '9' && argv[1][0] < 'A') || (argv[1][0] > 'Z' && argv[1][0] < 'a') || (argv[1][0] > 'z') ) && (argv[1][0] != '-') && (argv[1][0] != '_') && (argv[1][0] != '^') && (argv[1][0] != '.') && (argv[1][0] != ':'))
17+
#define DEBUGZAPNUTY (1)
18+
#define DEBUGVYPNUTY (0)
19+
#define OBMEDZENIECHAR (80) //obmedzenie na pocet znakov pri debugu
20+
#define NEHLADAPOZICIU (0)
21+
#define CIFRA (10) //napr prechod z jendotiek na desiakty...
22+
#define CHYBNAPOZ (0) //chybna pozicia
23+
24+
/*
25+
* Funkcia na vypisovanie napovedy.
26+
*/
27+
int napoveda()
28+
{
29+
printf("Pocitanie slov 2013 \nVytvoril Filip Gulan (xgulan00) \n \n \nVitajte v napovede k programu Pocitanie slov 2013 vytvoreny v ramci 1 projektu pre premet IZP. \n \n");
30+
printf("Program sluzi na pocitanie slov, ktore obsahuju blizsie specifikovany znak. Znak, popripade umiestnenie znaku specifikujeme pomocou argumentov. \n \n");
31+
printf("Program spustajte v nasleduucej podobe: ./proj1 --help alebo ./proj1 X [N] [-d]\n \n");
32+
printf("Popis argumentov: \n \n--help vypise na obrazovku napovedu k programu\n \n");
33+
printf("X reprezentuje hladanyznak, argument je povinny, moze obsahovat znak 0-9, a-z, A-Z, znak - alebo _ .");
34+
printf("Alebo moze obsahovat specialny znak : ktory symbolizuje lubovolne cislo od 0-9, znak ^ symbolizuje lubovolne velke pismeno A-Z a znak . symbolizuje lubovolny znak.\n \n");
35+
printf("[N] predstavuje cislo pozicie hladaneho znaku v slove, je to volitelny argument, cislo je kladne prve pismeno v slove ma poziciu 1 \n \n");
36+
printf("[-d] zapina tzv. ladiaci rezim, kedy sa vypisuju na obrazovku vsetky slova na novy riadok, argument je nepovinny. \n");
37+
return 0;
38+
}
39+
40+
/*
41+
* Funkcia na ziskanie z pola znakov cislo.
42+
*/
43+
int chartoint(char *argument)
44+
{
45+
long int poziciah = 0; //poziciahladaneho znaku
46+
int i = 0; //na zistenie prebehnuteho poctu iteracii
47+
while (argument[i] != 0)
48+
{
49+
if (argument[i] > '9' || argument[i] < '0')
50+
{
51+
poziciah = CHYBNAPOZ;
52+
break;
53+
}
54+
poziciah = (argument[i] - '0') + poziciah * CIFRA;
55+
i++;
56+
}
57+
if (poziciah > INT_MAX)
58+
{
59+
poziciah = CHYBNAPOZ;
60+
}
61+
return poziciah;
62+
}
63+
64+
/*
65+
* Funkcia na pocitanie slov s danym blizsie specifikovanym znakom.
66+
*/
67+
int moznosti(int hladanyznak, int poziciah, int debug)
68+
{
69+
int znakvstup; //znakzovstupu
70+
int prepinacmedzera = 0; //prepinac medzera 0 nieje medzera 1 je medzera
71+
int obmedzenieznakov = 0; //premena na to aby sa nevypisovali znaky v slove na 80+ mieste
72+
int prepinacslovo = 0; //prepinac medzera 0 nieje slovo 1 je slovo
73+
int pocet = 0; //pocet slov zso specifikovanym znakom
74+
int poziciaznak = 0; //pozicia hladaneho znaku
75+
int prvyznak = 0; //premena na zistenie prveho znaku
76+
77+
while (( znakvstup = getchar()) != EOF) //cyklus na ziskanie znakov zo vstupu
78+
{
79+
poziciaznak++;
80+
if (hladanyznak == ':') //hlada cislice v slove
81+
{
82+
if ((znakvstup >= '0' && znakvstup <= '9') && prepinacslovo == 0 && poziciah == 0)
83+
{
84+
pocet++;
85+
prepinacslovo = 1;
86+
}
87+
if ((znakvstup >= '0' && znakvstup <= '9') && prepinacslovo == 0 && poziciah == poziciaznak)
88+
{
89+
pocet++;
90+
prepinacslovo = 1;
91+
}
92+
else if (MNOZINA)
93+
{
94+
prepinacslovo = 0;
95+
poziciaznak = 0;
96+
}
97+
}
98+
else if (hladanyznak == '^') //hlada velke pismena v slove
99+
{
100+
if ((znakvstup >= 'A' && znakvstup <= 'Z') && prepinacslovo == 0 && poziciah == 0)
101+
{
102+
pocet++;
103+
prepinacslovo = 1;
104+
}
105+
if ((znakvstup >= 'A' && znakvstup <= 'Z') && prepinacslovo == 0 && poziciah == poziciaznak)
106+
{
107+
pocet++;
108+
prepinacslovo = 1;
109+
}
110+
else if (MNOZINA)
111+
{
112+
prepinacslovo = 0;
113+
poziciaznak = 0;
114+
}
115+
}
116+
else if (hladanyznak == '.') //hlada vsetky pismena v slove
117+
{
118+
if (MNOZINA)
119+
{
120+
prepinacslovo = 0;
121+
poziciaznak = 0;
122+
}
123+
else if (prepinacslovo == 0 && poziciah == 0)
124+
{
125+
pocet++;
126+
prepinacslovo = 1;
127+
}
128+
else if (prepinacslovo == 0 && poziciah == poziciaznak)
129+
{
130+
pocet++;
131+
prepinacslovo = 1;
132+
}
133+
}
134+
else //inak hlada blizsie specifikovany znak
135+
{
136+
if ((znakvstup == hladanyznak) && prepinacslovo == 0 && poziciah == 0)
137+
{
138+
pocet++;
139+
prepinacslovo = 1;
140+
}
141+
if ((znakvstup == hladanyznak) && prepinacslovo == 0 && poziciah == poziciaznak)
142+
{
143+
pocet++;
144+
prepinacslovo = 1;
145+
}
146+
else if (MNOZINA)
147+
{
148+
prepinacslovo = 0;
149+
poziciaznak = 0;
150+
}
151+
}
152+
153+
if (debug == DEBUGZAPNUTY) //debug mod, vypisuje vsetky slova
154+
{
155+
if((MNOZINA) && prepinacmedzera == 0 && prvyznak == 1)
156+
{
157+
putchar('\n');
158+
prepinacmedzera = 1;
159+
obmedzenieznakov = 0;
160+
}
161+
else if (!(MNOZINA) && obmedzenieznakov <= OBMEDZENIECHAR)
162+
{
163+
putchar(znakvstup);
164+
prepinacmedzera = 0;
165+
obmedzenieznakov++;
166+
prvyznak = 1;
167+
}
168+
}
169+
}
170+
printf("%d\n", pocet);
171+
return 0;
172+
}
173+
174+
/*
175+
* Funkcia main, ktora spracovava argumenty a nasledne vola funkcie
176+
*/
177+
int main(int argc, char *argv[])
178+
{
179+
if (argc == 2 && !(MNOZINAARG))
180+
{
181+
if (strcmp(argv[1], "--help") == 0) //vypisanie napovedy
182+
{
183+
napoveda();
184+
}
185+
else if (strlen(argv[1]) == 1)
186+
{
187+
moznosti(argv[1][0], NEHLADAPOZICIU ,DEBUGVYPNUTY);
188+
}
189+
else
190+
{
191+
printf("Argumenty neboli zadane spravne!\n");
192+
return 1;
193+
}
194+
}
195+
else if (argc == 3 && !(MNOZINAARG))
196+
{
197+
if (strlen(argv[1]) == 1 && strcmp(argv[2], "-d") == 0)
198+
{
199+
moznosti(argv[1][0], NEHLADAPOZICIU, DEBUGZAPNUTY);
200+
}
201+
else if (strlen(argv[1]) == 1 && strcmp(argv[2], "-d") != 0)
202+
{
203+
int poziciah = chartoint(argv[2]);
204+
if (poziciah <= CHYBNAPOZ)
205+
{
206+
printf("Argumenty neboli zadane spravne!\n");
207+
return 1;
208+
}
209+
moznosti(argv[1][0], poziciah, DEBUGVYPNUTY);
210+
}
211+
else
212+
{
213+
printf("Argumenty neboli zadane spravne!\n");
214+
return 1;
215+
}
216+
}
217+
else if (argc == 4 && !(MNOZINAARG))
218+
{
219+
if (strlen(argv[1]) == 1 && strcmp(argv[2], "-d") == 0)
220+
{
221+
int poziciah = chartoint(argv[3]);
222+
if (poziciah <= CHYBNAPOZ)
223+
{
224+
printf("Argumenty neboli zadane spravne!\n");
225+
return 1;
226+
}
227+
moznosti(argv[1][0], poziciah, DEBUGZAPNUTY);
228+
}
229+
else if (strlen(argv[1]) == 1 && strcmp(argv[3], "-d") == 0)
230+
{
231+
int poziciah = chartoint(argv[2]);
232+
if (poziciah <= CHYBNAPOZ)
233+
{
234+
printf("Argumenty neboli zadane spravne!\n");
235+
return 1;
236+
}
237+
moznosti(argv[1][0], poziciah, DEBUGZAPNUTY);
238+
}
239+
else
240+
{
241+
printf("Argumenty neboli zadane spravne!\n");
242+
return 1;
243+
}
244+
}
245+
else
246+
{
247+
printf("Argumenty neboli zadane spravne!\n");
248+
return 1;
249+
}
250+
return 0;
251+
}

0 commit comments

Comments
 (0)