C# Fahrenheit und Celcius umrechnen

kristian

kristian

Mitglied
Hallo!
Habe ein kleines Problem... hoffe es gibt auch Leute die C# können(Ich lerne es in der Schule...)!
Auf das Programm hat mich meine Physik-Lehrerin gebracht. Es soll entweder von Celcius auf Fahrenheit oder von Fahrenheit auf Celcius umrechen, je nachdem was man eingibt.
Die Formel zur Umrechnung sollte stimmen, jedoch kommt nur Blödsinn heraus...
Weiss vl. jem. wo der Fehler liegt?

Code:
using System;

public class Fahrenheit_Celcius
{
    static void Main()
    {
        double temp_anfang, temp_ende;
        string einheit, nochmal;
        bool NochmalBerechnen = true;

        Console.WriteLine("Hallo!");
        Console.WriteLine();

        do
        {
            Console.Write("Welche Einheit hat der erste Wert?F/C: ");
            einheit = Console.ReadLine();

            if (einheit == "C")
            {
                Console.Write("Wieviel °Celcius hat es?: ");
                temp_anfang = Double.Parse(Console.ReadLine());

                temp_ende = 5 / 9 * (temp_anfang - 32);

                Console.WriteLine("{0}°C entsprechen {1}°F", temp_anfang, temp_ende);
            }
            else
            {
                Console.WriteLine("Wieviel °Fahrenheit hat es?: ");
                temp_anfang = Double.Parse(Console.ReadLine());

                temp_ende = temp_anfang * 1.8 + 32;

                Console.WriteLine("{0}°F entsprechen {1}°C", temp_anfang, temp_ende);
            }
            Console.Write("Wollen Sie noch einen Wert umrechnen?j/n: ");
            nochmal = Console.ReadLine();
            if (nochmal != "j")
            {
                NochmalBerechnen = false;
            }

        }

        while (NochmalBerechnen == true);

    }
}

Ich möchte noch anmerken, dass wir meiner Meinung nach, noch nicht wirklich viel gelernt haben...Es ist jetzt das zweite Jahr indem wir C# lernen...

Danke im Vorraus
mfg
kristian
 
Hi,

für 2 Jahre Programmieren in C# ist das meiner Meinung nach sehr dürftig, wir haben ähnliche Beispiele zum Anfang gehabt.

Ich finde es auch ein wenig umständlich gecodet, aber das dürfte Geschmackssache sein.

Ich vermute, dass es nicht geht, weil du es "Celcius" nennst, der Compiler stellt sich hier wohl quer. ;P

Scherz, die Formeln sind falsch:
Celsius in Fahrenheit = (( TCelsius × 9 ) / 5 ) + 32
Fahrenheit in Celsius = ( TFahrenheit - 32 ) × 5 / 9

Auch wäre es praktisch, wenn du zur Überprüfung den Inhalt der Variable einheit mit ToUpper() oder ToLower() behandelst, ansonsten hast du das Problem, dass die Eingabe eines kleinen Cs dazu führt, dass der Benutzer die Einheit in Fahrenheit angibt.
 
Hallo!

Danke für die schnelle Hilfe und den Tipp mit ToUpper() und ToLower()! Hat mich eh gestört, hab mir aber nicht so den Kopf zerbrochen deswegen :)

Ich glaub das im ersten Post kann man leicht missverstehen. Im Moment machen wir etwas anderes in C#. Nämlich soweit ich mich errinnern kann(Ferien...) Strukturen. Meine Physik Lehrerin hat mich nur auf die Idee gebracht, dass wir mit unserem Wissen so eine Umrechnung auch schon schreiben könnten...

Also Danke nochmal!
mfg
kristian
 
Ja klar :)
weiß zwar nicht ob das jetzt die die es wirklich können ;) auch so machen würden, aber das was ich will geht!
Code:
using System;

public class Fahrenheit_Celcius
{
    static void Main()
    {
        double temp_anfang, temp_ende;
        string einheit, nochmal;
        bool NochmalBerechnen = true;

        Console.WriteLine("Hallo!");
        Console.WriteLine();

        do
        {
            Console.Write("Welche Einheit hat der erste Wert?F/C: ");
            einheit = Console.ReadLine().ToUpper();

            if (einheit == "C")
            {
                Console.Write("Wieviel °Celcius hat es?: ");
                temp_anfang = Double.Parse(Console.ReadLine());

                temp_ende = ((temp_anfang * 9) / 5) + 32;

                Console.WriteLine("{0}°C entsprechen {1}°F", temp_anfang, temp_ende);
                Console.WriteLine();
            }
            else
            {
                Console.Write("Wieviel °Fahrenheit hat es?: ");
                temp_anfang = Double.Parse(Console.ReadLine());

                temp_ende = (temp_anfang - 32) * 5 / 9;

                Console.WriteLine("{0}°F entsprechen {1}°C", temp_anfang, temp_ende);
                Console.WriteLine();
            }
            Console.Write("Wollen Sie noch einen Wert umrechnen?J/N: ");
            nochmal = Console.ReadLine().ToLower();
            Console.WriteLine();

            if (nochmal != "j")
            {
                NochmalBerechnen = false;
            }

        }

        while (NochmalBerechnen == true);

    }
}
 
Hallo,
du könntest deinen Code mal etwas säubern ^^
Du kannst z.b. solche Konstrukte weg lassen:

Code:
if(bla == true)    //verständlich aber nicht kurz
while(bla == true)    //wie bei if.

Auch kannst den Inhalt deiner if/else Blöcke in Methoden auslagern.
Somit kannst du deine Main Methode kürzen und verkleinern.

Desweiteren solltest du dir abgewöhnen, Variablen vom selben Typ in einer Reihe zu deklarieren.

Code:
double bla, blub, knm;

Sowas ist meiner, und der Meinung vieler Entwickler, sehr unschön.
Mach es wie bei einer Liste und deklariere untereinander.

Auch solltest du jede Variable beim deklarieren initialisieren.
Wobei manchmal eine Ausnahme gemacht wird, wenn man z.b. auf null prüfen will oder in anderen Fällen.

Ich werde Morgen mal deinen Code etwas aufräumen, damit du einen kleinen Einstieg zur Optimierung bekommst.

T-Virus
 
Was ist an If- und Whileschleifen auszusetzen?
Oder war das jetzt auf's true bezogen?

Sowas ist meiner, und der Meinung vieler Entwickler, sehr unschön.
Mach es wie bei einer Liste und deklariere untereinander.
Macht nur Sinn wenn es sich um andere Typen handelt oder andere Werte, wenn alle den selben Wert haben sollen beim selben Typen, ist es schon okay wie er es gemacht hat.

Auch solltest du jede Variable beim deklarieren initialisieren.
Nö.
 
Zuletzt bearbeitet:

Ähnliche Themen

gcc error bei bool prototyp

C++ und xerces - Probleme beim komplieren

Probleme mit dem Eingabepuffer unter C++

Combobox-Index an variable übergeben

C++ Klausur durchgefallen

Zurück
Oben