C++ ile a değeri yerine n nasıl eklenir?

Sydatolo

Decapat
Katılım
30 Nisan 2021
Mesajlar
208
Makaleler
1
Yer
Dünya
Daha fazla  
Cinsiyet
Erkek
Meslek
Öğrenci
Bir string değerinde, mesela; "SyDatoloo" stringindeki değerin a değerini nasıl a'yı silip yerine n ekleyebilirim?
 
Algoritma yazıp yapacaksın. strlen fonksiyonu ile stringin uzunluğunu alıp 0'dan uzunluğa kadar gidecek bir for döngüsü oluştur. Döngü içerisinde gerekli işlemleri yap.
 
Algoritma yazıp yapacaksın. Strlen fonksiyonu ile stringin uzunluğunu alıp 0'dan uzunluğa kadar gidecek bir for döngüsü oluştur. Döngü içerisinde gerekli işlemleri yap.

Hocam ben de o döngü içerisindeki işlemleri soruyorum.
 
Son düzenleyen: Moderatör:
hocam bende o döngü içerisindeki işlemleri soruyorum.
Yaptığım örneği şöyle bırakayım. Mantığını anlatmak gerekirse, önce metni, değiştirilecek olan karakteri ve yerine gelecek olan karakteri kullanıcıdan alıyoruz. Sonra da döngüyü dediğim gibi uzunluğa kadar gidecek şekilde ayarlıyoruz. Döngü içerisinde ise i'nin denk geldiği karakterin değiştirilecek karakter olup olmadığına bakıyoruz. Eğer değiştirilecek karakter ise karakterin yerine yeni karakteri eşitliyoruz.

1622233535037.png


C++:
#include <iostream>
#include <cstring>

int main() {
    std::cout << "Enter the text" << std::endl;

    char str[1000];
    fgets(str, 1000, stdin);

    char replacement_char;
    std::cout << "Enter the char to replace" << std::endl;
    std::cin >> replacement_char;

    char new_char;
    std::cout << "Enter the new char" << std::endl;
    std::cin >> new_char;

    size_t length = strlen(str);
    for (int i = 0; i<length; ++i) {
        if (str[i] == replacement_char) {
            str[i] = new_char;
        }
    }

    std::cout << str;
}
 
Kod:
#include <iostream>

using namespace std;

void aToN(string& str) {
    for (auto& c : str) {
        if (c == 'a') {
            c = 'n';
        }
    }
}

// C type
string aToNC(string str) {
    for (auto& c : str) {
        if (c == 'a') {
            c = 'n';
        }
    }
    
    return str;
}

int main() {
    string str{ "SyDatoloo" };
    
    aToN(str);
    
    cout << str << endl;
    cout << aToNC("SyDatoloo") << endl;
    
    return 0;
}

C++ programlıyorsunuz, C değil.
C tipi dediğim C tipi string veya (const) char* şeklinde de çalışabilir. C++ string'i alır ama referans olarak almadığı için pek mantıklı değildir.
For döngüsünde tüm elemanlarına (bizim durumumuzda char'lara) referans ile erişiyoruz. Eriştiğimiz eleman a ise n yapıyoruz.
 
Kod:
std::string replace(const std::string& in, const std::string& from, const std::string& to)
{
    std::string out = in;

    std::size_t pos = 0;
    while ((pos = out.find(from, pos)) != std::string::npos)
    {
        out.replace(pos, from.length(), to);
        pos += to.length();
    }

    return out;
}

std::string oldstr = "SyDatoloo";
std::string newstr = replace(oldstr, "a", "n");

std::cout << newstr; // > SyDntoloo
 

Geri
Yukarı