Löschen Sie jedes Vorkommen eines vom Benutzer erfragten Buchstabens im Array (also z. B. bei Eingabe von 'a' alle 'a' entfernen)?

...komplette Frage anzeigen

3 Antworten

Bei so was würde ich zwei Zeiger verwenden - einen auf den aktuell zu überprüfenden Buchstaben und einen auf die aktuelle Einfügestelle.

Muster

int ii(0); int jj(0);
do {
if (array[ii] != zeichenzumloeschen)
{
    array[jj] = array[ii];
    ii++;
}
ii++;
}
while (0 != array[jj]);

Lege ein zweites Array an und wenn du einen Buchstaben entfernen willst, kopierst du das erste Array Zeichen für Zeichen in das zweite Array. Dann, wenn du auf den Buchstaben triffst, kopierst du ihn aber nicht sondern machst mit dem nächsten weiter.

Im zweiten Array steht dann dein erstes Array ohne den Buchstaben und du hast "keine" Bibliotheksfunktionen verwendet.

FlascheSocke 27.11.2016, 00:46

das ist die Frage. Wie stelle ich das am besten an?

0
FlascheSocke 27.11.2016, 01:07
@Etter

ja schon klar. Nur versteh ich die Ausführung noch nicht

0
Etter 27.11.2016, 01:21
@FlascheSocke

Wo genau haste denn Probleme (also mit welchem Denkschritt)?

0
priesterlein 27.11.2016, 01:32
@FlascheSocke

Beispiel C mit einigen unsortieren Elementen und nein, es ist nicht drin, wie du das array1 füllst:

#define arraylength 100
int index1=0;
int index2 = 0;
char entfernbarerBuchstabe;
char array1[arraylength], array2[arraylength];
for(; index1 < arraylength; index1++)
{
if(array1[index1] != entfernbarerBuchstabe)
array2[index2++] = array1[index1];
}

1

Was möchtest Du wissen?