Code Verbesserung in Rechenprog.

Schnelle objektorientierte, kompilierende Programmiersprache.
Benutzeravatar
Dirty Oerti
Beiträge: 2229
Registriert: Di Jul 08, 2008 5:05 pm
Wohnort: Thurndorf / Würzburg

Re: Code Verbesserung in Rechenprog.

Beitrag von Dirty Oerti » Do Nov 20, 2008 9:24 pm

dani93 hat geschrieben:
Dirty Oerti hat geschrieben:Äh, ja, wieso?

lim (5/x) mit x->0 = unendlich ^^

Und wenn du nun 5 durch 0.001 teilst, oder durch 0.0001 etc...
kommst du langsam an unendlich "ran"^^ :)
Ach so war das gemeint :)
Tja, ganz langsam an unendlich ran :D
Dann braucht man nur ziemlich schnell größere Variablen :)
Z.B. 2048 Bit ^^
2 hoch 2048 ist...
...error, zumindest laut x-calc :D

Und laut bc ist es...
32317006071311007300714876688669951960444102669715484032130345427524\
65513886789089319720141152291346368871796092189801949411955915049092\
10950881523864482831206308773673009960917501977503896521067960576383\
84067568276792218642619756161838094338476170470581645852036305042887\
57589154106580860755239912393038552191433338966834242068497478656456\
94948561760353263220580778056593310261927084603141502585928641771167\
25943603718461857357598351152301645904403697613233287231227125684710\
82020972515710172693132346967854258065669793504599726835299863821552\
51663894373355436021354332296046453184786049521481935558536110595962\
30656
:)
Bei Fragen einfach an daniel[ät]proggen[Punkt]org
Ich helfe gerne! :)
----------
Wenn du ein Licht am Ende des Tunnels siehst, freu dich nicht zu früh! Es könnte ein Zug sein, der auf dich zukommt!
----
It said: "Install Win95 or better ..." So I installed Linux.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Code Verbesserung in Rechenprog.

Beitrag von +Fuss+ » Fr Nov 21, 2008 10:24 am

Ich glaub ich geh einfach hin und sag:

Code: Alles auswählen

if (divisor == 0)
{
printf ("Das Teilen durch 0 ist nicht möglich!");
getch();
break;
}
MfG +Fuss+

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Code Verbesserung in Rechenprog.

Beitrag von nufan » Fr Nov 21, 2008 2:28 pm

+Fuss+ hat geschrieben:Ich glaub ich geh einfach hin und sag:

Code: Alles auswählen

if (divisor == 0)
{
printf ("Das Teilen durch 0 ist nicht möglich!");
getch();
break;
}
Das break und das getch kannst du dir im if sparen, da du es schon im switch dabei hast :)
Und dann schreibst du noch ein else mit dem Code, der ausgeführt wird, wenn nicht durch 0 dividiert wird.

Noch ein Vorschlag: Wurzel aus einer negativen Zahl nicht möglich.

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Code Verbesserung in Rechenprog.

Beitrag von +Fuss+ » Fr Nov 21, 2008 2:38 pm

Die Sachen mit der Division funktioniert jetzt ("Das Dividieren durch 0 ist nicht möglich")!

Bei der Wurzel bin ich mir noch nicht sicher, aber ich glaube das es so gehen sollte:

Code: Alles auswählen

if (ausgang == ???)
printf ("Das Ziehen der Wurzel einer negativen Zahl ist nicht möglich");

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Code Verbesserung in Rechenprog.

Beitrag von nufan » Fr Nov 21, 2008 2:44 pm

+Fuss+ hat geschrieben:Die Sachen mit der Division funktioniert jetzt ("Das Dividieren durch 0 ist nicht möglich")!

Bei der Wurzel bin ich mir noch nicht sicher, aber ich glaube das es so gehen sollte:

Code: Alles auswählen

if (ausgang == ???)
printf ("Das Ziehen der Wurzel einer negativen Zahl ist nicht möglich");
ausgang == ???
Ähmm... nunja...
Du musst ja nur prüfen, ob die eingegebene Zahl kleiner 0 ist.

Code: Alles auswählen

if (eingabe < 0)
  printf ("Falsche Eingabe");

  else
    // Berechnung der Wurzel

Benutzeravatar
+Fuss+
Beiträge: 385
Registriert: Fr Nov 14, 2008 8:16 pm

Re: Code Verbesserung in Rechenprog.

Beitrag von +Fuss+ » Fr Nov 21, 2008 7:39 pm

Stimmt!!!
Wird gleich umgeschrieben...

Benutzeravatar
ProgrammierGenie
Beiträge: 7
Registriert: Do Mär 12, 2009 5:00 pm
Wohnort: Oberösterreich, Steyr
Kontaktdaten:

Re: Code Verbesserung in Rechenprog.

Beitrag von ProgrammierGenie » Fr Mär 13, 2009 3:53 pm

Also ich weiß ja das der Thread schon etwas älter is, aber ich würde einen Taschenrechner generell so schreiben, dass es egal ist welchen Operator (+, -, /, *) man eingibt!

Ich hab mal ein kleines Programm entwickelt, das nur die 4 Grundrechenarten kann!
Klammern kann es nicht ausrechnen...

Code: Alles auswählen

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


char a[] = { "+" }, b[] = { "-" }, c[] = { "*" }, d[] = { "/" };

int main(int argc, char *argv[])
{
    char zeichen_eingabe[5];
    double eingabe, eingabe1;

    printf ("Beliebige Rechnungen k\x94nnen durchgef\x81hrt werden\n");
    printf ("Nach JEDER Zahl und nach JEDEM Operator MUSS die Leertaste gedrueckt werden!!!\n");
    printf ("Best\x84tigen mit 'ENTER'\n");
    printf ("Beenden: 3x '0' eingeben\n");

     do
                 {
                   scanf ("%lf %s %lf", &eingabe, &zeichen_eingabe, &eingabe1);

                   if ((strcmp(a, zeichen_eingabe)) == 0)
                      printf ("%.2f + %.2f = %f\n\n", eingabe, eingabe1, eingabe + eingabe1);

                   else if ((strcmp(b, zeichen_eingabe)) == 0)
                      printf ("%.2f - %.2f = %f\n\n", eingabe, eingabe1, eingabe - eingabe1);

                   else if ((strcmp(d, zeichen_eingabe)) == 0)
                      printf ("%.2f / %.2f = %f\n\n", eingabe, eingabe1, eingabe / eingabe1);

                   else if ((strcmp(c, zeichen_eingabe)) == 0)
                      printf ("%.2f * %.2f = %f\n\n", eingabe, eingabe1, eingabe * eingabe1);
                 }while (eingabe != 0);
                 system("PAUSE");
                 return 0;
                 }
Das schöne ist man braucht dem Anwender nicht aufzufordern, er müsse für + die '1' drücken, für - die '2', ...

da hab ich ein weilchen dran gefeilt, funzt aber hervorragend! ;) :D


mfg Andi

hoffe das euch dieses Programm gefällt ;)
NICHT KLICKEN!!!

---Ihr seid alle Computer-Futzies!!! - Mich mitinbegriffen---

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Code Verbesserung in Rechenprog.

Beitrag von fat-lobyte » Fr Mär 13, 2009 4:15 pm

Schon nicht schlecht...
Allerdings gibts noch einige Probleme:

Erstens bekomme ich statt den umlauten nur Fragezeichen.

Zweitens: Wenn ich das Programm durch beende (3 mal die 0), dann bekomme ich eine Fehlermeldung:
Dein Programm hat geschrieben:sh: PAUSE: command not found
Drittens:
Wenn ich buchstaben eingebe dort wo Zahlen gefragt sind (oder umgekehrt), kommt das Programm in eine Endlosschleife.

Kompiliert mit: gcc (Debian 4.3.3-3) 4.3.3
Mein System: Debian GNU/Linux , Kernel 2.6.26-1-686
C- Bibliothek: glibc 2.9.4

Versuch mal draufzukommen, was nicht stimmt.
Haters gonna hate, potatoes gonna potate.

Benutzeravatar
ProgrammierGenie
Beiträge: 7
Registriert: Do Mär 12, 2009 5:00 pm
Wohnort: Oberösterreich, Steyr
Kontaktdaten:

Re: Code Verbesserung in Rechenprog.

Beitrag von ProgrammierGenie » Sa Mär 14, 2009 5:17 pm

hmm, bei mir klappt alles^^

möchte echt gern wissen wie du das machst! lol

is nur n C programm.
beispiel zum beenden:
0
0
0


so müsste man das eingeben, bei mir klappts so!

was hast du für n betriebssystem?
das liegt an dem befehl system("PAUSE")!!!

der bewirkt, dass das programm net gleich beendet sondern noch da steht: "Beliebige Taste drücken um fortzufahren", oder so ähnlich!!
lösche diesen befehl und probiers nochmal. ;)

wenn ich irgendwas eingebe, z.b. 354+625
kommt meins auch in ne endlosschleife!

man muss die leerzeichen beachten, und für buchstaben is das sowieso net gedacht ;)

mfg
NICHT KLICKEN!!!

---Ihr seid alle Computer-Futzies!!! - Mich mitinbegriffen---

Benutzeravatar
fat-lobyte
Beiträge: 1398
Registriert: Sa Jul 05, 2008 12:23 pm
Wohnort: ::1
Kontaktdaten:

Re: Code Verbesserung in Rechenprog.

Beitrag von fat-lobyte » Sa Mär 14, 2009 5:50 pm

ProgrammierGenie hat geschrieben:hmm, bei mir klappt alles^^
lol Gute Argumentation...
ProgrammierGenie hat geschrieben:möchte echt gern wissen wie du das machst!
Hab ich alles beschrieben.
ProgrammierGenie hat geschrieben:beispiel zum beenden:
0
0
0


so müsste man das eingeben, bei mir klappts so!
Hab ich verstanden. Das beenden klappt ja, zumindest dann wenn ichs richtig eingebe.
ProgrammierGenie hat geschrieben:was hast du für n betriebssystem?
Hab ich schon geschrieben:
fat-lobyte hat geschrieben:Kompiliert mit: gcc (Debian 4.3.3-3) 4.3.3
Mein System: Debian GNU/Linux , Kernel 2.6.26-1-686
C- Bibliothek: glibc 2.9.4
das liegt an dem befehl system("PAUSE")!!!

der bewirkt, dass das programm net gleich beendet sondern noch da steht: "Beliebige Taste drücken um fortzufahren", oder so ähnlich!!
lösche diesen befehl und probiers nochmal. ;)
Dann kommt die Fehlermeldung nicht. Aber sag mal, braucht man das denn unbedingt? Ich meine, wieso soll ich noch einmal eine Taste drücken wenn ich das Programm beenden will, wenn ich vorher gezwungen wurde 3 mal die 0 einzutippen?
wenn ich irgendwas eingebe, z.b. 354+625
kommt meins auch in ne endlosschleife!

man muss die leerzeichen beachten, und für buchstaben is das sowieso net gedacht ;)
Hm, ist die Endlosschleife etwa gewünschtes Verhalten? Was ist wenn der User sich einmal vertippt? Soll er dann mit einer in Ewigkeit überlasteten CPU für sein Verbrechen bestraft werden?
Haters gonna hate, potatoes gonna potate.

Antworten