Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Array erstellen, dass abwechselnd Nullen und Zahlen ausgibt

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
24.06.2017, 17:09 Uhr
Jan55



Hallo,

ich versuche gerade, ein Array der Dimension 20 zu erzeugen, wessen Arrayfelder an jeder zweiten Stelle Null und sonst aufsteigend mit den natürlichen Zahlen belegt sind, also 0,1,0,2,0,3,0,4, usw.

Mein Ansatz wäre bisher folgender:

C++:
int main()
{
int a[20],i,k;// Deklaration einer Variable und eines Arrays vom typ integer
     k=1;// initialisierung von k
     for (i=0; i<20; i++)    {
         a[i]=0;// Initialisierung der Elemente des Arrays a mit 0
  
         if (i%2==1)// nur ungerade Arrays sollen Zahlenwerte annehmen
{
     a[i]=k;
     k=k+1;
cout <<a[i]<<endl;// Ausgabe der Zahlen
     }
     else{ cout <<"0"<<endl;// sonst 0 anzeigen
    
     }
     return 0;
     }  



Ist der Ansatz überhaupt grundsätzlich richtig? Also dass man mit dem Modulo-Operator arbeitet, um nur ungerade Array-Elemente auszugeben.

Denn man fängt ja mit 0 an, also 0,1,0,2,0,3
und wenn die Null am Anfang das nullte Array Element wäre, dann wären die natürlichen Zahlen immer an den ungeraden Array-Feldern, und die restlichen Felder wollte ich über die else-Anweisung auf Null setzen.

Ich würde mich über eure Hilfe freuen!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.06.2017, 16:29 Uhr
Hans
Library Walker
(Operator)


Hi,

zunächst einmal was zur Sprache, bzw. Ausdrucksweise:

Zitat:
ich versuche gerade, ein Array der Dimension 20 zu erzeugen

Nein, dass versuchst Du nicht. Du benutzt ein Array der Dimension 1 (eins) mit 20 Elementen. Ein Array der Dimension 20 bedeutet nämlich, dass Du 20 Indices brauchst, um auf ein Element zugreifen zu können. Also:

C++:
//                                      1                             2  
//           1  2  3  4  5  6  7  8  9  0  1  2  3  4  5  6  7  8  9  0
   int Array[2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2][2];


Das wäre ein 20-dimensionales Array mit 2 Elementen in jeder Dimension. Ich bin mir ziemlich sicher, dass Du sowas nicht willst. - Abgesehen davon, wie sinnvoll diese Konstruktion jetzt überhaupt ist, stellt sich noch die Frage, wie man beim Benutzen den Durchblick behalten will?
Also Merke: Die Dimension eines Arrays gibt an, wieviele Indices man braucht, um auf die Elemente zuzugreifen. Was Du hier als Dimension bezeichnet hast, ist jedoch die Anzahl der Elemente eines Arrays.


Zitat:
an jeder zweiten Stelle Null und sonst aufsteigend mit den natürlichen Zahlen belegt

bedeutet: 1, 0, 2, 0, 3, 0, 4, 0, 5, 0 ... - denn Du musst ja mit 0 (Null) anfangen zu zählen. Dadurch ergibt es sich leider, dass a[1] das zweite Element des Arrays ist, während das erste Element a[0] ist. - Aber der Fehler kommt immer wieder mal vor, damit bist Du also nicht allein.
Eindeutiger wäre, wenn Du sagst, dass Du alle ungeraden Positionen mit Null belegt haben willst und alle geraden Positionen mit den natürlichen Zahlen in aufsteigender Reihenfolge, beginnend bei 1. - Das ist nämilch auch dass, was Dein Code macht.

Damit wären wir beim Ansatz.

Zitat:
Ist der Ansatz überhaupt grundsätzlich richtig? Also dass man mit dem Modulo-Operator arbeitet,

Wenn Du beim bearbeiten nur auf bestimmte Elemente zugreifen willst, bzw. bestimmte Elemente des Arrays eine gesonderte Behandlung erhalten sollen, so wie Du es hier machst, dann ist der Ansatz richtig.

Dann noch zu den "Feldern": Feld ist der deutschsprachige Ausdruck für Array. Wenn man in einigen Büchern was über Felder liesst, sind Arrays gemeint. Da ist dann oftmals von "ein- oder mehrdimensionalen Feldern" die Rede, gemeint sind aber Arrays. Was Du hier mit Feldern bezeichnest, sind die einzelnen Elemente des Arrays.

*/
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: