Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: C# und .NET ::  OutOfRange Fehler     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Neuling#
Unregistrierter




Beitrag Neuling# Unregistrierter 04:49:08 04.09.2017   Titel:   OutOfRange Fehler            Zitieren

Hallo,
ich bin relativ neu in C# und habe das Problem das ich bei meiner Methode "Calc" immer ein OutOfRange Fehler kriege. Könnte mir jemand helfen oder erklären wie ich das umgehen kann?

C#:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
using System;
using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 
namespace Test1
{
    class Program
    {
        static void GetEquation(uint numberEquation, ref double[,] equationArrayNumbers)
        {
            string stringBuffer = ""; //Gleichung zwischenspeichern
 
            int mainCounter = 0;
 
            string[] stringCache;
 
            for (uint firstIntegerCounter = 0; firstIntegerCounter != numberEquation; firstIntegerCounter++) //Einlesen der Gleichungen
            {
                Console.Write("Geben sie eine Gleichung ein (geordnet mit Nullen): "); //Erfragen der Gleichung
                stringBuffer = Console.ReadLine(); //Abfragen der Gleichung
 
                Console.WriteLine("Gleichung wird verarbeitet...");
 
                stringBuffer = stringBuffer.ToUpper();
 
                stringBuffer = stringBuffer.Replace(" ", String.Empty);
 
                stringBuffer = stringBuffer.Replace("-", "+-");
 
                stringCache = stringBuffer.Split(new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '+', '/', '*', '=' });
 
                foreach (string foreachString in stringCache)
                {
                    if (foreachString != "")
                    {
                        equationArrayNumbers[firstIntegerCounter, mainCounter] = Convert.ToDouble(foreachString);
                        ++mainCounter;
                    }
                }
 
                mainCounter = 0;
                Console.WriteLine(); //Neue Abfrage
            }
        }
               
        static void ShowArrayDouble(uint maxRow, uint maxColumn, double[,] doubleArray, bool mode)
            {
                if (mode == true)
                {
                    Console.Clear();
                }
                else
                {
                    Console.WriteLine();
                }
 
                for (uint columnCounter = 0; columnCounter != maxColumn; columnCounter++)
                {
                    for (int rowCounter = 0; rowCounter != maxRow - 1; rowCounter++)
                    {
                        if (doubleArray[columnCounter, rowCounter] < 1)
                        {
                            Console.Write("FFF ");
                        }
                        else if (doubleArray[columnCounter, rowCounter] < 10)
                        {
                            Console.Write(doubleArray[columnCounter, rowCounter] + "FF ");
                        }
                        else if (doubleArray[columnCounter, rowCounter] < 100)
                        {
                            Console.Write(doubleArray[columnCounter, rowCounter] + "F ");
                        }
                        else
                        {
                            Console.Write(doubleArray[columnCounter, rowCounter] + " ");
                        }
                    }
 
                    Console.WriteLine();
                }
            }
 
        static void Calc(ref double[,] doubleArray, uint numberEquation)
        {
            for (int first = 0; 1 < numberEquation - 1; first++)
            {
                for (int second = 0; first + 1 < numberEquation; second++)
                {
                    doubleArray[first, second] = doubleArray[first, second] / doubleArray[first, first];
 
                    for (int third = 0; third < numberEquation; third++)
                    {
                        doubleArray[second, third] = doubleArray[second, third] - doubleArray[second, first] * doubleArray[first, third];
                    }
                }
            }
        }
 
        static void Main(string[] args)
        {
            //Variablen erstellen
            uint numberEquation = 0; //Anzahl an Gleichungen
            uint numberCharacters = 0; //Anzahl an Buchstaben
 
            //Hauptcode
            Console.Write("Wie viele Gleichungen sollen eingegeben werden?: "); //Erfragen der Anzahl der Gleichungen
            numberEquation = Convert.ToUInt32(Console.ReadLine()); //Abfragen und konvertieren
 
            double[,] equationArray = new double[numberEquation, numberCharacters]; //Array um die Zahlen zu speichern
 
            GetEquation(numberEquation, ref equationArray); //Abfrage der Gleichungen starten
            Console.WriteLine(); //Abfrage beendet
 
            ShowArrayDouble(27, numberEquation, equationArray, false);
 
            Calc(ref equationArray, numberEquation);
 
            ShowArrayDouble(27, numberEquation, equationArray, false);
 
            //Ende
            while (true) { } //Fenster aufhalten
        }
       
    }
}
inflames2k
Mitglied

Benutzerprofil
Anmeldungsdatum: 02.06.2009
Beiträge: 1514
Beitrag inflames2k Mitglied 08:31:42 04.09.2017   Titel:              Zitieren

Hallo,

welchen Wert hat denn "numberCharacters" wenn du das Array initialisierst? Das sollte dein Problem lösen, wenn du das korrigierst.
KN4CK3R
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.05.2007
Beiträge: 762
Beitrag KN4CK3R Mitglied 13:19:09 04.09.2017   Titel:              Zitieren

Ein Problem sollten auch die kaputten Schleifen in der Calc Methode sein...

_________________
https://www.oldschoolhack.me
Neuling#
Unregistrierter




Beitrag Neuling# Unregistrierter 16:45:42 04.09.2017   Titel:              Zitieren

Ich hab die Schleifen jetzt verändert:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       static void Calc(ref double[,] doubleArray, uint numberEquation)
        {
            for (uint first = 0; first != numberEquation - 1; first++)
            {
                for (uint second = 0; first + 1 != numberEquation; second++)
                {
                    doubleArray[second, first] = doubleArray[second, first] / doubleArray[first, first];
 
                    for (uint third = 0; first != numberEquation; third++)
                    {
                        doubleArray[second, third] = doubleArray[second, third] - doubleArray[second, first] * doubleArray[first, third];
                    }
                }
            }
        }

und "numberCharacters" wird mit je nach Gleichung initialisierst. Bei
Code:
4x+9y-7w=20
z.B. würde sie mit 4 (da 4 Zahlen) initialisierst werden. Hab den Code gestern aus versehen raus geschnitten. Trotzdem kriege ich einen Fehler in der 3. for-Schleife und "third" ist auch größer als "numberEquation".
KN4CK3R
Mitglied

Benutzerprofil
Anmeldungsdatum: 23.05.2007
Beiträge: 762
Beitrag KN4CK3R Mitglied 18:26:54 04.09.2017   Titel:              Zitieren

Schleife zwei und drei sind immer noch Endlosschleifen.

_________________
https://www.oldschoolhack.me
C++ Forum :: C# und .NET ::  OutOfRange Fehler   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.