C++ :: Aufgabe #370

1 Lösung Lösung öffentlich

Ziffern durch Kleinbuchstaben ersetzen (right-shifting)

Anfänger - C++ von JKooP - 22.05.2021 um 16:57 Uhr
Gegeben ist ein String (Text) bestehend aus Kleinbuchstaben und den Ziffern 0 bis 9.
Die Buchstaben stehen an den geraden und die Ziffern an den ungeraden Stellen (zero-based).
Ziel soll es sein, jede Ziffer durch einen Buchstaben zu ersetzen, indem der vorangestellte Buchstabe
um den Wert der Ziffer gemäß Alphabet nach rechts verschoben wird (right-shifting).
Die Buchstaben bleiben dabei erhalten.
Bei der Erstellung des Ausgangs-Strings soll darauf geachtet werden, dass das Verschieben nicht über 'z' hinausgeht.

Beispiele:

s = "a1c1e1"
Lösung: "abcdef", denn
a >> 1 -> b
c >> 1 -> d
e >> 1 -> f

s = "a4b2c1d5"
Lösung: "aebdcddi", denn
a >> 4 -> e
b >> 2 -> d
c >> 1 -> d
d >> 5 -> i

Erstelle eine Methode/Funktion, die obige Aufgabenstellung umsetzt.
Wer möchte kann die Aufgabe dahingehend erweitern, dass über 'z' hinaus
verschoben wird und das Alphabet von vorne beginnt.

Viel Spaß

Lösungen:

1x
vote_ok
von JKooP (18080 Punkte) - 18.07.2021 um 16:10 Uhr
C++ 17
Quellcode ausblenden C-Code
#include <iostream>

std::string replace_digits(std::string s) {
	for (auto i = 1; i < s.size(); i += 2)
		s[i] = (char)(s[i - 1] + s[i] - '0');
	return s;
}

int main()
{
    std::cout << replace_digits("a4b2c1d5") << std::endl;
}