Ruby

Neue Frage »

Auf diesen Beitrag antworten »
Kampfkuschler Ruby

Meine Frage:
Brauche dringend Hilfe bei den folgenden fragen. danke!!

1.)Schreiben Sie ein Ruby-Programm test_strings.rb, welches zwei Zeichenketten a und b vom Benutzer einliest. Das Programm soll danach prüfen, ob:

?beide Zeichenketten gleich lang sind,


?beide Zeichenketten identisch sind,


?beide Zeichenketten sich im letzten Buchstaben unterscheiden (gehen Sie davon aus, dass keine Zeichenkette leer ist) und


?beide Zeichenketten vom 2. bis 5. Buchstaben identisch sind (gehen Sie davon aus, dass beide Zeichenketten min. 5 Buchstaben lang sind).


Für jeden Test soll das Ergebnis in sinnvoller Form auf dem Bildschirm ausgegeben werden (z.B. im ersten Vergleich: a und b sind gleich lang: false).

2.)(a) Schreiben Sie ein Ruby-Programm quersumme.rb, das für eine ganze Zahl n?0 die Quersumme, also die Summe aller Ziffern berechnet. Die Zahl n soll dabei in der ersten Programmzeile der Variablen n zugewiesen werden.

Eine mögliche Lösung kann wie folgt aussehen: Zum Beispiel hat die Zahl 1986 die Quersumme 1+9+8+6=24 .
Um die einzelnen Ziffern herauszufinden, können Sie die Zahl wiederholt durch 10 dividieren und jeweils den Divisionsrest mit dem Modulo-Operator % bestimmen.
Beispiel: 1986 % 10 = 6 und 1986 / 10 = 198.

Implementieren Sie Ihren Algorithmus unter Verwendung einer while-Schleife.

(b) Geben Sie eine Variante an, die eine for-Schleife verwendet und dabei nicht mehr Durchläufe benötigt als Ihre erste Lösung.

3.)Palindrome sind Zeichenketten, die von vorne wie von hinten gelesen identisch sind. Zum Beispiel ist "rentner" ein Palindrom, während "frank" kein Palindrom ist (rückwärts: "knarf"). Ein einzelner Buchstabe und die leere Zeichenkette zählen ebenfalls als Palindrome. In dieser Aufgabe sollen verschiedene Funktionen zu Palindromen in einem Ruby-Programm palindrom.rb programmiert werden.

Achtung: Programmieren Sie in dieser Aufgabe so, dass in den Funktionen selbst keine Bildschirmausgaben mit puts und keine Benutzereingaben mit gets erfolgen! Solche Ein- und Ausgaben sollen nur im Hauptprogramm erfolgen!

(a) Definieren Sie in palindrom.rb eine Ruby-Funktion teste_palindrom(w). Diese Funktion soll einen booleschen Wert zurückgeben, der angibt, ob die Zeichenkette w ein Palindrom ist. Der Funktionsaufruf teste_palindrom("rentner") soll also beispielsweise zu true ausgewertet werden, der Aufruf teste_palindrom("frank") dagegen zu false.

(b) Definieren Sie in palindrom.rb eine weitere Ruby-Funktion erzeuge_palindrom(w), die aus einer Zeichenkette w ein Palindrom erzeugt und dieses zurückgibt. Dazu soll w in umgekehrter Reihenfolge an sich selbst angefügt werden. Sie können dazu die String-Methode reverse verwenden, die eine Zeichenkette umdreht. Der Funktionsaufruf erzeuge_palindrom("frank") soll also beispielsweise die Zeichenkette "frankknarf" zurückgeben.

(c) Schreiben Sie nun das Hauptprogramm in palindrom.rb. Es soll eine Zeichenkette (in Kleinbuchstaben) vom Benutzer einlesen und mit der Funktion teste_palindrom überprüfen, ob die Zeichenkette ein Palindrom ist. Das Ergebnis soll als Satz in der folgenden Form auf dem Bildschirm ausgegeben werden:

?rentner ist ein Palindrom. wenn ein Palindrom, hier zum Beispiel rentner, eingegeben wurden


?frank ist kein Palindrom! wenn kein Palindrom, hier zum Beispiel frank, eingegeben wurde


Im Fall, dass kein Palindrom eingeben wurde, soll zusätzlich mit der Funktion erzeuge_palindrom ein Palindrom aus der Eingabe erzeugt werden und auf dem Bildschirm ausgegeben werden. Für die Eingabe frank soll man also beispielsweise die folgende zusätzliche Ausgabe erhalten:
?Aber frankknarf ist ein Palindrom.

(d) Warum würde Ihre Funktion teste_palindrom die eingegebene Zeichenkette nicht mehr als Palindrom erkennen, wenn Sie nach der Eingabe den Methodenaufruf chop() weglassen? Erläutern Sie!


Meine Ideen:
Ich habe leider nur sehr wenig Ahnung von Informatik, brauche aber dringend die Lösung für die Aufgaben, damit ich weiß, wie ich sie in Zukunft lösen kann.
im Internet und Büchern konnte ich nur wenige Lösungsansätze finden, bin wirklich verzweifelt. ich wäre wahnsinnig dankbar, wenn mir jemand den Lösungsweg geben kann. danke!!
 
Auf diesen Beitrag antworten »
eulerscheZahl

Zitat:
im Internet und Büchern konnte ich nur wenige Lösungsansätze finden

Habe auch noch nie etwas mit Ruby gemacht, das Prüfen auf die gleiche Wortlänge hat 5 Minuten gedauert.
code:
1:
2:
3:
4:
5:
puts "1. Wort eingeben"
wort1 = gets.chomp
puts "2. Wort eingeben"
wort2 = gets.chomp
puts wort1.length == wort2.length

Wenn du nach den richtigen Begriffen suchst, wirst du fündig.

Beispiel: beide Zeichenketten identisch sind Suche in google nach ruby string compare
beide Zeichenketten sich im letzten Buchstaben unterscheiden -> ruby last char
beide Zeichenketten vom 2. bis 5. Buchstaben identisch sind -> ruby substring

Das Suchwort while wurde dir ja schon vorgegeben.

Schau mal, wie weit du kommst, kannst dich bei Problemen gerne nochmal melden.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »