This commit is contained in:
mr314ot 2025-11-30 14:01:30 +01:00
parent 55c79d92df
commit 8bf4c7c4d2

67
a2/program.c Normal file
View File

@ -0,0 +1,67 @@
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define MAX 1000
// preorder vypis s odsadenim podla urovne
void print_preorder(int *a, int n, int i, int level) {
if (i >= n) return;
// odsadenie medzerami
for (int k = 0; k < level; k++) printf(" ");
printf("%d\n", a[i]);
// lavy
print_preorder(a, n, 2*i + 1, level + 1);
// pravy
print_preorder(a, n, 2*i + 2, level + 1);
}
int main() {
char input[5000];
int heap[MAX];
int count = 0;
// nacitanie riadka
if (!fgets(input, sizeof(input), stdin)) {
printf("Nie je kopa.\n");
return 0;
}
// parsovanie cisel zo vstupu
char *ptr = input;
while (*ptr) {
while (*ptr && isspace((unsigned char)*ptr)) ptr++;
if (*ptr == '\0') break;
char *end;
long val = strtol(ptr, &end, 10);
if (ptr == end) break;
heap[count++] = (int)val;
ptr = end;
}
// overenie minimalnej kopovitosti
for (int i = 0; i < count; i++) {
int l = 2*i + 1;
int r = 2*i + 2;
if (l < count && heap[l] < heap[i]) {
printf("Nie je kopa.\n");
return 0;
}
if (r < count && heap[r] < heap[i]) {
printf("Nie je kopa.\n");
return 0;
}
}
printf("Je to taka kopa:\n");
print_preorder(heap, count, 0, 0);
return 0;
}