almost final
This commit is contained in:
parent
f37d69ab7b
commit
7b86b6ba5f
84
a4/program.c
84
a4/program.c
@ -1,67 +1,113 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#define SIZE 20
|
#define SIZE 100
|
||||||
|
|
||||||
int checkMinHeap(const long* arr, const int size){
|
int checkMinHeap(const long* arr, const int size){
|
||||||
|
//printf("size: %d\n",size);
|
||||||
if(size == 1){
|
if(size == 1){
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
if(size == 2){
|
||||||
|
if(arr[0] < arr[1]){
|
||||||
|
return 1;
|
||||||
|
}else {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
for (int i = 0; i<=(size-2)/2; i++) {
|
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;
|
if(arr[2*i+1] < arr[i]) return -1;
|
||||||
|
if(arr[2*i] < arr[i]) return -1;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
long int* strToInt(const char* chArr){
|
long int* strToInt(const char* chArr, int* counter){
|
||||||
int j = strlen(chArr);
|
int j = strlen(chArr);
|
||||||
//int i = 0;
|
//int i = 0;
|
||||||
int counter=0;
|
*counter=0;
|
||||||
//printf("dlength %d\n",j/2-1);
|
//printf("dlength %d\n",j);
|
||||||
long int* tmp = (long int*)calloc(j,sizeof(long));
|
long int* tmp = (long int*)calloc(j,sizeof(long));
|
||||||
char* pEND;
|
char* pEND;
|
||||||
for(int i=0; i<j; i++){
|
for(int i=0; i<j; i++){
|
||||||
tmp[i] = strtol(chArr, &pEND, 10);
|
tmp[i] = strtol(chArr, &pEND, 10);
|
||||||
//printf("%ld \n", dArr[i]);
|
//printf("%ld \n", dArr[i]);
|
||||||
if(tmp[i] == 0) break;
|
if(tmp[i] == 0) break;
|
||||||
counter++;
|
*counter = *counter+1;
|
||||||
chArr = pEND;
|
chArr = pEND;
|
||||||
}
|
}
|
||||||
/* for(int i = 0; i<j/2-1; i++){
|
//printf("counter %d\n", *counter);
|
||||||
printf("%ld ", dArr[i]);
|
long* dArr = (long*)calloc(*counter, sizeof(long));
|
||||||
}*/
|
for(int i; i < *counter; i++){
|
||||||
//printf("counter %d\n", counter);
|
|
||||||
long* dArr = (long*)calloc(counter, sizeof(long));
|
|
||||||
for(int i; i < counter; i++){
|
|
||||||
dArr[i] = tmp[i];
|
dArr[i] = tmp[i];
|
||||||
}
|
}
|
||||||
free(tmp);
|
free(tmp);
|
||||||
return dArr;
|
return dArr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void print_tree(const long* arr){
|
void print_tree(const long* arr, int* size){
|
||||||
long size = sizeof(&arr)/sizeof(arr[0]);
|
for(int i=0; i<*size; i++){
|
||||||
for(int i = 0; i < size; i++){
|
switch (i) {
|
||||||
|
case 0:
|
||||||
printf("%ld\n",arr[i]);
|
printf("%ld\n",arr[i]);
|
||||||
|
continue;;
|
||||||
|
case 1:
|
||||||
|
printf(" ");
|
||||||
|
printf("%ld\n",arr[i]);
|
||||||
|
continue;;
|
||||||
|
case 2:
|
||||||
|
printf(" ");
|
||||||
|
printf("%ld\n",arr[i]);
|
||||||
|
continue;
|
||||||
|
case 3:
|
||||||
|
printf("%ld\n",arr[i]);
|
||||||
|
continue;
|
||||||
|
case 4:
|
||||||
|
printf(" ");
|
||||||
|
printf("%ld\n",arr[i]);
|
||||||
|
continue;
|
||||||
|
case 5:
|
||||||
|
printf(" ");
|
||||||
|
printf("%ld\n",arr[i]);
|
||||||
|
break;
|
||||||
|
case '6':
|
||||||
|
printf("%ld",arr[i]);
|
||||||
|
break;
|
||||||
|
case '7':
|
||||||
|
printf("%ld",arr[i]);
|
||||||
|
break;
|
||||||
|
case '8':
|
||||||
|
printf("%ld",arr[i]);
|
||||||
|
break;
|
||||||
|
case '9':
|
||||||
|
printf("%ld",arr[i]);
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
char chArr[SIZE];
|
char chArr[SIZE];
|
||||||
|
int counter;
|
||||||
|
int* counterPtr = &counter;
|
||||||
while(1){
|
while(1){
|
||||||
char* r = fgets(chArr, SIZE, stdin);
|
char* r = fgets(chArr, SIZE, stdin);
|
||||||
if(r == NULL){
|
if(r == NULL){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
long int* dArr = strToInt(chArr);
|
long int* dArr = strToInt(chArr, counterPtr);
|
||||||
|
int heap = checkMinHeap(dArr, *counterPtr);
|
||||||
int heap = checkMinHeap(dArr, sizeof(&dArr)/sizeof(long));
|
|
||||||
if(heap == 1){
|
if(heap == 1){
|
||||||
printf("Je to taka kopa:\n");
|
printf("Je to taka kopa:\n");
|
||||||
print_tree(dArr);
|
print_tree(dArr, counterPtr);
|
||||||
|
}else {
|
||||||
|
printf("Nie je kopa.\n");
|
||||||
}
|
}
|
||||||
free(dArr);
|
free(dArr);
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user