Hi, hab in meinem Objectiv-C Buch folgende Aufgabe (Leider ohne Lösung):
In der Datei /usr/share/dict/propernames Sind häufig vorkommende Eigennamen enthalten. Die Datei /usr/share/dict/words Enthält normale Wörter und häufig vorkommende Eigennamen. Schreiben Sie ein Programm, das auf dem obigen Programm basiert und häufig vorkommende Eigennamen findet, die auch normale Wörter sind. "Glen" Beispielsweise ist ein Männer Name, aber "glen" ist auch ein enges Tal. In den Worddateien sind Eigennamen groß geschrieben.
Wenn ein Computer Strings sortiert, stellt er normalerweise Großbuchstaben vor Kleinbuchstaben. Um einen Vergleich vorzunehmen, der die Groß- bzw. Kleinschreibung ignoriert, nehmen sie die Methode caseInsensitiveCompare.
Folgendes habe ich geschrieben:
Aber als Ausgabe kommt nur:
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
...
Das geht unendlich lang so weiter, bis ich auf Stopp drücke.
weiß jemand, was ich falsche gemacht habe?
Danke schon mal
LG
Dennis
PS: Noch eine Frage zu dieser stelle:
NSArray *names = [nameString componentsSeparatedByString
"\n"];
Das sternchen deutet ja auf einen Zeiger. Heißt das, dass in dem Array nur die Speicherorte gespeichert werden, und nicht die genauen werte? Hab ich das richtig verstanden?
In der Datei /usr/share/dict/propernames Sind häufig vorkommende Eigennamen enthalten. Die Datei /usr/share/dict/words Enthält normale Wörter und häufig vorkommende Eigennamen. Schreiben Sie ein Programm, das auf dem obigen Programm basiert und häufig vorkommende Eigennamen findet, die auch normale Wörter sind. "Glen" Beispielsweise ist ein Männer Name, aber "glen" ist auch ein enges Tal. In den Worddateien sind Eigennamen groß geschrieben.
Wenn ein Computer Strings sortiert, stellt er normalerweise Großbuchstaben vor Kleinbuchstaben. Um einen Vergleich vorzunehmen, der die Groß- bzw. Kleinschreibung ignoriert, nehmen sie die Methode caseInsensitiveCompare.
Folgendes habe ich geschrieben:
Code:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
//Liest Datei als großen String ein (mögliche Fehler werden ausgeblendet)
NSString *nameString = [NSString stringWithContentsOfFile:@"/usr/share/dict/words" encoding:NSUTF8StringEncoding error:NULL];
//Zerlegt Datei in ein Array mit String
NSArray *names = [nameString componentsSeparatedByString:@"\n"];
//Geht das Array einen String nach dem anderen durch
NSUInteger stringCount = [names count];
for (int i = 0; i < stringCount; i++) {
if (i == 0) {
continue;
} else {
int iMinusOne = i--;
NSString *oldName =[names objectAtIndex:iMinusOne];
NSString *newName = [names objectAtIndex:i];
if([newName caseInsensitiveCompare:oldName] == NSOrderedSame) {
NSLog(@"The following names are propernames AND words: %@ and %@", newName, oldName);
}
}
}
}
return 0;
}
Aber als Ausgabe kommt nur:
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
[Ein Datum oder so]The following names are propernames AND words: A and a
...
Das geht unendlich lang so weiter, bis ich auf Stopp drücke.
weiß jemand, was ich falsche gemacht habe?
Danke schon mal
LG
Dennis
PS: Noch eine Frage zu dieser stelle:
NSArray *names = [nameString componentsSeparatedByString

Das sternchen deutet ja auf einen Zeiger. Heißt das, dass in dem Array nur die Speicherorte gespeichert werden, und nicht die genauen werte? Hab ich das richtig verstanden?