Upload files to 'cv1'
file commit
This commit is contained in:
parent
4810102859
commit
c9050ce5f4
98
cv1/program.c
Normal file
98
cv1/program.c
Normal file
@ -0,0 +1,98 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define LINE_LEN 100
|
||||
|
||||
typedef struct {
|
||||
char name[LINE_LEN];
|
||||
float price;
|
||||
} pizza;
|
||||
|
||||
|
||||
int get_line(char *name);
|
||||
int get_pizza(pizza *p_item);
|
||||
char decode(char t);
|
||||
int contain_substr(const char* menu_name, const char* target_name);
|
||||
|
||||
|
||||
|
||||
int main() {
|
||||
printf("Zadaj hladanu surovinu:\n");
|
||||
char target_name[LINE_LEN];
|
||||
if (!get_line(target_name)) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
printf("Zadaj jedalny listok:\n");
|
||||
pizza items[LINE_LEN];
|
||||
int count = 0;
|
||||
while(get_pizza(items + count)) {
|
||||
// printf("%s\n", items[count].name);
|
||||
count++;
|
||||
}
|
||||
|
||||
for(int i = 0; i < count; i++) {
|
||||
if (contain_substr(items[i].name, target_name)) {
|
||||
printf("%s\n", items[i].name);
|
||||
printf("%.2f\n", items[i].price);
|
||||
}
|
||||
}
|
||||
printf("Nacitanych %d poloziek.\n", count);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int get_line(char *name)
|
||||
{
|
||||
memset(name, 0, LINE_LEN);
|
||||
char* r = fgets(name, LINE_LEN, stdin);
|
||||
if (r == NULL || name[1] == 0) {
|
||||
return 0;
|
||||
}
|
||||
int n = strlen(name);
|
||||
if (name[n - 1] == '\n')
|
||||
name[n - 1] = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
int get_pizza(pizza *p_item)
|
||||
{
|
||||
int res = get_line(p_item->name);
|
||||
char price_string[LINE_LEN];
|
||||
res += get_line(price_string);
|
||||
if (res != 2) return 0;
|
||||
sscanf(price_string, "%f", &(p_item->price));
|
||||
return 1;
|
||||
}
|
||||
|
||||
char decode(char t)
|
||||
{
|
||||
if(t >= 'A' && t <= 'Z') {
|
||||
return t - 'A' + 'a';
|
||||
}
|
||||
char numbers[] = "0123456789";
|
||||
char letters[] = "oizeasbtbq";
|
||||
for (int i = 0; i < 10; i++){
|
||||
if (t == numbers[i]){
|
||||
return letters[i];
|
||||
}
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
int contain_substr(const char* menu_name, const char* target_name)
|
||||
{
|
||||
int len_str = strlen(menu_name);
|
||||
int len_sub = strlen(target_name);
|
||||
for(int i = 0; i <= len_str - len_sub; i++) {
|
||||
int flag = 1;
|
||||
for(int j = 0; flag == 1 && j < len_sub; j++) {
|
||||
if (decode(menu_name[i + j]) != decode(target_name[j])) {
|
||||
flag = 0;
|
||||
}
|
||||
}
|
||||
if (flag) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user