xknufflx Geschrieben 5. Februar 2009 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
VaNaTiC Geschrieben 5. Februar 2009 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
VaNaTiC Geschrieben 5. Februar 2009 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
xknufflx Geschrieben 5. Februar 2009 Autor 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
Guybrush Threepwood Geschrieben 5. Februar 2009 Geschrieben 5. Februar 2009 ("1"); Was soll das denn sein? Zitieren
Hexagon Geschrieben 5. Februar 2009 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
T3D Geschrieben 5. Februar 2009 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
xknufflx Geschrieben 5. Februar 2009 Autor 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
VaNaTiC Geschrieben 5. Februar 2009 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
xknufflx Geschrieben 5. Februar 2009 Autor 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
T3D Geschrieben 5. Februar 2009 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
Bubble Geschrieben 5. Februar 2009 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
Guybrush Threepwood Geschrieben 5. Februar 2009 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
TDM Geschrieben 6. Februar 2009 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
VaNaTiC Geschrieben 6. Februar 2009 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
Klotzkopp Geschrieben 6. Februar 2009 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
VaNaTiC Geschrieben 6. Februar 2009 Geschrieben 6. Februar 2009 die mit generator() ist mal geil, da wäre ich so nicht drauf gekommen. Zitieren
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.