Frage zu Program, das Leerstellen in einem Text loescht.

waterhog

Mitglied
Ich sollte dieses Program schreiben so dass es, wenn man einen Text eingibt die Leerstellen auf eine Leerstelle jeweils reduziert. Dies funktioniert richtig. Dann war die zweite Aufgabe, dass man auch Leerstellen am Anfang des eingegebenen Satzes hat. Dies habe ich mit

diesem Code bewirkt, hier fettgedruckt,
Index = 1;
while(Line[Index] == ' ')
Index = Index + 1;

while(Index<=Length(Line))


Wie kann ich das Program nun nochmals so aendern, dass auch Freistellen am Ende erlaubt sind?

Hier der Code fuer das Program soweit:


int main(int argc, char* argv[])
{
AnsiString Line;
int Index;
WriteStringCr("Enter your text.It must not finish with a space character.\n");
Line = ReadString();
Index = 1;
while(Line[Index] == ' ')
Index = Index + 1;
while(Index<=Length(Line))
{
if(Line[Index]!=' ')
{
WriteChar(Line[Index]);
Index = Index + 1;
}
else
{
WriteString(' ');
while(Line[Index]==' ')
Index = Index + 1;
}
}
getchar();
return 0;
 
Hallo,

das Problem kannst du ganz einfach mit einem Trick lösen. Ich hab leider keinen C-Compiler installiert, aber ich hoffe das dieses Programm funkionieren wird.
Es könnte sein, dass du folgendes verbessern musst:

statt: if (Index == Lenght(Line) - 1)

if (Index == Lenght(Line))

bzw statt: if (Index != Lenght(Line) - 1)

if (Index != Lenght(Line))

Musst du halt mal ausprobieren.

Hier ist der Code:

int main(int argc, char* argv[])
{
AnsiString Line;
int Index;

WriteStringCr("Enter your text.It must not finish with a space character.\n");
Line = ReadString();
Index = 1;

// Leerzeichen am Anfang des Strings
while(Line[Index] == ' ')
Index = Index + 1;

while(Index <= Length(Line))
{
if(Line[Index] != ' ')
{
WriteChar(Line[Index]);
Index = Index + 1;
}
else
{
// Leerzeichen im und am Ende des Strings
int countBlank = 0;
while(Line[Index]==' ')
{
Index = Index + 1;
countBlank++;

// Falls Ende des Strings erreicht, schreibe die ganzen Leerzeichen,
// die du mit countBlank gezaehlt hast, in den Ausgabepuffer
if (Index == Lenght(Line) - 1)
{
for (int i=0; i <= countBlank; i++)
writeString(' ');
break; // oder return 0; dann brauchst du unten (nach dieser while-
// schleife) keine if-Überprüfung
}
}
if (Index != Lenght(Line) - 1)
writeString(' ');
}
}
return 0;
}



bis dann,

M. Basit
 
Sorry, wenn ich schon wieder damit nerve, aber könntet ihr bitte Code-Tags verwenden?
 

Anhänge

  • codetags.gif
    codetags.gif
    7,1 KB · Aufrufe: 35
Danke

Vielen Dank an alle, die sich in den letzten Tagen die Muehe gemacht haben mir zu helfen. Ich habe jetzt das Gefuehl es hat echt viel gebracht.

Ok, habe es jetzt auch mit den Code tags verstanden.

Danke fuer Eure Geduld,

bis bald
 
Zurück