Ülküsüz
Hectopat
- Katılım
- 23 Şubat 2021
- Mesajlar
- 1.291
- Çözümler
- 1
Daha fazla
- Cinsiyet
- Erkek
Çoğu zaman çalışmıyor ama nadiren çalışıyor, sebebi nedir? Binary tree ile array karışımı bir şey yapmak istedim. Random sayı eklemeyince sorunsuz çalışıyor ancak döngü ile random olarak bir sürü sayı eklemek isteyince %10 ihtimalle çalışıyor. (Genel olarak 10 denememde bir çalıştı)
Genel olarak kod yazma önerilerine de açığım, isimlendirme vs, aklınıza ne gelirse.
Genel olarak kod yazma önerilerine de açığım, isimlendirme vs, aklınıza ne gelirse.
C:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void increaseArraySize(int *arr, int *size);
void binaryAddition(int *arr, int size, int value, int startIndex, int endIndex);
void addToArray(int *arr, int *size, int value);
int main() {
int size = 0;
int *array = (int *)calloc(size, sizeof(int));
// random sayilar uretip diziye ekliyorum
srand(time(NULL));
for(int i = 0; i < 100; i++) {
addToArray(array, &size, rand()%100);
printf("%d.%d\n", array[i], i); // kac adim oldugunu takip amacli yazdiriyorum
}
// normalde random yerine bunlar olacak
/*addToArray(array, &size, 1);
addToArray(array, &size, 5);
addToArray(array, &size, 7);
addToArray(array, &size, 2);
addToArray(array, &size, 1);
addToArray(array, &size, 10);
addToArray(array, &size, 6);
addToArray(array, &size, -6);
addToArray(array, &size, 68);
addToArray(array, &size, -56);
addToArray(array, &size, -1);
addToArray(array, &size, 55);
addToArray(array, &size, 74);
addToArray(array, &size, 12);
addToArray(array, &size, 51);
addToArray(array, &size, -10);
addToArray(array, &size, 68);
addToArray(array, &size, -64);
addToArray(array, &size, 678);
addToArray(array, &size, -16);*/
// dizideki elemanlari yazdiriyorum ancak bastakilerle eslesmiyor
for(int i = 0; i < size; i++) {
printf("%d ", array[i]);
}
scanf("%d", &size); // ekran kapanmasin diye koydum bunu
}
void increaseArraySize(int *arr, int *size) {
int newSize = (*size) + 1;
if((*size) == 0) {
arr = (int *)calloc(newSize, sizeof(int));
*size = newSize;
} else {
arr = (int *)realloc(arr, newSize * sizeof(int));
arr[*size] = 0;
*size = newSize;
}
}
void binaryAddition(int *arr, int size, int value, int startIndex, int endIndex) {
int middleIndex = (startIndex + endIndex) / 2;
if(startIndex == endIndex) {
if(value < arr[middleIndex]) {
int tmp1 = value;
int tmp2 = value;
for(int i = startIndex; i <= size; i++) {
tmp2 = arr[i];
arr[i] = tmp1;
tmp1 = tmp2;
}
} else {
int tmp1 = value;
int tmp2 = value;
for(int i = middleIndex+1; i <= size; i++) {
tmp2 = arr[i];
arr[i] = tmp1;
tmp1 = tmp2;
}
}
} else if (value < arr[middleIndex]) {
binaryAddition(arr, size, value, 0, middleIndex-1);
} else {
binaryAddition(arr, size, value, middleIndex+1, endIndex);
}
}
void addToArray(int *arr, int *size, int value) {
increaseArraySize(arr, size);
if((*size) == 1) {
arr[0] = value;
} else {
int oldSize = (*size) - 1;
binaryAddition(arr, oldSize, value, 0, oldSize-1);
}
}