cv1
This commit is contained in:
parent
04a4d176f2
commit
6750985a85
145
cv1/program.c
145
cv1/program.c
@ -1,6 +1,143 @@
|
||||
|
||||
#include <stdio.h>
|
||||
int main() {
|
||||
//aa
|
||||
return 0;
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define LINESIZE 100
|
||||
#define MAX_PIZZAS 1000
|
||||
|
||||
struct pizza {
|
||||
float prize;
|
||||
char name[LINESIZE];
|
||||
};
|
||||
|
||||
// "Hacker Script"
|
||||
char hacker_script(char c) {
|
||||
|
||||
c = tolower(c);
|
||||
|
||||
char numbers[] = "0123456789";
|
||||
char letters[] = "oizeasbtbq";
|
||||
|
||||
for (int i = 0; i < 10; i++) {
|
||||
if (c == numbers[i]) {
|
||||
return letters[i];
|
||||
}
|
||||
}
|
||||
|
||||
switch(c) {
|
||||
case 'o': return 'o';
|
||||
case 'i': return 'i';
|
||||
case 'z': return 'z';
|
||||
case 'e': return 'e';
|
||||
case 'a': return 'a';
|
||||
case 's': return 's';
|
||||
case 'b': return 'b';
|
||||
case 't': return 't';
|
||||
case 'q': return 'q';
|
||||
default: return c;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void normalize_string(char* dest, const char* src) {
|
||||
int j = 0;
|
||||
for(int i = 0; src[i] != '\0' && j < LINESIZE - 1; i++) {
|
||||
dest[j++] = hacker_script(src[i]);
|
||||
}
|
||||
dest[j] = '\0';
|
||||
}
|
||||
|
||||
|
||||
int search_string(const char* heap, const char* needle) {
|
||||
int heap_len = strlen(heap);
|
||||
int needle_len = strlen(needle);
|
||||
|
||||
if(needle_len == 0) return 0;
|
||||
|
||||
for(int i = 0; i <= heap_len - needle_len; i++) {
|
||||
int j = 0;
|
||||
while(j < needle_len && heap[i + j] == needle[j]) {
|
||||
j++;
|
||||
}
|
||||
if(j == needle_len) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Funkcia na načítanie jednej položky jedálneho lístka
|
||||
int read_pizza(FILE* fp, struct pizza* item) {
|
||||
char line1[LINESIZE];
|
||||
char line2[LINESIZE];
|
||||
|
||||
// Načítať názov
|
||||
if(fgets(line1, sizeof(line1), fp) == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
line1[strcspn(line1, "\n")] = '\0';
|
||||
|
||||
|
||||
if(fgets(line2, sizeof(line2), fp) == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
line2[strcspn(line2, "\n")] = '\0';
|
||||
|
||||
|
||||
float value = strtof(line2, NULL);
|
||||
|
||||
|
||||
if(value == 0.0F && strcmp(line2, "0") != 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
item->prize = value;
|
||||
strncpy(item->name, line1, LINESIZE - 1);
|
||||
item->name[LINESIZE - 1] = '\0';
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int main() {
|
||||
char search_input[LINESIZE];
|
||||
char normalized_search[LINESIZE];
|
||||
struct pizza jedalny_listok[MAX_PIZZAS];
|
||||
int count = 0;
|
||||
int matched = 0;
|
||||
|
||||
printf("Zadaj hladanu surovinu:\n");
|
||||
if(fgets(search_input, sizeof(search_input), stdin) == NULL) {
|
||||
fprintf(stderr, "Chyba pri načítavaní vyhľadávacieho reťazca.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
search_input[strcspn(search_input, "\n")] = '\0';
|
||||
|
||||
|
||||
normalize_string(normalized_search, search_input);
|
||||
|
||||
printf("Zadaj jedalny listok:\n");
|
||||
|
||||
while(count < MAX_PIZZAS && read_pizza(stdin, &jedalny_listok[count])) {
|
||||
count++;
|
||||
}
|
||||
|
||||
for(int i = 0; i < count; i++) {
|
||||
char normalized_name[LINESIZE];
|
||||
normalize_string(normalized_name, jedalny_listok[i].name);
|
||||
|
||||
if(search_string(normalized_name, normalized_search) != -1) {
|
||||
printf("%s\n%.2f\n", jedalny_listok[i].name, jedalny_listok[i].prize);
|
||||
matched++;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Nacitanych %d poloziek.\n", count);
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user