Çözüldü C++ array length açıklar mısınız?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

RSK06

Hectopat
Katılım
29 Aralık 2020
Mesajlar
2.365
Çözümler
4
Daha fazla  
Cinsiyet
Erkek
[CODE lang="cpp" title="Anlatırmısınz ?"]bool test(int nums[], int arr_length)
{

for (int i = 0; i<= arr_length;i++) {
if (nums == 1 && nums[i + 1] == 2 && nums[i + 2] == 3)
return true;
}
return false;
}
int main ()
{
int arr_length;
int nums1[] = {1,1,2,3,1};
arr_length = sizeof(nums1) / sizeof(nums1[0]);
cout << test(nums1, arr_length) << endl;
}[/CODE]

Burada arr_length = sizeof(nums1) / sizeof(nums1[0]); bu kısmın ne işe yaradığını nedense anlayamadım bana düzgünce açıklayabilir misiniz?
 
Son düzenleyen: Moderatör:
Çözüm
Remove diye bir şey olduğunu bilmek ve kullanabilmek için düzgünce öğrenmeniz gerekiyor. Şu ana kadar gözlemlediğim kadarıyla hiç de öyle yapmıyorsunuz.
Remove tam o işi yapmıyor. string::erase ile birleşirse yapılabilir ama sizin durum direkt tamamını silmek olmadığı için biraz sıkıntı gibi aslında. O yüzden aşağıdaki gibi yapılabilir. Veya döngü ile bulunup sadece erase kullanılabilir.

Kod:
string test(string s, char c) {
    s.erase(remove(s.begin() + 1, s.end() - 1, c), s.end() - 1);
    return s;
}
Doğru anladıysam tam sayı tanımında bulunan "arr_length" yani dizi uzunluğu adında bir değişkenimiz var. Bu değişkenin yanı sıra içerisinde "1,1,2,3,1" sayılarını bulunduran bir dizimiz var. "arr_length = sizeof(nums1) / sizeof(nums1[0])" ise "arr_length" değerini "nums1"in içerisinde barındırdığı toplam eleman sayısını yani onun uzunluğunu yine nums1 değişkeninin sıfırıncı indisindeki sayının uzunluğuna böl demek. Buradan doğru anladıysam arr_length en sonda "5" değerine sahip olmalı.
Düzenleme: "sizeof" komutu örneğin elinizde bir dizi var ise o dizinin uzunluğunu verir yani bir değişken "9,7" içeriyorsa o değişkeni sizeof ile kullanırsanız programın anlayacağı şey "2"dir.
 
Son düzenleme:
Teşekkürler, sizi bulmuşken sorayım"Create a new string from a give string where a specified character have been removed except starting and ending position of the given string" Bunu nasıl yapabilirim ?
C tipi array boyutunu veriyor. Neden öyle yapılıyor, çünkü C tipi array'ler fonksiyonlara sadece pointer olarak gidiyor, bu yüzden tanımlandıkları scope dışında boyutlarına bakılamıyor.
Google'a baktım remove() diye bir şey varmış fakat nasıl kullanacağım bilmiyorum.
 
Remove diye bir şey olduğunu bilmek ve kullanabilmek için düzgünce öğrenmeniz gerekiyor. Şu ana kadar gözlemlediğim kadarıyla hiç de öyle yapmıyorsunuz.
Remove tam o işi yapmıyor. string::erase ile birleşirse yapılabilir ama sizin durum direkt tamamını silmek olmadığı için biraz sıkıntı gibi aslında. O yüzden aşağıdaki gibi yapılabilir. Veya döngü ile bulunup sadece erase kullanılabilir.

Kod:
string test(string s, char c) {
    s.erase(remove(s.begin() + 1, s.end() - 1, c), s.end() - 1);
    return s;
}
 
Çözüm
Uyarı! Bu konu 5 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Geri
Yukarı