Seele Mesaj tarihi: Mart 20, 2013 Mesaj tarihi: Mart 20, 2013 Evet C++ ögrenmeye basladim. bu baslik altinda kafanizi agritmayi düsünüyorum diyelim ki elimde struct var su sekilde struct stack_a { int size, last, *values; } ilk sorum memory olayi. test stackt_a; test = ( stack_t *) calloc (1 , sizeof( stack_t )); buraya kada ok. simdi ikinci pointer icin yer acalim test->values = (int*) realloc (test->values , 1 * sizeof(int)); test->values[1] = 154214; ilk veri Ok. ikinci bir veri giricem ve memory büyütmem lazim. test->values = (int*) realloc (test->values , 2 * sizeof(int)); test->values[2] = 554411; test->values[1] ne yazikki silindi/üzerine yazildi. realloc yerine malloc mu kullanmam mi gerekli? yoksa bastan belli bir memory ayirmam mi gerekli. hem memory büyültüp hemde verilerin kaybolmasini nasil engellerim? ikinci sorum söyle test->values[1] = 8; test->values[2] = 7; test->values[3] = 3; test->values[4] = 9; test->values[5] = 4; simdi kendime bir function yazip bana en kücük int degerini geri vermesini istiyorum . en iyi nasil yapabilirim ilk aklima gelen for kullanarak int degeeri bulmak returnlemek. ücüncü sorum : test->values[1] = 8; test->values[2] = 7; test->values[3] = 3; test->values[4] = 9; test->values[5] = 4; en kücük degeri silmek diger veriler kaliyor. fikri olan ?
Kojiroh Mesaj tarihi: Mart 20, 2013 Mesaj tarihi: Mart 20, 2013 Indexlerin 0'dan başlaması gerekmiyo mu?
Fly Mesaj tarihi: Mart 20, 2013 Mesaj tarihi: Mart 20, 2013 gcc disinda compiler kullanmadim senelerdir, yaniliyor olabilirim de deklarasyonundan itibaren hata var, en azindan alisildik c++ kodu gibi gozukmuyor stack_a test; diye deklare ettik diyelim birincisi pointer (ve dolasiyila dinamik olarak allocate edilmesi gerektigi anlamini tasiyan) degil bu degisken, alloc callarini gerektiren bir sey yok ikincisi icindeki degerleri initialize etmiyorsun normal bir sekilde, sifirli da olabilir cop degerler de olabilir compiler dert yanmazsa stack_a test = (stack_a){0,0,NULL}; veya class haline getirip constructor olustur, values'un allocationi da icinde olsun oyle NULL falan olacagna ana konu icinse, indexleri sifirdan baslatman gerekiyor ? o noktadan bir sonraki int size kadar gittigin yer yine programa ait oldugu icin segfault yememissin sadece duzeltip tekrar bak, diger sorduklarinda da ayni hata var sen c# java ikisinden birinde calisiyordun zaten indexler onlarda da tipik olarak 0'dan baslar, c++ icin 1'den basla diye biri mi yonlendirdi ?
fizban Mesaj tarihi: Mart 20, 2013 Mesaj tarihi: Mart 20, 2013 birinci soru icin yukaridaki cevaplar. realloc silmez yani. ikinci soru icin http://www.cplusplus.com/reference/algorithm/sort/ ucuncu soru icin tersten sort et, realloc et.
Seele Mesaj tarihi: Mart 20, 2013 Konuyu açan Mesaj tarihi: Mart 20, 2013 class kullanamam yasak olay modular programming. malloc kullaninca sorun ortadan kalkiyor. struct kesin pointer olmak zorunda. ama ordada tam anlami ile dynamic bir memory olmuyor. sort uzun hikaye belki daha hizli bir yolu vardir diye düsündüm.
zgrw Mesaj tarihi: Mart 22, 2013 Mesaj tarihi: Mart 22, 2013 ikinci sorun en basit haliyle linear search, 3.su de sort etmek
Eralpb Mesaj tarihi: Mart 22, 2013 Mesaj tarihi: Mart 22, 2013 Malloc kullaninca silinmemesi imkansiz gibi geliyor, sen bir memory request ediyosun OS'ten sana orayi veriyor sonra onu sisteme geri vermeden(delete ile) yeni bir yer request ediyorsun o ilkini kapsayamaz baska yere koymak zorunda. Degerleri yeni yere otomatik kopyaliyo desem ... o da olmaz. Niye boyle bisey implement etsinler.
Seele Mesaj tarihi: Mart 22, 2013 Konuyu açan Mesaj tarihi: Mart 22, 2013 zgrw said: ikinci sorun en basit haliyle linear search, 3.su de sort etmek sort dedim bende yok prof olmaz dedi. downheap 3. soru icin. ayrica bellek ayiracakmisiz kafamiza göre gerekirse realloc. aslinda cok kolay haftasonu anlatirim.
Deacon Mesaj tarihi: Mart 22, 2013 Mesaj tarihi: Mart 22, 2013 2 ve 3'u birlikte yapsana mis gibi. Min-heap yaratirsin iste theta(N) complexity ile hem min'i return edersin hem de sonrasinda silersin. Search'e, sort'a falan gerek yok.
EVIL_DeaD Mesaj tarihi: Mart 22, 2013 Mesaj tarihi: Mart 22, 2013 #include using namespace std; int main() { cout << "Hello World"; return 0; }
Seele Mesaj tarihi: Nisan 7, 2013 Konuyu açan Mesaj tarihi: Nisan 7, 2013 simdi bir C sorum var bir headerimiz var typedef struct { iEntry_t *first; iEntry_t *last; } iDB_t; void loadDB(iDB_t *db, char *dbn, char *path); simdi mainimizde de bir iDB yaratiyoruz. iDB_t *dbtmp = malloc(sizeof(iDB_t )); sonra bunu load fonksiyorunu yolluyoruz. bu fonksiyorun baska bir C file'da. load(dbtmp, NULL, NULL); dbtmp load fonksiyonu icinde OK yani veri var. ama main geri gelince bos. pointerda nerde hata yapiyorum?
Öne çıkan mesajlar