Autor Beitrag
ilwaka
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 14:27 
Ich habe gestern Abend aus Langeweile mit dem Guide to C# angefangen und dann habe ich heute morgen
einen kleinen Taschenrechner programmiert.
Ihr könnt euch den ja mal angucken und was dazu sagen.
Welche C# Tutorials könnt ihr mir noch empfehlen.
Und ich wollte einem Freund das schicken aber der konnte das nicht starten.Er hatte sich extra .net Framework geholt.Was kann schief gelaufen sein.


P.S. Quellcode liegt in der .rar datei
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 31.12.08 15:00 
Hallo und :welcome: im Forum,

ich werde ihn mir einmal anschauen. Aber zunächst einmal zu deiner Frage:
user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
Und ich wollte einem Freund das schicken aber der konnte das nicht starten.Er hatte sich extra .net Framework geholt.Was kann schief gelaufen sein.
Es gibt verschiedene Versionen des .NET Framework. Wenn du mit Visual C# 2008 Express arbeitest, dann wäre das .NET Framework 3.5 Runtime Environment was er braucht.
(Nicht zu verwechseln mit dem .NET Framework SDK!)

Das müsste dieser Download sein:
www.microsoft.com/do...7&displaylang=de
evtl. braucht man auch das, ich weiß das gar nicht so genau, das macht immer das Installationsprogramm automatisch... :oops:
www.microsoft.com/do...6&DisplayLang=de
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 15:08 
genau genommen abreite ich im moment mit SharpDevelop.
Das hab ich im Internet gefunden
ich werde im verlaufe des heutigen tages noch eine(ige) funktion(nen) einführen z.B. quadrat zahlen .
oder kannst du mir sogar sagen wo ich das Installer Programm herkriegen kann welches das macht
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 31.12.08 15:31 
Welche Version bei SharpDevelop benötigt wird, weiß ich leider nicht, und ein dazu passendes Setupprogramm kenne ich auch nicht, denn ich habe das Programm noch nie benutzt.
Irgendwo kann man dort vermutlich das Zielframework einstellen, und dessen Runtime wird auch benötigt. Aber dazu kann sicher jemand anderes etwas sagen. ;-)

Was mir bei deinem Rechner aufgefallen ist: So wie du es jetzt machst gehst du davon aus, dass immer eine gültige Zahl eingegeben wird. Tut man das nicht, stürzt das Programm ab. Es gibt auch TryParse ;-).
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 15:38 
ok.Wie mache ich das dann mit Tryparse. Und wie stell ich ein was er macht wenn es nicht klappt
thx
P.s. ok hab die option für das ziel framework gefunden...geht nur bis 2.0
hab mir jetzt mal Visual C# 2008 geholt. Mal gucken ob ich damit klarkomme :D
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 31.12.08 15:51 
Wie wäre es mit etwas mehr Eigeninitiative?

#D bietet den Wix Installer an, siehe Sharp Develop Community und die dortige Suchfunktion.

Das ist doch eine sehr grundlegende Frage "Wie mach ich das ..."
user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
ok.Wie mache ich das dann mit Tryparse. Und wie stell ich ein was er macht wenn es nicht klappt

Entweder Du markierst im Code-Editor das Wort und drückst F1, oder Du schaust direkt in SDK-Doku/MSDN im Index nach. Zu jeder Klasse und allen Eigenschaften, Methoden, Ereignissen gibt es Erläuterungen und sehr viele Beispiele. Dort findest Du für solche Fragen schneller Antworten, als wenn Du in einem Forum eine Frage stellst und auf Antworten wartest.

user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
P.s. ok hab die option für das ziel framework gefunden...geht nur bis 2.0

#D Version 3 geht bis NET 3.5, ist aber noch in der Beta-Phase.

Für einen Taschenrechner brauchst Du "höher als 2.0" aber nur dann, wenn Du mit WPF arbeitest.

Gruß und Frohes Neues Jahr! Jürgen
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 16:16 
user profile iconJüTho hat folgendes geschrieben Zum zitierten Posting springen:
Wie wäre es mit etwas mehr Eigeninitiative?


hast ja recht :D
ok ich guck mal wie ich damit klarkomme.

Also ich versuche es mit Tryparse umzuwandeln und kriege nen wert zurück?und denn checke ich dann darauf ob es eine gültige int32 zahl ist.Ist das so richtig verstanden?
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 31.12.08 17:19 
user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
ok ich guck mal wie ich damit klarkomme.

Offensichtlich hast Du immer noch keine Lust, selbst in der SDK-Doku/MSDN nachzuschauen. Sonst könntest Du nicht so etwas schreiben:
user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
Also ich versuche es mit Tryparse umzuwandeln und kriege nen wert zurück?und denn checke ich dann darauf ob es eine gültige int32 zahl ist.Ist das so richtig verstanden?

Ich finde nämlich so eine Erläuterung:
MSDN hat folgendes geschrieben:
Int32.TryParse-Methode
Konvertiert die Zeichenfolgendarstellung einer Zahl in die entsprechende 32-Bit-Ganzzahl mit Vorzeichen. Ein Rückgabewert gibt an, ob die Operation erfolgreich abgeschlossen wurde.

Ich hoffe, Du erkennst die Unterschiede zwischen Deiner Beschreibung und der MSDN-Erläuterung.

Wehe, Du versuchst damit so etwas:
ausblenden C#-Quelltext
1:
2:
3:
4:
int result = int.TryParse(InputTextBox.Text);
if (result is int) {
   //  Berechnung ausführen
}

Dann fasse ich alles als Silvesterscherz auf.

Frohes Neues Jahr! Jürgen
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 17:29 
also ich habs noch nicht ganz verstanden ..ich versuchs nochmal
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 31.12.08 17:57 
Meine Güte! (Dieser Spruch bezog sich auf Deinen Versuch, denn Du inzwischen wieder gelöscht hast.) Ich kopiere mal die relevanten Zeilen aus dem Beispiel in der SDK-Doku:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
    bool     result;
// Int32, auf die einfache Variante verkürzt:
    result = Int32.TryParse("3"out int32Val);
    Show(result, "Int32", int32Val.ToString());

//  Das Beispiel benutzt diese Show-Methode:
protected static void Show(bool parseResult, string typeName, string parseValue)
{ ... }

//  Ausgabe:
Parse for Int32 = 3

Das übliche Vorgehen lautet:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
int result = 0;
string input = "irgendwas";
if (int.TryParse(input, out result)) {
   //  mach was
}


Eigentlich wollte ich Dir konkret helfen und habe mir Deinen Code heruntergeladen. Ich weiß nicht, ob es sinnvoll ist, auf dieser Grundlage Kommentare abzugeben. Andererseits: wenn Du sonst keine Kontakte hast, musst Du freilich auf diesem Weg fragen. Also hier einige Anmerkungen (ohne Anspruch auf Vollständigkeit, die Reihenfolge hat nichts mit der Bedeutung zu tun):
  • Eine Quelldatei hat üblicherweise die Endung ".cs" und nicht ".txt.txt". Wie das bloß entstanden ist...
  • Anstelle von Console.Write gibt es auch Console.WriteLine; damit ist ein Zeilenende automatisch enthalten.
  • Wenn in einem String das Zeilenende eingegeben werden soll, ist Environment.NewLine besser, weil das immer dem System entspricht. Programme variieren immer wieder zwischen "\n" und "\n\r" und "\r\n", und das kann Prüfungen verwirren.
  • Ich würde einen Taschenrechner lieber mit WinForms erstellen; da kann man mehr lernen und hat bessere Eingaben. Aber wenn schon Console, dann schöner: Im ersten Versuch würde ich eine Eingabe "Zahl1 - Rechenzeichen - Zahl2" erwarten.
  • Für das Rechenzeichen wäre die Eingabe eines Zeichens durch ReadKey sinnvoller. Dieses Zeichen kannst Du in einer eigenen char-Variablen zwischenspeichern und hast es später (insbesondere zur Ausgabe) wieder zur Verfügung.
  • Zu Deiner Variante mit Parse und dem "Ersatz" durch TryParse haben Sebastian und ich schon einiges gesagt.
  • Die wichtigste Verbesserung des Programms wären Deine vier if-Abfragen: Worin unterscheiden sich diese Zweige denn? Doch lediglich in der Ausführung der Rechnung (ein kleiner Sonderfall ist die Division, aber auch das bekommt man hin). Das ist doch die ideale Situation für eine Fallunterscheidung, in C# mit switch-Anweisung bezeichnet.
  • Diese Art einer double-Division empfinde ich als ziemlich abartig:
    ausblenden Quelltext
    1:
    Console.WriteLine(dividend / divisor = ganzzahl + "," + Dezimalanteil)					

    Du hast doch schon double-Variablen vorgesehen, dann benutze diese doch auch:
    ausblenden C#-Quelltext
    1:
    double ergebnis = (double)zahl1 / (double)zahl2;					

Ich überlasse es Dir, diese Anmerkungen umzusetzen.

Gruß und Frohes Neues Jahr! Jürgen

PS 1. Bitte markiere Code als solchen, das liest sich besser: Unter "Bereiche" das C# auswählen und mit dem Plus-Button kennzeichnen.

PS 2. In der Regel habe ich keine Lust, Quelldateien herunterzuladen, zu extrahieren und in einem weiteren Fenster zu öffnen, wenn ich hier um eine Auskunft gebeten werde. Dazu kann man Code hier in die Fragen einbeziehen (und als solchen markieren). Das ist fast immer praktischer, erst recht, wenn es nur so wenige Zeilen sind.

PS 3. Dieses Programm hat in der Tat nichts mit einer speziellen NET-Version zu tun. Es muss also nur darauf geachtet werden, dass der Ziel-Rechner dasselbe NET hat wie der Programmierer. Vorschlag: #D Version 2.2 benutzen, Ziel 2.0 angeben und bei Deinem Freund auch 2.0 Runtime installieren (wie gesagt, es sei denn, Du willst mit WPF arbeiten; dann ist #D 3.x oder Visual Studio 2008 besser).
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 18:09 
Ok vielen Dank
War ja nur mein erster Versuch.
Das mit Tryparse habe ich inzwischen rausbekommen und es klappt auch.
Ich habs nicht mit WinForms gemacht aus 2 Gründen.1.Bin ich im Tutorial noch nicht so weit :D 2. Wars ja nur ein Test für den Code.
Ich hab jetzt Visual Studio 2008.
ausblenden volle Höhe 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:
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:
using System;
public class Rechner
{
    public static void Main()
    {
        Console.Write("Dies ist ilwakas Rechner v.0.2\n");
        Console.Write("\n");
        Console.Write("\n");
        Console.Write("Wählen sie ihre Rechenart\n");
        Console.Write("(1)+ Plus\n");
        Console.Write("(2)- Minus\n");
        Console.Write("(3)* Mal\n");
        Console.Write("(4)/ Durch\n");
        
        string rart;
        rart = (Console.ReadLine());
        int art;
        bool result = Int32.TryParse(rart, out art);
        if (result)
        {
            Console.Write("Geben sie Zahl 1 ein: ");
            string zahl1;
            zahl1 = (Console.ReadLine());
            int number1;
            bool result1 = Int32.TryParse(zahl1, out number1);
            if (result1)
            {
                Console.Write("\nGeben sie Zahl 2 ein: ");
                string zahl2;
                zahl2 = (Console.ReadLine());
                int number2;
                bool result3 = Int32.TryParse(zahl2, out number2);
                if (result3)
                {

                    if (art == 1)
                    {
                        int Ergebnis;
                        Ergebnis = number1 + number2;
                        Console.Write("" + zahl1 + "+" + zahl2 + "=" + Ergebnis + "\n");
                        Console.Write("Danke für die Benutzung meines Rechners");
                    }


                    if (art == 2)
                    {
                        int Ergebnis;
                        Ergebnis = number1 - number2;
                        Console.Write("" + zahl1 + "-" + zahl2 + "=" + Ergebnis + "\n");
                        Console.Write("Danke für die Benutzung meines Rechners");
                    }
                    if (art == 3)
                    {
                        int Ergebnis;
                        Ergebnis = number1 * number2;
                        Console.Write("" + zahl1 + "*" + zahl2 + "=" + Ergebnis + "\n");
                        Console.Write("Danke für die Benutzung meines Rechners");
                    }
                    if (art == 4)
                    {
                        double Ergebnis;
                        double ergebnis2;
                        Ergebnis = number1 / number2;
                        ergebnis2 = number1 % number2;
                        Console.Write("" + zahl1 + "/" + zahl2 + "=" + Ergebnis + "," + ergebnis2 + "\n ");
                        Console.Write("Danke für die Benutzung meines Rechners");

                    }
                    
                }
            }
        }
        Console.Write("Falsche Eingabe. Neustarten \n");       
        Console.WriteLine("\n \n \n" + "Taste druecken um zu beenden");

                Console.ReadKey();
            
        
    }
}

Das ist jetzt der aktuelle Code.
Ja sag ich mal danke für die tipps.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 31.12.08 18:31 
Sozusagen als PS 4 meines vorigen Beitrags.

Nach der Lektüre Deines ersten Versuchs ist mir klar geworden, wie sehr Du noch am Anfang bist. Insofern war mein "unduldsamer" Ton unpassend; ich werde versuchen, mich zu bessern. Deshalb hier ein paar grundsätzliche Anmerkungen, wie Du Dir das Vorgehen erleichtern kannst.

1. Intensiv die Hilfe und SDK-Doku/MSDN benutzen. In der IDE mit Markieren eines Begriffs (Klasse, Methode) und F1, oder (was ich praktischer finde) mit der Offline-Version der SDK-Doku, siehe Möglichkeiten der Informationsgewinnung.

2. Ein weitere Einführung ist OpenBook Visual C#.

Gruß Jürgen
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 18:40 
:D
So schlimm war ja nicht ich hätte ja mal online suchen können aber der "trick" mit F1 ist echt gut.
Das Beispiel war so lang deswegen hab ich so lange gebraucht um das zu verstehen.
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Mi 31.12.08 21:34 
so. jetzt habe ich das programm überarbeitet.
man gibt erst zahl1 ein dann rechenzeichen und dann zahl 2 :D
ich hab die vier if durch switch ersetzt.
Und ich habe Tryparse integriet sodass sich das programm planmäßig beendet wenn man z.b a eingibt
ich nenne das ganze jetzt v1.0 :D
ausblenden volle Höhe 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:
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:
/*
 * Erstellt mit SharpDevelop.
 * Benutzer: yannik
 * Datum: 31.12.2008
 * Zeit: 11:11
 * 
 * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
 */

using System;
public class Rechner
{
    public static void Main()
    {
        Console.Write("Dies ist ilwakas Rechner v.1.0\n");
        Console.Write("\n");
        Console.Write("\n");
        Console.Write("Geben sie Zahl1 ein:");


        string zahl1;
        zahl1 = (Console.ReadLine());
        int number1;
        bool result = Int32.TryParse(zahl1, out number1);
        if (result)
        {
            Console.Write("Geben sie das Rechenzeichen ein \n");
            Console.WriteLine("(1)+ Addieren");
            Console.WriteLine("(2)-Subtrahieren");
            Console.WriteLine("(3)+ Multiplizieren");
            Console.WriteLine("(4)Dividieren");

            string rart;
            rart = (Console.ReadLine());
            int art;
            bool result1 = Int32.TryParse(rart, out art);
            if (result1)
            {
                Console.Write("\nGeben sie Zahl 2 ein: ");
                string zahl2;
                zahl2 = (Console.ReadLine());
                int number2;
                bool result3 = Int32.TryParse(zahl2, out number2);
                if (result3)
                {

                    switch (art )
                    {
                        case (1):
                        int Ergebnis;
                        Ergebnis = number1 + number2;
                        Console.Write("" + zahl1 + "+" + zahl2 + "=" + Ergebnis + "\n");
                        Console.Write("Danke für die Benutzung meines Rechners");
                        break;
                    


                        case (2):
                    
                       
                        Ergebnis = number1 - number2;
                        Console.Write("" + zahl1 + "-" + zahl2 + "=" + Ergebnis + "\n");
                        Console.Write("Danke für die Benutzung meines Rechners");
                            break;
                    
                        case (3):
                    
                        
                        Ergebnis = number1 * number2;
                        Console.Write("" + zahl1 + "*" + zahl2 + "=" + Ergebnis + "\n");
                        Console.Write("Danke für die Benutzung meines Rechners");
                      break;
                        case (4):

                        double ergebnis = (double)number1 / (double)number2;
                        Console.Write("" + zahl1 + "/" + zahl2 + "=" + ergebnis + "" + "\n ");
                        Console.Write("Danke für die Benutzung meines Rechners");
                            break;

                    }
                    
                }
            }
        }
              
        Console.WriteLine("\n \n \n" + "Taste druecken um zu beenden");

                Console.ReadKey();
            
        
    }
}
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 01.01.09 11:26 
Hallo,

na, das sieht ja schon etwas besser aus. Noch ein paar weitere Vorschläge (als Konkretisierung meiner früheren Hinweise):
Zitat:
Für das Rechenzeichen wäre die Eingabe eines Zeichens durch ReadKey sinnvoller.

ausblenden C#-Quelltext
1:
2:
//  nach der Aufforderung für die Rechenart:
char art = Console.ReadKey().KeyChar;

Zitat:
ideale Situation für eine Fallunterscheidung: Worin unterscheiden sich diese Zweige denn?

Das "Danke" wird viermal geschrieben, das Ergebnis sieht (abgesehen vom Rechenzeichen und dem double-Ergebnis der Division) ebenfalls fast identisch aus. Diese Zeilen gehören also nicht innerhalb der switch-Anweisung, sondern einheitlich dahinter. Aus diesem Grund deklariere ich das ergebnis einheitlich als double:
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:
26:
    double ergebnis = 0;
    bool possible = true;
    string message = String.Empty;
    switch(art) {
      case '+':
        ergebnis = number1 + number2;
        break;
      case '/':
        if (number2 == 0) {
           possible = false;
           message = "Division durch Null unzulässig"
        } else {
          ergebnis = (double)number1 / double(number2);
        }
        break;
      default:
        possible = false;
        message = "Rechenzeichen ist nicht zulässig";
        break;
    }
    if (possible) {
      Console.WriteLine("{0} {1} {2} = {3}", number1, art, number2, ergebnis);
    } else {
      Console.WriteLine(message);
    }
    Console.WriteLine("Danke schön");

Bitte beachte auch die Variante von WriteLine und die Unterscheidung durch possible: Dann kannst Du alle Fehlermeldungen zusammenfassen. Diese WriteLine-Variante entspricht String.Format; in den geschweiften Klammern sind auch Format-Angaben (wie die Anzahl der Dezimalstellen) möglich. Die Division durch Null fehlte bisher überhaupt. Unnötige Wiederholungen sind verschwunden.

Gruß und Frohes Neues Jahr! Jürgen

PS. An den WriteLine-Varianten siehst Du sehr schön, dass Du Dir das "Stöbern" in der SDK-Doku/MSDN/Hilfe schnell angewöhnen solltest. Dadurch erhältst Du viele Hinweise, was alles noch möglich ist.
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Do 01.01.09 15:54 
ok ich habe deinen code jetzt überall eingebaut und getest..klappt alles.
Vielen Dank
ausblenden volle Höhe 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:
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:
/*
 * Erstellt mit SharpDevelop.
 * Benutzer: yannik
 * Datum: 31.12.2008
 * Zeit: 11:11
 * 
 * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
 */

using System;
public class Rechner
{
    public static void Main()
    {
        Console.Write("Dies ist ilwakas Rechner v.1.0\n");
        Console.Write("\n");
        Console.Write("\n");
        Console.Write("Geben sie Zahl1 ein:");


        string zahl1;
        zahl1 = (Console.ReadLine());
        int number1;
        bool result = Int32.TryParse(zahl1, out number1);
        if (result)
        {
            Console.Write("Geben sie das Rechenzeichen ein \n");
            Console.WriteLine("+ Addieren");
            Console.WriteLine("-Subtrahieren");
            Console.WriteLine("* Multiplizieren");
            Console.WriteLine("/ Dividieren");
            char art = Console.ReadKey().KeyChar;


            Console.Write("\nGeben sie Zahl 2 ein: ");
            string zahl2;
            zahl2 = (Console.ReadLine());
            int number2;
            bool result3 = Int32.TryParse(zahl2, out number2);
            if (result3)
            {
                double Ergebnis = 0;
                bool possible = true;
                string message = String.Empty;
                switch (art)
                {
                    case '+':

                        Ergebnis = number1 + number2;

                        break;



                    case '-':


                        Ergebnis = number1 - number2;

                        break;

                    case '*':


                        Ergebnis = number1 * number2;

                        break;
                    case '/':

                        if (number2 == 0)
                        {
                            possible = false;
                            message = "Division durch Null unzulässig";
                        }
                        else
                        {
                            Ergebnis = (double)number1 / (double)(number2);
                        }
                        break;
                    default:
                        possible = false;
                        message = "Rechenzeichen ist nicht zulässig";
                        break;
                }
                        if (possible)
                        {
                            Console.WriteLine("{0} {1} {2} = {3}", number1, art, number2, Ergebnis);
                        }
                        else
                        {
                            Console.WriteLine(message);
                        }

                }

            }

            Console.WriteLine("\n \n \n" + "Taste druecken um zu beenden");

            Console.ReadKey();


        }
    }
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 01.01.09 16:55 
Ja, so geht es!

Die nächsten Schritte zur Verbesserung:

1. Die Variablen result und result3 werden ebenfalls durch possible ersetzt mit einem passenden message-String. (Die Deklarationen und die Reihenfolge der if-Abfragen müssen dann angepasst werden.)

2. Als Zahlen sind double statt int zugelassen.

3. Der Arbeitsablauf wird in eine Schleife eingebaut. Das Programm wird nicht automatisch nach jeder Rechnung beendet, sondern erst durch Eingabe von Ctrl-C (das zu prüfen ist in der Console etwas schwieriger).

Weiterhin viel Erfolg! Jürgen
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Do 01.01.09 17:27 
also
den 2. punkt hab ich erledgit
ich bin mir nicht ganz sicher aber ich glaub ich hab jetzt punkt 1 fertig.
ausblenden volle Höhe 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:
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:
/*
 * Erstellt mit SharpDevelop.
 * Benutzer: yannik
 * Datum: 31.12.2008
 * Zeit: 11:11
 * 
 * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
 */

using System;
public class Rechner
{
    public static void Main()
    {
        Console.Write("Dies ist ilwakas Rechner v.1.0\n");
        Console.Write("\n");
        Console.Write("\n");
        Console.Write("Geben sie Zahl1 ein:");


        string zahl1;
        zahl1 = (Console.ReadLine());
        double number1;
        bool possible = Double.TryParse(zahl1, out number1);
        if (possible)
        {
            Console.Write("Geben sie das Rechenzeichen ein \n");
            Console.WriteLine("+ Addieren");
            Console.WriteLine("-Subtrahieren");
            Console.WriteLine("* Multiplizieren");
            Console.WriteLine("/ Dividieren");
            char art = Console.ReadKey().KeyChar;


            Console.Write("\nGeben sie Zahl 2 ein: ");
            string zahl2;
            zahl2 = (Console.ReadLine());
            double number2;
           
           possible = Double.TryParse(zahl2, out number2);
           if (possible)
           {
               double Ergebnis = 0;

               string message = String.Empty;
               switch (art)
               {
                   case '+':

                       Ergebnis = number1 + number2;

                       break;



                   case '-':


                       Ergebnis = number1 - number2;

                       break;

                   case '*':


                       Ergebnis = number1 * number2;

                       break;
                   case '/':

                       if (number2 == 0)
                       {
                           possible = false;
                           message = "Division durch Null unzulässig";
                       }
                       else
                       {
                           Ergebnis = (double)number1 / (double)(number2);
                       }
                       break;
                   default:
                       possible = false;
                       message = "Rechenzeichen ist nicht zulässig";
                       break;
               }
               if (possible)
               {
                   Console.WriteLine("{0} {1} {2} = {3}", number1, art, number2, Ergebnis);
               }
               else
               {
                   Console.WriteLine(message);
               }

           }
           else
           {
               Console.Write("Zahl2 ungültig");
           }
            }
        else
        {
            Console.Write("Zahl 1 nicht gültig");
        }
            Console.WriteLine("\n \n \n" + "Taste druecken um zu beenden");

            Console.ReadKey();


        }
    }

vll kann ich nach jeden rechendurchgang sagen:taste drücken um weiterzumachen,E(xit)drücken um zu beenden.
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 01.01.09 18:40 
Hallo,

user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
den 2. punkt hab ich erledgit

Es sieht so aus. Aber probier mal ein paar Varianten aus mit Komma und Dezimalpunkt; mal sehen, was dann passiert.

user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
ich bin mir nicht ganz sicher aber ich glaub ich hab jetzt punkt 1 fertig.

Aber nicht sehr schön. Du hast noch viele einzelne Write-Befehle, die durch WriteLine(message) ersetzt werden können.

Diesen Code-Teil brauchst Du wirklich nicht jedesmal zu kopieren, die using-Befehle nur dann, wenn sie wichtig sind.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
/*
 * Erstellt mit SharpDevelop.
 * Benutzer: yannik
 * Datum: 31.12.2008
 * Zeit: 11:11
 * 
 * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern.
 */

using System;


user profile iconilwaka hat folgendes geschrieben Zum zitierten Posting springen:
vll kann ich nach jeden rechendurchgang sagen:taste drücken um weiterzumachen,E(xit)drücken um zu beenden.

Die Taste ist natürlich ziemlich gleichgültig; aber wie wird es gemacht, dass die nächsten Abfragen folgen?

Viel Erfolg! Jürgen
ilwaka Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 48

Win Vista
C# (VS 2008)
BeitragVerfasst: Do 01.01.09 18:57 
was soll den mit komma und dezimal punkt passieren.Klappt bei mir beides
ich würd sagen mit so einer while schleife...
die hab ich jetzt aus guide to C# kopiert aber so könnte es gehen oder?
ausblenden volle Höhe 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:
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:
public class Rechner
{
    public static void Main()
    {
        
        Console.Write("Dies ist ilwakas Rechner v.1.0\n");
        Console.Write("\n");
        Console.Write("\n");
        bool neuerechnung = true;
        while (neuerechnung)
        {
            Console.Clear();
            Console.Write("Geben sie Zahl1 ein:");


            string zahl1;
            zahl1 = (Console.ReadLine());
            double number1;
            bool possible = Double.TryParse(zahl1, out number1);
            if (possible)
            {
                Console.Write("Geben sie das Rechenzeichen ein \n");
                Console.WriteLine("+ Addieren");
                Console.WriteLine("-Subtrahieren");
                Console.WriteLine("* Multiplizieren");
                Console.WriteLine("/ Dividieren");
                char art = Console.ReadKey().KeyChar;


                Console.Write("\nGeben sie Zahl 2 ein: ");
                string zahl2;
                zahl2 = (Console.ReadLine());
                double number2;

                possible = Double.TryParse(zahl2, out number2);
                if (possible)
                {
                    double Ergebnis = 0;

                    string message = String.Empty;
                    switch (art)
                    {
                        case '+':

                            Ergebnis = number1 + number2;

                            break;



                        case '-':


                            Ergebnis = number1 - number2;

                            break;

                        case '*':


                            Ergebnis = number1 * number2;

                            break;
                        case '/':

                            if (number2 == 0)
                            {
                                possible = false;
                                message = "Division durch Null unzulässig";
                            }
                            else
                            {
                                Ergebnis = (double)number1 / (double)(number2);
                            }
                            break;
                        default:
                            possible = false;
                            message = "Rechenzeichen ist nicht zulässig";
                            break;
                    }
                    if (possible)
                    {
                        Console.WriteLine("{0} {1} {2} = {3}", number1, art, number2, Ergebnis);
                    }
                    else
                    {
                        Console.WriteLine(message);
                    }

                }
                else
                {
                    Console.Write("Zahl2 ungültig");
                }
            }
            else
            {
                Console.Write("Zahl 1 nicht gültig");
            }
            Console.Write("\n Neue Rechnung ausführen (J)a/(N)ein");
            if (Console.ReadKey().KeyChar != 'j'

               {
                   neuerechnung = false;
               }
        }
            Console.WriteLine("\n \n \n" + "Taste druecken um zu beenden");

            Console.ReadKey();
           

        }
    }


so jetzt hab ich die while schleife eingefügt.
Hab sogar gemacht das der Bildschrim vorher gesäubert wird :D
jetzt muss ich mir nur noch was mit den messages überlegen


Zuletzt bearbeitet von ilwaka am Do 01.01.09 19:59, insgesamt 2-mal bearbeitet