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

Biraz daha sakin yaklaşabiliriz arkadaşlar çocuk heves etmiş öğrenmek istiyor. Tabi öğrenmeyi öğrenmesi önemli de.

Testcaseler'e göre yazıyorum deyip doğru mu yazdım diye soruyor. Test case ne biliyor mu acaba? Öğretmeye çalışıyorlar ne yapması gerektiğini bilmem kaç konudur. İlk konusu değil, ikinci konusu değil.

23 Eylül'den beri bir şeylerle uğraşıyor ama hala fonksiyonlara gelmemiş. 60 günde fonksiyon kullanmaya başlamamış yani daha.

Bu konudaki array tanımlama uyarısı bir önceki konusunda da @Vavien. tarafından yapılmıştı.
Ondan bir önceki konusunda da @Dynamics tarafından yapılmıştı.

Üçüncü konusu bu aynı hatayı yapmaya devam ettiği.
 
Olsun ya ben elimden geldiğince yardım etmeye çalışayım demiştim. İlerleyişini çok düşünmeye gerek yok sınav senesi olabilir az zamanı vardır. Tabi kurallara daha uygun gitmek iyi olabilir.
 
Ya da sabit boyutu olan bir şey oluşturacaksın, elinde Max limiti olan bir array olacak. Ondan büyük input almayacak.

Şunu görünce devamını okuyasım gelmiyor.

Algoritmik problemler sunan sitelerde (derleyici olarak GCC'yi destekleyen) boyut olarak bir değişkenin kullanıldığı diziler kullanmak bu tür mecralarda çok hor görülen bir durum değil, hatta alışılagelmiş bir durum. Bahsettiğim şey özellikle "rekabetçi programlama" (competitive programming) için daha geçerli çünkü kodu hızlı yazıp diğer yarışmacıların önüne geçmek önemli (LeetCode, Codeforces vb.). Hâl böyle olunca bazı uygun görülmeyen pratikler tercih edilebiliyor. Öne geçmek uğruna nasıl kodlar yazıldığını görseniz...

Ki benim de tercih ettiğim bir yöntem oluyor açıkçası, bu tür problemleri çözerken değişken boyutlu dizi tanımlamak. Vektör tanımlamaktan daha kolay geliyor çünkü, dizi boyutu parametresini okuduktan hemen sonra hızlıca dizimi tanımlamak hoşuma gidiyor; sizin okuma isteğinizi kaçıran kısımdan bahsediyorum.

Bu yazdıklarımdan dediklerinize katılmadığım anlaşılmasın. Doğru pratiğin altını çiziyor olmanız çok hoş.
 
Böyle soru soran siteler input'u kendi alıp size "çağrılan fonksiyonu yaz" diyorlar.
Hepsi öyle yapmıyor, birkaç örnek sitenin sistemleri şu şekilde:
  • LeetCode'da sistem her zaman sizin dediğiniz gibi işliyor. Ayrıca LeetCode'daki derleyici sanırsam Clang ve bundan dolayı değişken boyutlu diziye derleyici hata veriyor.
  • HackerRank'te tercihe bağlı, problemi hazırlayan kişi karar verebiliyor.
  • Codeforces'ta böyle bir şey yok. Kodu tamamen siz yazmak durumundasınız.
  • CodeChef'in sistemi de Codeforces'a benziyor.
 
Ben neden öğrenmemek için ısrar edeyim ki?Sadece kodlar benim anlayabileceğim seviyede olsun istemiştim.Yoksa neden buraya konu açaym ki?Dediğiniz gibi yapmak isteseydim ChatGPT nin kodlarını kullanır ödevi geçerdim.

Hocam 2 ay boyunca durmadan devam ettiğimi nereden biliyorsunuz?Ayrıca açtığım konuların çoğunda cevabı kendim buluyorum.Konuların başlıklarına dikkat ederseniz farklı konular olduğunu anlayabilirsiniz.

Olsun ya ben elimden geldiğince yardım etmeye çalışayım demiştim. İlerleyişini çok düşünmeye gerek yok sınav senesi olabilir az zamanı vardır. Tabi kurallara daha uygun gitmek iyi olabilir.
Teşekkürler.

Bu kodu 2 for şeklinde nasıl göstere biliriz peki?
 
Son düzenleme:
.
VLA kullanmak hiçbir durumda mantıklı değil, örneğin kullanıcı varsayılan stack boyutundan fazla olacak şekilde bu yöntemle bir dizi oluşturursa yazdığın algoritma kusursuz dahi olsa stack overflow sebebiyle program patlayacak. Tecrübesiz biri için sorunun ne olduğunu bulmak hiç de kolay olmayacak.
 

Bahsettiğiniz konuda haklısınız ancak mesajda değindiğim sitelerin stack boyut limiti "yeterince büyük" ayarlanıyor ve böylece bahsettiğiniz hatayla büyük ihtimalle karşılaşmıyorsunuz. Örneğin ben Codeforces'ta uzunca bir süre soru çözdüm, hiç karşılaşmadığımı söyleyebilirim. Belki unuttuğum 1-2 tane durum vardır. Ha, sıra kodumu kendi bilgisayarımda büyük girdilerle denemeye gelince sıkıntı çekiyordum mesela, stack limitinin yetersizliğinden dolayı. O zaman vektör kullanma ihtiyacı duyuyordum.

VLA kullanmak hiçbir durumda mantıklı değil.

Eliniz alışınca kullanasınız geliyor, inanın ki. Bazen konfor (el alışkanlığı), mantığın önüne geçiyor. Örneğin, uzun uzun vector<vector<...>> yazmaya üşendiğimde tercih ettiğim bir yöntem oluyor. Mantıklı olduğunu savunmuyorum, sadece bazı durumlarda rahatlık sağladığını belirtiyorum.
 
Sizin kodunuz mantığını anladım ama 2 döngü şeklinde nasıl yaza bileceğimi çözemedim.Şimdi gördüm de sanırım f = k değil de f = k -1 olsa daha doğru olmaz mı ?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…