Autor Beitrag
itchaas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 08.10.12 11:09 
Hallo,

wir lernen gerade den Umgang mit Array und jetzt stehe ich grad mal an.
Ist es möglich eine Variable im Array abzulegen und wenn ja wie?

Die Funktion an sich sollte so stimmen habe Sie getestet mit einem WriteLine nun
wäre es aber noch super das Ganze im Array abzulegen und diese von dort aus auszugeben.

Mein Code:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
static void Main(string[] args)
        {
            Console.WriteLine("Bitte geben Sie Zahl 0 der F-Folge ein: ");
            int zahl0 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Bitte geben Sie Zahl 1 der F-Folge ein: ");
            int zahl1 = Convert.ToInt32(Console.ReadLine());

                        
            for (int n = 0; n < 30; n++)

            {
                int zahl3 = zahl0 + zahl1;
                int[] fibo = new int[n];
                fibo = zahl3;

                zahl0 = zahl1;
                zahl1 = zahl3;
            }
        }

Danke für Eure Hilfe.

Moderiert von user profile iconTh69: Titel geändert.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 08.10.12 11:30 
Zitat:
ausblenden C#-Quelltext
1:
fibo = zahl3;					


Du versucht dem Array die Zahl zuzuweisen. Da wird dir der Compiler auf die Finger klopfen.
Du möchtest eigentlich die Zahl einer Position im Array zuweisen. Du mußt bei der Zuweisung also auch die Position mit angeben.

Also fibo[Position] = zahl3; . Als Position bietet sich deine Laufvariable n an. Das Array fibo solltest du auch vor der Schleife definieren sonst bekommst du bei jedem Schleifendurchlauf ein neues und deine im vorherigen Durchlauf zugewiesen Werte sind wieder weg.

Zum ausgeben kannst du dann über das Array iterieren (for bzw. foreach Konstrukt) und die einzelnen Positionen des Arraya ausgeben.
itchaas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 08.10.12 12:11 
danke. hast mir schon mal sehr geholfen!

Die Aufgabenstellung war 30 Folgeglieder und die Ersten beiden einlesen.
Ausgegeben werden sollen alle.

Habe das Ganze jetzt so abgeändert:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
static void Main(string[] args)
        {
            Console.WriteLine("Bitte geben Sie Zahl 0 der F-Folge ein: ");
            int zahl0 = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Bitte geben Sie Zahl 1 der F-Folge ein: ");
            int zahl1 = Convert.ToInt32(Console.ReadLine());

            int[] fibo = new int[32];
            fibo[0] = zahl0;
            fibo[1] = zahl1;
                        
            for (int n = 2; n < 30; n++)

            {
                int zahl3 = zahl0 + zahl1;
                fibo[n] = zahl3;

                zahl0 = zahl1;
                zahl1 = zahl3;

            }

            foreach (int m in fibo) Console.WriteLine(m);
        }


Jetzt passt aber die Ausgabe noch nicht ganz zum Schluss schreibt er 0, 0.

Die ersten Glieder passen: 0 1 1 2

Habe ich zuviel Platz im Array geschaffen?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 08.10.12 12:17 
Zitat:
ausblenden C#-Quelltext
1:
for (int n = 2; n < 30; n++)					


Du brichst zu früh ab. Es sind jetzt 32 Elemente nicht mehr nur 30.
itchaas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 08.10.12 17:51 
Danke!
itchaas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 08.10.12 20:35 
Hab das Ganze jetzt noch einwenig umgearbeitet und habe eine kleine Zusatzfrage
wenn ich die Index Position der Array Daten mitausgeben möchte wie geht das am einfachsten?

z.b: Array[0]=27;

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
 static void Main(string[] args)
        {
            int[] fibo = new int[32];

            Console.WriteLine("Bitte geben Sie Zahl 0 der F-Folge ein: ");
            fibo[0] = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Bitte geben Sie Zahl 1 der F-Folge ein: ");
            fibo[1] = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine();
                     
                        
            for (int n = 2; n < 32; n++)

            {
                fibo[n] = fibo[n-1]+fibo[n-2];
                
            }

            foreach (int m in fibo) Console.WriteLine(m);
        }


Danke für die Hilfe.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mo 08.10.12 20:59 
Einfach kann foreach sondern wieder eine for Schleife nehmen dann hast du deinen Index.
itchaas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 21



BeitragVerfasst: Mo 08.10.12 21:07 
ok. Dachte mir vielleicht kann man das auch irgendwie noch schneller machen....

so hab ich's jetzt:

ausblenden C#-Quelltext
1:
2:
3:
4:
for (int m = 0; m<fibo.Length; m++)
            {
                Console.WriteLine("Index"+m+"  "+fibo[m]);
            }


Aber wenn das bereits der schnellste Weg ist dann ist es auch ok...

Danke.