Hallo Leute,
Ich habe eine Frage . Wie kann ich den slicing operator verwenden um meine Aufgabe lösen zu können?
Soll ich beliebge Sätze auswählen und dann den operator nutzen?
nacher muss ich dann die beiden Sätze voneinander trennen. Kann jemand mir bitte helfen?
DANKE!
Welche zwei Sätze verbergen sich hinter dem folgenden Buchstabensalat?
"ASuesi nd eomd eAru ghea latu sn idcehmt SSieninn.."
slicing operator verwenden
Was machen die Parameter, die man beim Slicing angeben kann?
Und wie könnte man die verwenden um aus dem Buchstabensalat einen sinnvollen Satz zu holen?
Wenn man den Satz in Code-Tags postet, behält er auch die korrekten Leerzeichen
Und wie könnte man die verwenden um aus dem Buchstabensalat einen sinnvollen Satz zu holen?
Wenn man den Satz in Code-Tags postet, behält er auch die korrekten Leerzeichen
Code: Alles auswählen
"ASuesi nd eomd eAru ghea latu sn idcehmt SSieninn.."
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
In Racket (Lisp/Scheme-Dialekt) könnte eine Lösung so aussehen:
Code: Alles auswählen
#!/usr/bin/env racket
#lang racket
(define *sentences* "ASuesi nd eomd eAru ghea latu sn idcehmt SSieninn..")
(define (get-sentence s n)
(list->string (sequence->list (in-string s n #f 2))))
(for ([i (in-range 2)])
(displayln (get-sentence *sentences* i)))
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Auch machbar auf verschiedene Arten mit Zeigern in C (den Ansatz etwas versteckt, damit es nicht zu einfach ist):
Code: Alles auswählen
#include <stdio.h>
int main(void)
{
char *string, *s;
string = "ASuesi nd eomd eAru ghea latu sn idcehmt SSieninn..";
for (s = string; *s; ++s)
putchar(*s++);
putchar('\n');
while (*++string)
putchar(*string++);
putchar('\n');
return 0;
}
- __blackjack__
- User
- Beiträge: 14047
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@snafu: Da würde ich aber dringend vorher prüfen das die Länge der Zeichenkette gerade ist, sonst kann das ins Auge gehen. Und leer darf die Zeichenkette auch nicht sein.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Hier mit ausgegliederter Entschlüsselung und etwas robuster implementiert. Das Entschlüsseln wird nun in einem Durchlauf erledigt.
Code: Alles auswählen
#include <stdio.h>
#define MAX_SIZE (1 << 8)
#define TEXT "ASuesi nd eomd eAru ghea latu sn idcehmt SSieninn.."
void decrypt(char *string, char *a, char *b)
{
do {
*a = *string++;
*b = *string++;
} while (*a++ && *b++);
}
int main(void)
{
char a[MAX_SIZE], b[MAX_SIZE];
decrypt(TEXT, a, b);
printf("%s\n%s\n", a, b);
return 0;
}
@snafu: das berücksichtigt immer noch nicht, dass die Länge des Strings gerade ist.
Code: Alles auswählen
void decrypt(char *string, char *a, char *b)
{
while((*a++ = *string++) && (*b++ = *string++));
*a = *b = '\0';
}