[C-Sprachalgorithmus] Blockbewegung

Implementierter Blockbewegungsalgorithmus in C-Sprache

Lernumgebung

Referenzmaterial

Neuestes Algorithmus-Wörterbuch in C-Sprache (geschrieben von Haruhiko Okumura / 1991, erste Ausgabe der Firma für technische Überprüfung: 249 Seiten)

Übersicht über den Blockbewegungsalgorithmus

Es ist ein Algorithmus, der Blöcke in einer Zeichenfolge ersetzt.

(Folgendes wird aus dem Referenzmaterial zitiert)

Das Verschieben von Block 12345 nach Block abcd in einem Editorbefehl, z. B. Text xyz12345abcdefg, führt zu xyzabcd12345efg. Diese Operation besteht auch darin, 12345 und abcd zu tauschen oder 12345abcd um 4 Zeichen nach rechts zu drehen.

Dieses Mal haben wir einen Prozess implementiert, um die Wörter "PROGRAMMIERPRINZIPIEN", die aus zwei Wörtern "PROGRAMMIEREN" und "PRINZIPIEN" bestehen, durch "PRINZIPIENPROGRAMMIEREN" zu ersetzen.

Quellcode

moveblock.c


/*Block verschieben Block verschieben*/

#include <stdio.h>
#include <stdlib.h>

char sentense[] = "PROGRAMMINGPRINCIPLES";

int main(void) {
	printf("%s\n",sentense);
	//Rufen Sie die String-Verschiebungsfunktion auf
	rotate(0, 10, 20);	
	printf("%s\n", sentense);

	return EXIT_SUCCESS;
}

//String-Inversionsfunktion
//Wenn die Zeichenfolgenlänge ungerade ist, wird nur das mittlere Zeichen nicht invertiert
void reverse(int i,int j){
	//Tmp-Variable zum Ersetzen
	int t;
	while(i < j){
		t = sentense[i];
		sentense[i] = sentense[j];
		sentense[j] = t;
		
		//Verschieben Sie die Position der zu verarbeitenden Zeichenfolge nacheinander
		i++;
		j--;
		
		printf("%s i=%d j=%d (reverse)\n", sentense, i, j);
	}
}

//String-Bewegungsfunktion
//Rufen Sie die Umkehrfunktion auf
//Erstes Argument: Startposition des linken Teils der zu ersetzenden Zeichenfolge
//Zweites Argument: Startposition des rechten Teils der zu ersetzenden Zeichenfolge
//Drittes Argument: Die gesamte zu ersetzende Zeichenfolge
void rotate(int left, int mid, int right){
	reverse(left, mid);
	reverse(mid + 1,right);
	reverse(left, right);
}

Ausführungsergebnis

Das Ergebnis war wie erwartet.

result.txt(Irgendein)


Success #stdin #stdout 0s 4488KB

PROGRAMMINGPRINCIPLES
GROGRAMMINPPRINCIPLES i=1 j=9 (reverse)
GNOGRAMMIRPPRINCIPLES i=2 j=8 (reverse)
GNIGRAMMORPPRINCIPLES i=3 j=7 (reverse)
GNIMRAMGORPPRINCIPLES i=4 j=6 (reverse)
GNIMMARGORPPRINCIPLES i=5 j=5 (reverse)
GNIMMARGORPSRINCIPLEP i=12 j=19 (reverse)
GNIMMARGORPSEINCIPLRP i=13 j=18 (reverse)
GNIMMARGORPSELNCIPIRP i=14 j=17 (reverse)
GNIMMARGORPSELPCINIRP i=15 j=16 (reverse)
GNIMMARGORPSELPICNIRP i=16 j=15 (reverse)
PNIMMARGORPSELPICNIRG i=1 j=19 (reverse)
PRIMMARGORPSELPICNING i=2 j=18 (reverse)
PRIMMARGORPSELPICNING i=3 j=17 (reverse)
PRINMARGORPSELPICMING i=4 j=16 (reverse)
PRINCARGORPSELPIMMING i=5 j=15 (reverse)
PRINCIRGORPSELPAMMING i=6 j=14 (reverse)
PRINCIPGORPSELRAMMING i=7 j=13 (reverse)
PRINCIPLORPSEGRAMMING i=8 j=12 (reverse)
PRINCIPLERPSOGRAMMING i=9 j=11 (reverse)
PRINCIPLESPROGRAMMING i=10 j=10 (reverse)
PRINCIPLESPROGRAMMING

Impressionen

Recommended Posts

[C-Sprachalgorithmus] Blockbewegung
[C-Sprachalgorithmus] Endianness
[C-Sprachalgorithmus] binärer Suchbaum
[C-Sprachalgorithmus] Postfix-Notation (oder umgekehrte polnische Notation)
C-Sprache ALDS1_3_B Warteschlange
Einbettung der Maschinensprache in die Sprache C.
C-Sprache ALDS1_4_B Binäre Suche
Heap-Sortierung in C-Sprache
[C Sprache] readdir () vs readdir_r ()
C-Sprache ALDS1_4_A Lineare Suche
Modultest mit mehreren Instanzen in C-Sprache
Funktionszeiger und objdump ~ C language ~
Realisieren Sie die Schnittstellenklasse in der Sprache C.
Schreiben der C-Sprache mit Sympy (Metaprogrammierung)
Programmiersprache für hohe Energieeffizienz C.
Einführung in Protobuf-c (C-Sprache ⇔ Python)
[Sprachverarbeitung 100 Schläge 2020] Kapitel 1: Vorbereitende Bewegung
100 Sprachverarbeitungsklopfen: Kapitel 1 Vorbereitungsbewegung
100 Sprachverarbeitung Knock 2020 Kapitel 1: Vorbereitende Bewegung
C Sprache 8 Königin Problem lösen 3 Muster
Segfo mit 16 Zeichen in C-Sprache
Rufen Sie die c-Sprache von Python aus auf (python.h)