verwendung der nicht zugewiesenen variabel c

hi kann mir vlt einer bei diesem kleinen prob helfen
ich will ein prog schreiben das wie ein kleiner taschenrechner funktioniert. aber er gibt mir immer die gleiche fehlermeldung

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            

                int a, b, c;

                a = Convert.ToInt32(textBox1.Text);
                b = Convert.ToInt32(textBox2.Text);

                for (int i = 0; i < 999999999; i++)
                {
                    c = a + b;
                    
                }

                textBox3.Text = string.Format("c="+c);

würde mich über hilfe freuen
 
Hallo,
aber er gibt mir immer die gleiche fehlermeldung
Und die wäre? Hellsehen kann hier leider keiner.


Außerdem ist das kein C, sondern C#. Das sollte man auch schon dazusagen. Wie gesagt, die Board-Glaskugel ist leider immernoch in reparatur
 
ja sag ich doch es ist c#
und die fehlermeldung ist die überschrift des themas
hier nochmal:
Fehler: Verwendung der nicht zugewiesenen lokalen variablen "c"

Gruß Schnauf
 
Du müsstest vor der for-Schleife noch ein "c = 0" einfügen(Z.B. Zeile 27), da der Compiler sonst feststellt, dass c ohne Initialisierung verwendet worden sein könnte, da ein for-Block nicht immer ausgeführt wird(dieser in deinem Beispiel natürlich schon, aber das weiß der Compiler nicht. Wenn etwa die Bedingung i < 9999999 zu Beginn nicht erfüllt wäre, würde c in Zeile 34 uninitialisiert verwendet, daher der Fehler. Dass dies hier zwar nicht möglich ist, kann der Compiler jedoch nicht erkennen).
 
oh ja danke klappt
aber noch ne frage
wie muss ich das ganze denn schreiben wenn ich will das wenn zum beispiel a = 2 und b = 10 ist, das er dann 2+3+4+5+6+7+8+9+10 rechnet. Also auch noch die Zahlen die dazwischen stehen??
das ist noch zu hoch für mich ^^ aber ich wills halt mal versuchen.

Gruß Schnauf
 
Naive Variante:
Code:
c = 0;
for(int i = a; i <= b; i++) {
    c += i;
}
Unter der Voraussetzung, dass a <= b.

Verbesserte Variante unter Benutzung der Summenformel für die ersten n natürlichen Zahlen:
Code:
c = (b*(b+1) - a*(a-1))/2;
 
danke danke
nur ein kleiner fehler war noch drin
Code:
c = 1+(b * (b + 1) - a * (a + 1)) / 2;

man musste noch +1 rechnen
das hat gefehlt damit die richtige lösung herauskam
aber trotzdem danke

Gruß Schnauf
 
Eigentlich war der Fehler, dass es a*(a-1) heißen muss, da man sonst nur die Summe von a+1..b hätte. Dass die +1 bei deinem Beispiel funktioniert hat, ist Zufall. Ich hatte das dann noch gemerkt und editiert, aber anscheinend schon zu spät. :)
 
Zurück
Oben