verstehe den quelltext nicht ganz und wie kann ich hochrechnung mit einbauen?

  • Hallo leute,
    erstmal ein kräftiges Hallo von mir :wave:, und Lob:schönes Forum:D

    Nun mal zu meiner Frage, eigentlich sind es 2, ich hoffe das ist kein Problem.

    Also ich sollte nen Taschenrechner programmieren, als Bewerbungsaufgabe, und nun hab ich mit nem Infostudenten den Text geschrieben nur hat er mir nicht erklärt was er gemacht hat und nun versteh ich den Text nicht und er ist jetz n jahr in canada und ich erreiche ihn nicht. Weiterhin müsste ich noch einbauen dass das Programm zu allererst hochrechnung macht (also z.B. 4^3).
    Könnt ihr mir helfen?


  • Also ich sollte nen Taschenrechner programmieren, als Bewerbungsaufgabe, und nun hab ich mit nem Infostudenten den Text geschrieben nur hat er mir nicht erklärt was er gemacht hat und nun versteh ich den Text nicht...

    Ist der Sinn einer Aufgabe nicht der, sie selbst zu lösen?
    Dieser Taschenrechner ist vom Programm her schon etwas komplizierter aufgebaut, aber naja jedem sein Stil. Es gibt hier im Forum auch Threads zu einfacheren Taschenrechnern nur halt in Java.

    Weiterhin müsste ich noch einbauen dass das Programm zu allererst hochrechnung macht (also z.B. 4^3).
    Könnt ihr mir helfen?

    Schonmal probiert, das Programm durchzugehen?
    Für die '^' Eingabe solltest du, im 'switch (input[count]) {}' - Block einen weiteren case hinzufügen. Dieser sollte dann entsprechend a^b in
    for(1:b) {a *=a} umsetzen, eventuell den Fall b==0 beachten.

  • Rein aus Interesse: Sollte das nur irgendein Rechner werden, od gibts da eine Aufgabenstellung, die gewisse Vorgaben macht?


    Er sollte in C# sein, die grundrechenarten beherschen, punkt soll vor strichrechnung gerechnet werden und er soll zahlen hoch nemen (ich glaub potenzieren heißt das!?)

  • Also was mir absolut nicht klar ist ist die überprüfung ob es ne negative zahl ist oder nicht. Weiterhin schnall ich net wie es punkt vor strichrechnung rechnet, und dann müsst ich ja noch überprüfen lassen ob n hochzeichen drin ist um das zu allererst rechnen zu lassen. Den befehl kenn ich, der ist

    Code
    pow(Basis,Exponent);

    oder irr ich mich da?:zwinker:

  • Ohne eine spezifikation kann man nicht viel machen weil auch fuer ein Taschenrechner sehr viele Fragen aufkommen, wie z.b. die Input Notation
    (ie. 1 2 + oder 1 + 2 oder + 1 2 etc)

    zu dem Code was du gepostet hast:
    meiner Meinung nach sollte man den default zweig des switches NUR fuer eine Fehlermeldung verwenden. Fuer das was du machst gibt es denn '?' case, ich weis jezt nicht genau ob das in C# auf drin ist aber sollte sein. Das ? heist einfach das alle anderen characters in diesen Case fallen, was auch eine zahl waere.

    Die negativ ueberpruefung:
    der User Input erfolg mittels der Konsole also kommt es ueber einen String zu deinem Programm. Daher wird ein char array verwendet. Jede zahl wird in einezelen zahlen gegliedert z.B. 999 wird als '9' '9' '9' in je einem Index gespeichert.

    Code
    ---99 == -99

    das oben angegebene code stueck zeigt dir warum

    Code
    while (temp == '-')
                {
                    isNegative = !isNegative;
                    count++;
                    if (count < input.Length)
                        temp = input[count];
                    else
                        break;
                }

    ausgefuehrt wird, eben wegen diesen mehrfachen '-'. Sobald dieses '-' nicht mehr auftritt bleibt der nicht '-' char in temp gespeichert und die boolean variable isNegativ ist entweder true oder false, true bei ungerader Anzahl an '-' chars und anders false.

    Das potenz Zeichen ist '^'. Die Funktion sollte so aussehen wie du sie hast. Das mit dem Punkt vor Strich Rechnung wuerde dann vieleicht so aussehen das man zwei schleifen hat mit je einem switch. Einmal fuer + und - und dann einmal fuer * und /

    Die Prioritaet fuer den Potenz Operator ist das wirklich entscheidende an diesem Beispiel, sonst waere es ja viel zu einfach fuer eine Bewerbung. Ein Ansatz waere den input String durchzulaufen und dir den Index von drei Operatoren zu merken, das heist du brauchst einem int array [3]. Du gehst den input String durch und speicherst in [0] den Index eines Operators in der folgenden Enumeration {'-','+','/','*'}. Sollten nun ein '^' char im input String sein sollte dieser Index in [1] gespeichert werden. Dann geht es weiter bis man den naechsten Operator erreicht und speichert dessen index in [2]. Zwischen diesen drei Indecies sind jetzt deine zwei Zahlen fuer die Potenz Rechnung.

    Jetzt schneidest du Teilstrings ab, und zwar von inputString[0] bis inputString[[0]], das heist alles inlusieve des ersten operators. Ein zweiter Teilstring ist dann inputString[[2]] bis inputString[inputString.length()]. Also alles von dem dritten operator bis zum ende. Jetzt hast du in inputString nur noch deine zahlen und den potenz Operator. Nach erfolgreichem rechnen muss man das ergebnis der Potenz rechnung mit den Teilstring wieder zusammen schneiden.

    Also in ungefaehr so: teilstring1 + ergebnis + teilstring2. Natuerlich muesste das ganze in einer schleife durchlaufen werden weil es mehrere potenz Operatoren geben koennte.

    Dies ist jetzt nur so schnell hingetippt und ich weis den genauen C# code nicht und ich weis auch nicht ob es die beste Loesung ist, wahrscheinlich nicht. Ich hoffe ich habe jetzt nicht zu viel geholfen da dies ein Bewerbungsbeispiel ist.

    ______________________________________________
    (\__/)
    (='.'=)This is Bunny. Copy and paste Bunny into ur
    (")_(")signature to help him gain world domination.
    ______________________________________________
    Windows ist für nur eins gut: WinZip :mad:@ AlgoDat

    Einmal editiert, zuletzt von lowkey (10. März 2009 um 21:47)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!