Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

das is schonmal ein kleiner Anfang, ja :D

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. :D

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. :D

  • Autor

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 :rolleyes:

#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;

}

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. :D

@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 :D

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" :D

  • Autor
@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 :D

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" :D

vielen Dank für die Tipps!! :):)

@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" :D

ahjo stimmt ;)

vielleicht hatte mich auch nur die eingabe verwirrt :D

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.

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:

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.