usaa21/a4/program.c

68 lines
1.5 KiB
C
Raw Normal View History

2021-12-01 19:33:09 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 20
int checkMinHeap(const long* arr, const int size){
2021-12-02 02:31:27 +00:00
if(size == 1){
return 1;
}
2021-12-01 19:33:09 +00:00
for (int i = 0; i<=(size-2)/2; i++) {
if(arr[2*i] < arr[i]) return -1;
if(arr[2*i+1] < arr[i]) return -1;
}
return 1;
}
long int* strToInt(const char* chArr){
int j = strlen(chArr);
//int i = 0;
2021-12-02 02:31:27 +00:00
int counter=0;
2021-12-01 19:33:09 +00:00
//printf("dlength %d\n",j/2-1);
2021-12-02 02:31:27 +00:00
long int* tmp = (long int*)calloc(j,sizeof(long));
2021-12-01 19:33:09 +00:00
char* pEND;
for(int i=0; i<j; i++){
2021-12-02 02:31:27 +00:00
tmp[i] = strtol(chArr, &pEND, 10);
2021-12-01 19:33:09 +00:00
//printf("%ld \n", dArr[i]);
2021-12-02 02:31:27 +00:00
if(tmp[i] == 0) break;
counter++;
2021-12-01 19:33:09 +00:00
chArr = pEND;
}
/* for(int i = 0; i<j/2-1; i++){
printf("%ld ", dArr[i]);
}*/
2021-12-02 02:32:16 +00:00
//printf("counter %d\n", counter);
2021-12-02 02:31:27 +00:00
long* dArr = (long*)calloc(counter, sizeof(long));
for(int i; i < counter; i++){
dArr[i] = tmp[i];
}
free(tmp);
2021-12-01 19:33:09 +00:00
return dArr;
}
void print_tree(const long* arr){
2021-12-02 02:31:27 +00:00
long size = sizeof(&arr)/sizeof(arr[0]);
for(int i = 0; i < size; i++){
printf("%ld\n", arr[i]);
2021-12-01 19:33:09 +00:00
}
}
int main(){
char chArr[SIZE];
while(1){
char* r = fgets(chArr, SIZE, stdin);
if(r == NULL){
break;
}
}
long int* dArr = strToInt(chArr);
int heap = checkMinHeap(dArr, sizeof(&dArr)/sizeof(long));
if(heap == 1){
printf("Je to taka kopa:\n");
print_tree(dArr);
}
free(dArr);
return 0;
}