xknufflx Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 Hallo! Ich habe folgende Aufgabe bekommen: Aufgabe: Deklariere ein Array, das 20 Elemente vom Typ int enthält. Fülle das Array so, dass die Elemente mit geradem Index den Wert 1 enthalten und die mit ungeradem Index den Wert 2. Diese soll ich in Quellcode im C++ schreiben und ich weiß jetz nich genau, wie ich da vorgehen soll.. Ich hab schon mal angefangen: int Elemente[20]; Elemente[index] = Kann mir jemand sagen, ob das soweit richtig ist und wie ich weiter vorgehen müsste? Danke! Gruß Carina Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 das is schonmal ein kleiner Anfang, ja Ich geb Dir mal ein paar Stichworte und Du schreibst dann den Rest. Gerade/Ungerade kann man mittels Modulo herausfinden. Das ist einer der Operatoren bei einer Integer-Division. Das ganze verpackst Du dann in einer kleinen if-Sequenz und die wiederum in einer Schleife zum Beispiel for... Fertig. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 Wenn Du die fertige Lösung hier postest, dann schnipp ich Dir noch ein paar Specials rein, die Deinen Lehrer bestimmt gefallen werden. Vorausgesetzt Du hast es nicht bereits dann schon selbst drin. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xknufflx Geschrieben 5. Februar 2009 Autor Teilen Geschrieben 5. Februar 2009 Also ich hab's jetzt mal probiert zu lösen, ist aber gut möglich, dass ich bisschen Müll geschrieben hab^^ Hab mit dem Programmieren erst angefangen #include <iostream> using namespace std; int main() { /* Aufgabe: Deklariere ein Array, das 20 Elemente vom Typ int enthält. Fülle das Array so, dass die Elemente mit geradem Index den Wert 1 enthalten und die mit ungeradem Index den Wert 2. */ int Elemente[20]; for(int Index = 0, Index <=19; Index++) if (Index % 2 == 0) { ("1"); } else { ("2"); } char c; cin >> c; } Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 ("1"); Was soll das denn sein? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hexagon Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 Also ich hab's jetzt mal probiert zu lösen, ist aber gut möglich, dass ich bisschen Müll geschrieben hab Schaut doch schon ganz brauchbar aus. Nur das hier: Elemente[index] = ... sollte noch mit rein. Achja: int und char sollte man auch nicht unbedingt durcheinander würfeln. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T3D Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 Ist die Syntax in c++ nicht auch " for() {} "? Wenn ja hast du Klammern vergessen. Noch ne andere Frage, wofür hast du die Eingabe da drin? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xknufflx Geschrieben 5. Februar 2009 Autor Teilen Geschrieben 5. Februar 2009 Ist die Syntax in c++ nicht auch " for() {} "? Wenn ja hast du Klammern vergessen. Noch ne andere Frage, wofür hast du die Eingabe da drin? hast Recht.. die Eingabe is unnötig.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 @knuffl: Das ist absolut kein Müll, das is doch fast perfekt. In der for-schleife ist ein Komma drin, das darf da nicht hin, das muss ein Semikolon sein. Wie Hexagon schon sagte, musst Du noch die Zuweisung ergänzen, so dass dann tatsächlich auch im Array am Index was drin steht. Ein Special für Deinen Lehrer wäre zum Beispiel: Anstelle von: if (Index % 2 == 0) Elemente[Index] = 1; else Elemente[Index] = 2; Kannst Du auch: Elemente[Index] = (Index % 2 == 0) ? 1 : 2; benutzen. Hier ist das if-else einfach inline. Ein weiteres Schmankerl wäre, wenn Du anstatt der for-Schleife eine while-Schleife nimmst: int Index = 20; while ( Index-- ) ... Bei heutigen Compilern macht das zwar wenig aus und es füllt das Array von hinten, dafür gehts nen Tick schneller Aber bitte treibe solche inline und kryptischen "Codeverbesserungen" nicht zuweit, da es so im Team schwerer wird Code des Anderen zu lesen. @Hexagone: ich vermute der char ist nur fürs cin gedacht. @T3D: da der for-schleife nur eine if-else-sequenz folgt ist das absolut ok. Die Eingabe ist dafür, dass die cmd-Nox sich nicht sofort schliesst. Cleveres Mädel. Andere hätten jetzt schon wieder nen Thread aufgemacht: "Programm schliesst sich von alleine, bitte helfen" Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
xknufflx Geschrieben 5. Februar 2009 Autor Teilen Geschrieben 5. Februar 2009 @knuffl: Das ist absolut kein Müll, das is doch fast perfekt. In der for-schleife ist ein Komma drin, das darf da nicht hin, das muss ein Semikolon sein. Wie Hexagon schon sagte, musst Du noch die Zuweisung ergänzen, so dass dann tatsächlich auch im Array am Index was drin steht. Ein Special für Deinen Lehrer wäre zum Beispiel: Anstelle von: if (Index % 2 == 0) Elemente[Index] = 1; else Elemente[Index] = 2; Kannst Du auch: Elemente[Index] = (Index % 2 == 0) ? 1 : 2; benutzen. Hier ist das if-else einfach inline. Ein weiteres Schmankerl wäre, wenn Du anstatt der for-Schleife eine while-Schleife nimmst: int Index = 20; while ( Index-- ) ... Bei heutigen Compilern macht das zwar wenig aus und es füllt das Array von hinten, dafür gehts nen Tick schneller Aber bitte treibe solche inline und kryptischen "Codeverbesserungen" nicht zuweit, da es so im Team schwerer wird Code des Anderen zu lesen. @Hexagone: ich vermute der char ist nur fürs cin gedacht. @T3D: da der for-schleife nur eine if-else-sequenz folgt ist das absolut ok. Die Eingabe ist dafür, dass die cmd-Nox sich nicht sofort schliesst. Cleveres Mädel. Andere hätten jetzt schon wieder nen Thread aufgemacht: "Programm schliesst sich von alleine, bitte helfen" vielen Dank für die Tipps!! :) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
T3D Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 @T3D: da der for-schleife nur eine if-else-sequenz folgt ist das absolut ok. Die Eingabe ist dafür, dass die cmd-Nox sich nicht sofort schliesst. Cleveres Mädel. Andere hätten jetzt schon wieder nen Thread aufgemacht: "Programm schliesst sich von alleine, bitte helfen" ahjo stimmt vielleicht hatte mich auch nur die eingabe verwirrt Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Bubble Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 Gerade/Ungerade kann man mittels Modulo herausfinden. Kann man. Man kann aber auch anders auf grade/ungrade testen. Das Beste ist jedoch, dass solch ein Test, egal wie, bei der beschriebenen Aufgabenstellung völlig überflüssig ist. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 5. Februar 2009 Teilen Geschrieben 5. Februar 2009 Kann man. Man kann aber auch anders auf grade/ungrade testen. Aber dann sind doch gar keine coolen "Spezials" drin Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TDM Geschrieben 6. Februar 2009 Teilen Geschrieben 6. Februar 2009 Ist die Syntax in c++ nicht auch " for() {} "? Wenn ja hast du Klammern vergessen. Nein. Ohne Klammern wird die erste nachfolgende Anweisung ausgeführt und das ist die If-Else-Struktur. [Edit] Ok, VaNaTiC hats schon erwähnt... Ist noch früh am Morgen... :hells: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 6. Februar 2009 Teilen Geschrieben 6. Februar 2009 Kann man. Man kann aber auch anders auf grade/ungrade testen. Schreibs halt gleich dazu wie das konkret geht, denn ehrlich gesagt, ich hab das noch nie anders als mit mod gemacht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 6. Februar 2009 Teilen Geschrieben 6. Februar 2009 Schreibs halt gleich dazu wie das konkret geht, denn ehrlich gesagt, ich hab das noch nie anders als mit mod gemacht.Man kann das mit Bitoperationen machen. Es gibt sehr viele Lösungen zu dieser Aufgabe. Man kommt auch komplett ohne Schleife aus. Das dürfte die einfachste Lösung sein: int Elemente[20] = {1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2}; Ein anderes Beispiel: int Elemente[20]; Elemente[0]=Elemente[2]=Elemente[4]=Elemente[6]= Elemente[8]=Elemente[10]=Elemente[12]=Elemente[14]= Elemente[16]=Elemente[18]=1; Elemente[1]=Elemente[3]=Elemente[5]=Elemente[7]= Elemente[9]=Elemente[11]=Elemente[13]=Elemente[15]= Elemente[17]=Elemente[19]=2;[/code] Und noch eins: [code]#include <algorithm> int generator() { static int x = 2; x = 3-x; return x; } int main() { int Elemente[20]; std::generate( Elemente, Elemente + 20, generator ); } Vermutlich soll beim Lösen der Aufgabe aber eine bestimmte, vorher besprochene Technik benutzt werden. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 6. Februar 2009 Teilen Geschrieben 6. Februar 2009 die mit generator() ist mal geil, da wäre ich so nicht drauf gekommen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.