Arkadaşlar C Bilenler Yardımcı Olabilir mi?

bipolar

80+ Bronze
Katılım
28 Aralık 2020
Mesajlar
937
Reaksiyon skoru
343
Şimdi biz sıfırdan bir algoritma yazıyoruz diyelim. Bu algoritmanın içinde dinamik bellek oluşturarak önceden dizinin boyutunu belirtmeden ben o anda ne kadar istersem bellekte o kadar yer kullandırtarak. Yani kullanıcıya dizi boyutu girdirtmeden diziyi nasıl boyutlandırabilirim? Yardımcı olur musunuz? Olmuyorsa eğer böyle bir şey onu da açıklarsanız sevinirim.
 
realloc kullanarak diziyi büyütüp küçültebilirsin elindeki eleman sayısına göre
 
bunlarda sorun yok fakat ben öncesinde hiç dizi bpyutu girmek istemiyorum dizinin o iç boyut yazdığımız kısım (örn: str[ ]) seklinde olacak
C de böyle bi kullanım yok
Diziyi 1 boyutun da başlatıp realloc ile genişletebilirsin
 
Dostum chatgpt ye sormanı tavsiye ederim.
 
Malloc ile anca yer ayırırsın. Önce bi hangi tipte olacaksa o şekilde bi pointer tanımlarsın. Mesela int *arr; sonra buna göre ne kadarlık yer istiyosan malloc yaparsın veya calloc.
Mesajlar otomatik olarak birleştirildi:

Veya şöyle olabilir birer Node tanımlarsın ve queue yazarsın veya başka bir şey artık o sana kalmış. Node lar kullanarak birbirine bağlarsın da bu biraz üst düzey olur yani. En iyisi mallocla yer acıp 1 tane mesela sonra her eleman geldikçe reallocla 1 eleman daha büyük alanı
Mesajlar otomatik olarak birleştirildi:

Not: malloc kullandıktan sonra eğer free lemezsen o alan bellekte kalır bilgisayarı kapatana kadar. En son o alanı free etmen gerekir
 
Şimdi biz sıfırdan bir algoritma yazıyoruz diyelim. Bu algoritmanın içinde dinamik bellek oluşturarak önceden dizinin boyutunu belirtmeden ben o anda ne kadar istersem bellekte o kadar yer kullandırtarak. Yani kullanıcıya dizi boyutu girdirtmeden diziyi nasıl boyutlandırabilirim? Yardımcı olur musunuz? Olmuyorsa eğer böyle bir şey onu da açıklarsanız sevinirim.

c# da şu şekilde yapılabilir bir örnek hazırlayayım direk buradan yazdığım için yazım hataları olabilir fakat mantığını anlayacaksındır.

string[] arabalar = new String[0]

while (true) {
Console.Write("Araba Ekle (1) Araba Listele (2)");
string enter = Console.ReadLine();
if (enter == "1") {
string[] arabalarConteiner = arabalar[];
arabalar[] = new String(arabalarConeiner.Length + 1)
for (i = 0; i < arabalar.Length; i++) {
arabalar = arabalarConteiner;
}
Console.Write("Eklenecek Araba");
string car = Console.ReadLine();
arabalar[arabalar.Length - 1] = car
}
}

Bu şekilde devam edilebilir dediğim gibi ufak tefek yanlışlar olabilir ide yok şu anda işte olduğum için ancak mantık anlaşılabilir
 
Geri
Top