Sly-One Mesaj tarihi: Nisan 27, 2007 Paylaş Mesaj tarihi: Nisan 27, 2007 evet, kafayı yiyip birilerini pataklamadan buraya yazayım belki çözer problemi birisi dedim. öncelikle amacı söyliyim, amaç std inputtan girilen (yada .txt ten alınan) sayıları, verilen bir operatöre göre dizip cout etmek. format şöyle olacak mesela .txt de : noop 4 34 57 21 54 önce komutu alıp, sonra integerları bir vektöre dizip vektörü komuta göre okutuyorum. 3 komut var, noop : etkisiz, sort : sort edilecek (problem burda), invert : tersten cout. herşey güzel iyi hoş, sort etmesi gereken fonksiyonlar çalışmıyor, sayılar noop komutu gibi dışarı çıkıyor. biri problemin hangi noktada olduğunu çözüp bu gece 12 ye kadar ödevi kafayı yemeden yollamama yardım ederse sevinirim. programda hata yok,çalışıyor ama sort fonksiyonun logicinde birşey var sanırım. buyrun ; [spo]#include #include #include using namespace std; void invert(vector v) { int i=v.size()-1; while(i > -1) { cout << v[*i] << " "; i--; } } void insert(vector v, int size, int value) { int i = size - 1; while (i >= 0 && v[*i] > value) { v[i + 1] = v[*i]; i--; } v[i + 1] = value; } void insertionsort(vector v, int size) { for (int i = 0; i < size; i = i + 1) insert(v, i, v[*i]); } void printvector(vector v) { for(int i=0 ; i< v.size(); i++) cout << v[*i] << " "; cout << endl; } int main() { string op; int a; vector v; cin >> op; while(cin >> a && !cin.eof()) { v.push_back(a); } if(op == "sort") { insertionsort(v, v.size()); printvector(v); } else { if( op == "noop") printvector(v); else { if(op == "invert") { invert(v); cout << endl; } else cout << "Unknown operation." << endl; } } system("PAUSE"); return 0; }[/spo] aslında bir problem daha war, cin >> a komutunun altına if (cin.fail()) kullanıp cout << "integer girin pls"; return 1; demem lazım ama bunu ekleyip integer yerine başka birşey girsem de sadece oraya kadar gelip kesiyor, hata mesajını vermiyor. hadi patiler, aslansınız kaplansınız biliyorum. penth denen fasulye çok yardım etti saolsun da bu noktayı aşamadık zaman yetmedi falan ben de dayanamıyorum artık cuma cuma. biri yardım ederse repe boğacağım kendisini. edit = parantez içindeki i ler yıldızsız normalde. [ Mesaj 27 Nisan 2007, Cuma - 21:28 tarihinde, Sly-One tarafından güncellenmiştir ] Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
cemad Mesaj tarihi: Nisan 27, 2007 Paylaş Mesaj tarihi: Nisan 27, 2007 çok detaylı bakamadım ama insertionsort içinde insert(v, i, v); burda 3. parametre int olması gerekli sen vector girmişsin Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sly-One Mesaj tarihi: Nisan 27, 2007 Konuyu açan Paylaş Mesaj tarihi: Nisan 27, 2007 hayır [ i] ler görünmedi italik yaptılar yazıyı :) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sly-One Mesaj tarihi: Nisan 27, 2007 Konuyu açan Paylaş Mesaj tarihi: Nisan 27, 2007 up! 2 saatim kaldı Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
LethE Mesaj tarihi: Nisan 27, 2007 Paylaş Mesaj tarihi: Nisan 27, 2007 while(cin >> a && !cin.eof()) { //hangi a hoca? değer nerde edit: tekrar baktım.. while condition içinde input almaya mı calısıyosun sen? insertionsort a bakıyorum i = 0 dan alıyor inserte yolluyor ..while i>0 gerekiyor insertte fakat başladığın değer -1 ve es geçildi. gözüme çarpan bu [ Mesaj 27 Nisan 2007, Cuma - 23:00 tarihinde, LethE tarafından güncellenmiştir ] Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sly-One Mesaj tarihi: Nisan 27, 2007 Konuyu açan Paylaş Mesaj tarihi: Nisan 27, 2007 2 satır yukarsında belirttiğim int a. while döngüsüne gelince ben de ilk o yanılgıya düştüm, ancak ilk i=0 ile döngüye girmiyor ama, v[0]=value atamasını gerçekleştiriyor yine de (yani v[0] ın değeri sabit kalıyor ilk döngüde). sorun orda değil. ek : evet while ile integerları tek tek a ya atayıp ordan vektöre alıyorum. program sorunsuz, tek sorun sort fonksiyonlarında oralara dikkat : / ben çözemedim hatayı walla. problem sort komutu ile bir değişiklik yapmıyor vektörü direk cout a veriyor olması. [ Mesaj 27 Nisan 2007, Cuma - 23:03 tarihinde, Sly-One tarafından güncellenmiştir ] Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sly-One Mesaj tarihi: Nisan 27, 2007 Konuyu açan Paylaş Mesaj tarihi: Nisan 27, 2007 yok mu yani burda bana yardım edecek adam : / Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 27, 2007 Paylaş Mesaj tarihi: Nisan 27, 2007 Algoritmada sorun yok gibi gözüküyor. C++ bilgim pek iyi değil. C++'da hiç vektor kullanmadım. Vektörü parametre olarak girdiğinde call by reference olarak değil de, call by value olarak çalışıyorsa sorun ordadır. Yaptığın değişiklikler fonksiyon içinde lokal bir kopyada yapılır, fonksiyon bitince kaybolur gider. Eğer öyleyse void döndürmek yerine değiştirdiğin vektörü döndürebilirsin yada pointer kullanarak call by reference yaparsın. [ Mesaj 27 Nisan 2007, Cuma - 23:25 tarihinde, Mirage tarafından güncellenmiştir ] Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 27, 2007 Paylaş Mesaj tarihi: Nisan 27, 2007 Şöyle dene bir de. Eğer sorun dediğim gibi call by value yapmandan kaynaklanıyosa bu şekilde çözülür. Ama dediğim gibi C++ ile aram pek iyi değil. Ve en ufak test etme şansım olmadan onlarca pointer değişiklikiği yapınca kesin bir şeyleri yamultmuşumdur. Kendin düzeltcen artık yanlışları. [spo]#include #include #include using namespace std; void invert(vector v) { int i=v.size()-1; while(i > -1) { cout << v[*i] << " "; i--; } } void insert(vector *v, int size, int value) { int i = size - 1; while (i >= 0 && *v[*i] > value) { *v[i + 1] = *v[*i]; i--; } *v[i + 1] = value; } void insertionsort(vector *v, int size) { for (int i = 0; i < size; i = i + 1) insert(v, i, *v[*i]); } void printvector(vector v) { for(int i=0 ; i< v.size(); i++) cout << v[*i] << " "; cout << endl; } int main() { string op; int a; vector *v; cin >> op; while(cin >> a && !cin.eof()) { v->push_back(a); } if(op == "sort") { insertionsort(v, v->size()); printvector(*v); } else { if( op == "noop") printvector(*v); else { if(op == "invert") { invert(*v); cout << endl; } else cout << "Unknown operation." << endl; } } system("PAUSE"); return 0; }[/spo] Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sly-One Mesaj tarihi: Nisan 28, 2007 Konuyu açan Paylaş Mesaj tarihi: Nisan 28, 2007 tebrik ediyorum ve teşekkür ediyorum. ama ben buraya yazamadım, hatanın dediğin yerden kaynaklandığını penth 1500 saat sonra farkederek uyardı beni, void functionlarda vektörü vector v şeklinde değil de vector &v şeklinde call by reference ile tanıtınca problem çözüldü. kısacası ödevi yetiştirdim 12 den önce hehe. saolun. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aquila Mesaj tarihi: Nisan 28, 2007 Paylaş Mesaj tarihi: Nisan 28, 2007 ben de tam onu soylemeye gelmistim. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 28, 2007 Paylaş Mesaj tarihi: Nisan 28, 2007 İyi bari. Olay array ve vector'ün parametre olarak gönderilme farkından kaynaklanıyor. Sanırsam algoritmayı sitenin birinden aşırmışsın, orda da vector yerine array kullanılmış. Çünkü bir fonksiyona array yolladığın zaman array'in başlangıç adresi yollanır. Yani otomatik olarak call be reference ile çağırılır. Eh, array'leri vector'le değiştirince böyle bir problem hortlamış. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Sly-One Mesaj tarihi: Nisan 28, 2007 Konuyu açan Paylaş Mesaj tarihi: Nisan 28, 2007 kendi başıma yazmaktan daha kolay geldi array i değiştirme fikri tabi ki ;) [ Mesaj 28 Nisan 2007, Cumartesi - 07:49 tarihinde, Sly-One tarafından güncellenmiştir ] Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
tunca Mesaj tarihi: Nisan 28, 2007 Paylaş Mesaj tarihi: Nisan 28, 2007 lol aqu Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Angelfire Mesaj tarihi: Nisan 28, 2007 Paylaş Mesaj tarihi: Nisan 28, 2007 :) benden tavsiye: aşırma sonucu senin değiştirmelerin ile ortaya çıkan kod ile uraştığın süreç içerisinde aynı kodu briaz araştırma ile 5 sefer yazabilirsin. Valla en azından bende böyle o nedenle 0 dan yazma taraftarıyım. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar