This commit is contained in:
Alina Konoval 2025-11-27 19:47:40 +01:00
parent c11006e42b
commit 501ff379f0

66
a2/program.c Normal file
View File

@ -0,0 +1,66 @@
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int is_min_heap(int *a, int n) {
for (int i = 0; i <= (n - 2) / 2; i++) {
int l = 2 * i + 1;
int r = 2 * i + 2;
if (l < n && a[i] > a[l]) return 0;
if (r < n && a[i] > a[r]) return 0;
}
return 1;
}
void preorder(int *a, int n, int i, int level) {
if (i >= n) return;
printf("%*s%d\n", level, "", a[i]);
preorder(a, n, 2*i+1, level+1);
preorder(a, n, 2*i+2, level+1);
}
int main() {
char line[10000];
int numbers[2000];
int count = 0;
if (!fgets(line, sizeof(line), stdin)) {
printf("Nie je kopa.\n");
return 0;
}
int i = 0;
while (line[i] != '\0') {
while (isspace(line[i])) i++;
if (!(isdigit(line[i]) || line[i] == '-' || line[i] == '+'))
break;
int sign = 1;
if (line[i] == '-') { sign = -1; i++; }
else if (line[i] == '+') { i++; }
long value = 0;
while (isdigit(line[i])) {
value = value * 10 + (line[i] - '0');
i++;
}
numbers[count++] = (int)(value * sign);
}
if (is_min_heap(numbers, count)) {
printf("Je to taka kopa:\n");
preorder(numbers, count, 0, 0);
} else {
printf("Nie je kopa.\n");
}
return 0;
}