C/C++ Reverse Array Elements from K to N C++ nasıl yapılır?

Fonksiyon kullanman yasak değildir. İşi senin yerine yapacak fonksiyonları kullanman yasaktır. Niye temel bir beceriyi yasaklasın hocan?
int main() {
int n ;
cin >> n ;
int array[n] ;
for (int f = 0 ; f <n ; ++f) {
cin >> array[f] ;
}
int k ;
cin >> k ;

for (int f = 0 ; f < n ; ++f) {
if (f >=k) {
int s = array[f] ;
array[f] = array[n-f-1] ;
array[n-f-1] = s ;
}
}
for (int f = 0 ; f < n ; ++f) {
cout <<array[f] << " " ;
}
cout << endl ;
}
Bu kod neden çalışmıyor?

Nerenin tescasesiymiş bu? C++ standartlarında olmayan yalnızca gcc tarafından extension olarak sağlanan bir özelliği kim testcasede kullanılmasını ister?
Hocam size yalan atacak değilim herhalde.
 
Daha oraya kadar gelmediğim için.
Oraya kadar gelmedim? Üniversitenin ilk yılında üçüncü haftadan falan itibaren fonksiyon konuşuyorduk biz.

Array oluşturmanın yolu da bu değil. Bir önceki konunda da söyledik sana. Vector kullanma, tamam, bunda sıkıntı yok. Dynamic array oluşturacaksan pointer ve bellek ayırma kullanman lazım. new & delete kullanman lazım yada. Çok saçma değil mi fonksiyon kullanmayı bilmeyen biri için böyle bir şey istenmesi?

Yada sabit boyutu olan bir sey oluşturacaksın, elinde max limiti olan bir array olacak. Ondan büyük input almayacak.


int n ;
cin >> n ;
int array[n] ;
Şunu görünce devamını okuyasim gelmiyor.
 
Dostum sen soruna yazılan cevapları okuyor musun ?

Yorum yazan iki arkadaş da bir önceki sorunuzda size aynı konu ile ilgili yardımcı olmuş, tek tek anlatmışlar sebebini. Ben tekrar yazdım kodunuzun daha baştan zaten çalışmasının mümkün olmadığını. Yani her şeyi geçtim fonksiyon kullanma, STL öğeleri kullanma sorun değil de yani yazılanları bir okusan zaten sorunun çözülecek. Zaman zaman foruma girip ne var ne yok diye bakıyorum, yeni başlayan, soruları olan arkadaşlara bir faydam dokunabilir mi diye ama yani gerçekten hayrete düşüyorum.
 
Oraya kadar gelmedim? Üniversitenin ilk yılında üçüncü haftadan falan itibaren fonksiyon konuşuyorduk biz.

Array oluşturmanın yolu da bu değil. Bir önceki konunda da söyledik sana. Vector kullanma, tamam, bunda sıkıntı yok. Dynamic array oluşturacaksan pointer ve bellek ayırma kullanman lazım. new & delete kullanman lazım yada. Çok saçma değil mi fonksiyon kullanmayı bilmeyen biri için böyle bir şey istenmesi?

Yada sabit boyutu olan bir sey oluşturacaksın, elinde max limiti olan bir array olacak. Ondan büyük input almayacak.



Şunu görünce devamını okuyasim gelmiyor.
8. sınıfım hocam.

Dostum sen soruna yazılan cevapları okuyor musun ?

Yorum yazan iki arkadaş da bir önceki sorunuzda size aynı konu ile ilgili yardımcı olmuş, tek tek anlatmışlar sebebini. Ben tekrar yazdım kodunuzun daha baştan zaten çalışmasının mümkün olmadığını. Yani her şeyi geçtim fonksiyon kullanma, STL öğeleri kullanma sorun değil de yani yazılanları bir okusan zaten sorunun çözülecek. Zaman zaman foruma girip ne var ne yok diye bakıyorum, yeni başlayan, soruları olan arkadaşlara bir faydam dokunabilir mi diye ama yani gerçekten hayrete düşüyorum.
Hocam anlamıyormusunuz?Yazdığımı okumadınız mı?Testcase ne diyorsa onu yapıyorum.
 
Senin yazdıklarını okuyoruz zaten, yazdıklarına istinaden cevaplar da veriyoruz. Herkes aynı cevabı veriyor zaten, kodundaki probleminin ne olduğunu herkes yazıyor. TheAny dostum daha hemen yukarıda açık bir şekilde de yazmış. Yazılanı anlamamış olabilirsin bu durumda bunu söyle daha detaylı bir şekilde açıklama yapalım.

Testcase dediğin nedir ? Sürekli aynı şeyi yazıyorsun ama dilin kuralı belli, testcasede yapıyorum diye bir durum söz konusu olamaz anlatmaya çalıştığımız şey bu. Detay verirsen yardımcı olalım, neyin doğru neyin yanlış olduğunu açıklayalım. Aksi taktirde belli ki anlaşamayacağız.
 
Senin yazdıklarını okuyoruz zaten, yazdıklarına istinaden cevaplar da veriyoruz. Herkes aynı cevabı veriyor zaten, kodundaki probleminin ne olduğunu herkes yazıyor. TheAny dostum daha hemen yukarıda açık bir şekilde de yazmış. Yazılanı anlamamış olabilirsin bu durumda bunu söyle daha detaylı bir şekilde açıklama yapalım.

Testcase dediğin nedir ? Sürekli aynı şeyi yazıyorsun ama dilin kuralı belli, testcasede yapıyorum diye bir durum söz konusu olamaz anlatmaya çalıştığımız şey bu. Detay verirsen yardımcı olalım, neyin doğru neyin yanlış olduğunu açıklayalım. Aksi taktirde belli ki anlaşamayacağız.
Tamam benim kodlarım yalnış inkar etmiyorum.Benim sorum kodu nasıl yazabilirim?

Senin yazdıklarını okuyoruz zaten, yazdıklarına istinaden cevaplar da veriyoruz. Herkes aynı cevabı veriyor zaten, kodundaki probleminin ne olduğunu herkes yazıyor. TheAny dostum daha hemen yukarıda açık bir şekilde de yazmış. Yazılanı anlamamış olabilirsin bu durumda bunu söyle daha detaylı bir şekilde açıklama yapalım.

Testcase dediğin nedir ? Sürekli aynı şeyi yazıyorsun ama dilin kuralı belli, testcasede yapıyorum diye bir durum söz konusu olamaz anlatmaya çalıştığımız şey bu. Detay verirsen yardımcı olalım, neyin doğru neyin yanlış olduğunu açıklayalım. Aksi taktirde belli ki anlaşamayacağız.
int main() {
int n ;
cin >> n ;
int array[n] ;
for (int f = 0 ; f <n ; ++f) {
cin >> array[f] ;
}
int k ;
cin >> k ;
for (int f = 0 ; f < n ; ++f) {
if (f >=k) {
int s = array[f] ;
array[f] = array[n-f-1] ;
array[n-f-1] = s ;
}
}
}
Kodun ilk kısmını geçin.İkinci for döngüsünde hatam nerede?
 
Son düzenleme:
Tamam benim kodlarım yalnış inkar etmiyorum.Benim sorum kodu nasıl yazabilirim?


int main() {
int n ;
cin >> n ;
int array[n] ;
for (int f = 0 ; f <n ; ++f) {
cin >> array[f] ;
}
int k ;
cin >> k ;
for (int f = 0 ; f < n ; ++f) {
if (f >=k) {
int s = array[f] ;
array[f] = array[n-f-1] ;
array[n-f-1] = s ;
}
}
}
Kodun ilk kısmını geçin.İkinci for döngüsünde hatam nerede?

Öğrenmeyi öğrenmeden bu işlere girme. Biz sana ne kadar yardımcı olsak da sen öğrenmedikten sonra gerisi boş. Ödevlerini de genelde buradakiler yapmış oluyor bir şeyleri bilmiyorum dediğin için. Ortaokul, lise olimpiyatlarında sorulan sorularda bile senin o öğrenmekten korktuğun kısımları soruyorlar. Fonksiyonları öğrenmedim diye bir bahane olmaz. Hele birkaç hafta sonra açtığın konuda bunu tekrar, inatla demen hiç olmaz.

İkincisi, sana inatla önceki konunda dinamik allokasyon yapman gerektiğini söyledim. Sen ise hala test case'lere göre yazdığını savunuyorsun, tıpkı önceki konundaki gibi. Test case'leri denemen için programının adam akıllı çalışması lazım. Programın adam akıllı çalışması için de bir şeyleri öğrenip doğrusuna göre programını düzeltmen lazım.

Üçüncüsü, "f++" ile "++f" farkını biliyor musun? Yani operatörler prefix ve postfix olarak kullanılınca ne olacağını? Aynı olduğunu mu düşünüyorsun?
 
Biraz daha sakin yaklaşabiliriz arkadaşlar çocuk heves etmiş öğrenmek istiyor. Tabi öğrenmeyi öğrenmesi önemli de.
Döngüyü kurduğunuz şekil, k ile n-1 arasındaki eleman sayısı çift olduğunda diziyi iki kez tersine çeviriyor. Bu, f >= k koşulunuzun, tersine çevirdiğiniz aralığın orta noktasına ulaştığınızda döngüyü durdurmamasından kaynaklanıyor. Ortadan sonra bir kez daha çeviriyorsunuz yani. Ve düzgün çevrilmemiş oluyor.


C++:
    for (int f = k, j = n - 1; f < j; ++f, --j)
    {
        int temp = array[f];
        array[f] = array[j];
        array[j] = temp;
    }

Bu şekilde döngüyü düzgün kurabilirsiniz.
 

Technopat Haberler

Yeni konular

Geri
Yukarı