www.vorkurse.de
Ein Projekt von vorhilfe.de
Die Online-Kurse der Vorhilfe

E-Learning leicht gemacht.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Forenbaum
^ Forenbaum
Status Mathe-Vorkurse
  Status Organisatorisches
  Status Schule
    Status Wiederholung Algebra
    Status Einführung Analysis
    Status Einführung Analytisc
    Status VK 21: Mathematik 6.
    Status VK 37: Kurvendiskussionen
    Status VK Abivorbereitungen
  Status Universität
    Status Lerngruppe LinAlg
    Status VK 13 Analysis I FH
    Status Algebra 2006
    Status VK 22: Algebra 2007
    Status GruMiHH 06
    Status VK 58: Algebra 1
    Status VK 59: Lineare Algebra
    Status VK 60: Analysis
    Status Wahrscheinlichkeitst

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "C/C++" - Simpler Taschenrechner in C
Simpler Taschenrechner in C < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Simpler Taschenrechner in C: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 17:19 Fr 06.05.2011
Autor: Nagelfar

Aufgabe
Vom Benutzer sollen nacheinander eine natuerliche Zahl a, eines der Zeichen + oder - und
eine weitere natuerliche Zahl b abgefragt werden. Anschliessend soll auf dem Bildschirm ein
Text erscheinen, der die Rechenaufgabe a + b bzw. a - b zusammen mit dem entsprechenden
Ergebnis ausgibt.
Wird ein anderes Zeichen als + oder - eingegeben, so soll stattdessen eine Warnmeldung erscheinen, die die verlangte Rechenoperation als ungueltig beschreibt.

Hallo =),
ich versuche gerade diese Programmieraufgabe zu lösen. Ein großes Problem stellt allerdings die Abfrage/Eingabe  des '+' bzw. des "-" dar. Sowas kam in Vorlesung/Übung noch nicht vor (jedenfalls nicht so, dass es ein Programmiernewbie wie ich es vernehmen könnte).
Hat das irgendetwas mit switch/case/default zu tun? Oder bin ich da auf dem Holzpfad?
Vielen Grüße
Manolo

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Simpler Taschenrechner in C: Antwort
Status: (Antwort) fertig Status 
Datum: 19:22 Fr 06.05.2011
Autor: fencheltee


> Vom Benutzer sollen nacheinander eine natuerliche Zahl a,
> eines der Zeichen + oder - und
>  eine weitere natuerliche Zahl b abgefragt werden.
> Anschliessend soll auf dem Bildschirm ein
>  Text erscheinen, der die Rechenaufgabe a + b bzw. a - b
> zusammen mit dem entsprechenden
>  Ergebnis ausgibt.
>  Wird ein anderes Zeichen als + oder - eingegeben, so soll
> stattdessen eine Warnmeldung erscheinen, die die verlangte
> Rechenoperation als ungueltig beschreibt.
>  Hallo =),
>  ich versuche gerade diese Programmieraufgabe zu lösen.
> Ein großes Problem stellt allerdings die Abfrage/Eingabe  
> des '+' bzw. des "-" dar. Sowas kam in Vorlesung/Übung
> noch nicht vor (jedenfalls nicht so, dass es ein
> Programmiernewbie wie ich es vernehmen könnte).
>  Hat das irgendetwas mit switch/case/default zu tun? Oder
> bin ich da auf dem Holzpfad?

>  Vielen Grüße
> Manolo
>  
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.

hallo, da c bei eingaben der zahlen und anschließender betätigung der enter taste, diese enter taste als neues zeichen einliest, muss man hier fflush(stdin); benutzen. du kannst es ja mal rauskommentieren, um zu verstehen, warum es drin ist. weiterhin kann man hier wie ich denke leider nicht häppchenweise helfen, so poste ich mal den code
1: int main() {
2: int a,b;
3: char rechnung;
4: printf("a eingeben: ");
5: scanf("%d",&a);
6: fflush(stdin);
7: printf("\n+ oder -: ");
8: scanf("%c",&rechnung);
9: if (rechnung=='+' || rechnung=='-') {
10: printf("\nb eingeben: ");
11: scanf("%d",&b);
12: printf("%d %c %d = %d", a, rechnung, b, (rechnung=='+') ? a+b : a-b);
13: }
14: else { printf("fehler!"); }
15: getch();
16: return 0;
17: }

in zeile 9 wird auf den operator geprüft. die besonderheit liegt an den kleinen ''. denn sonst wird der inhalt als zahl/bitfolge interpretiert, nicht als ascii zeichen, welches sich dahinter verbirgt.
http://www.torsten-horn.de/techdocs/ascii.htm

zeile 12 habe ich mit dem []ternären operator gelöst um auf weitere if/else kombinationen zu verzichten.
versuche den code zu verstehen, bei fragen meldest du dich wieder

gruß tee

Bezug
                
Bezug
Simpler Taschenrechner in C: Problem mit fflush und getch
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:32 Sa 07.05.2011
Autor: Nagelfar

Hey.
Erstmal vielen Dank für deine Antwort.
Ich hab's mal so ausprobiert - und bekam eine Fehlermeldung bezgl. getch(): undefined reference to getch.
Hab dann mal getch() weggelassen. Man konnte dann a eingeben; danach aber kam "+ oder -:Fehler!" und das Programm wurde geschlossen.
Bin etwas ratlos.
Muss ich irgendwas includen?
Ist es von Bedeutung, dass ich Ubuntu nutze?




Bezug
                        
Bezug
Simpler Taschenrechner in C: Reihenfolge geändert!
Status: (Frage) beantwortet Status 
Datum: 13:42 Sa 07.05.2011
Autor: Nagelfar

Hey.
Ich hab' jetzt mal die Reihenfolge geändert.
Man soll zuerst + oder - eingeben. Dann habe ich zusätzlich die eingabe von a in die if-Schleife mitgenommen. Außerdem habe ich getchar() verwendet. fflush(stdin) habe ich weggelassen; hat sich nichts veränder!
Und tata: Alles funktioniert! WARUM?



Bezug
                                
Bezug
Simpler Taschenrechner in C: getchar()
Status: (Frage) beantwortet Status 
Datum: 13:51 Sa 07.05.2011
Autor: Nagelfar

Man braucht auch getchar() nicht.
Soll der Befehl bei beliebiger Taste das Programm schließen?
Was macht getch()?

Bezug
                                        
Bezug
Simpler Taschenrechner in C: Antwort
Status: (Antwort) fertig Status 
Datum: 14:52 Sa 07.05.2011
Autor: fencheltee


> Man braucht auch getchar() nicht.
>  Soll der Befehl bei beliebiger Taste das Programm
> schließen?
>  Was macht getch()?

hallo,
getch/getchar sorgt dafür, dass das programm nach der letzten ausgabe (printf) nicht direkt wieder zugeht, sondern offen bleibt, bis eine taste gedrückt wird.
ob das unter nicht win-systemen auch so ist, weiss ich jetzt leider nicht

gruß tee

Bezug
                                                
Bezug
Simpler Taschenrechner in C: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 15:02 Sa 07.05.2011
Autor: felixf

Moin tee,

>  getch/getchar sorgt dafür, dass das programm nach der
> letzten ausgabe (printf) nicht direkt wieder zugeht,
> sondern offen bleibt, bis eine taste gedrückt wird.

das ist ein Problem deiner Entwicklungsumgebung. Wenn man das Programm ganz ordentlich in einer Kommandozeile ausfuehrt, passiert das nicht und das getch ist ueberfluessig :)

LG Felix


Bezug
                                
Bezug
Simpler Taschenrechner in C: Antwort
Status: (Antwort) fertig Status 
Datum: 15:05 Sa 07.05.2011
Autor: NoAim



fflush ging bei meinem Ubuntu nicht! (10.10) stattdessen habe ich __fpurge(stdin) genutzt. das braucht man auch nur um den buffer zu löschen - weis nicht obs unbedingt notwendig ist

Bezug
                                        
Bezug
Simpler Taschenrechner in C: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:31 Sa 07.05.2011
Autor: felixf

Moin!

> fflush ging bei meinem Ubuntu nicht! (10.10)

Was meinst du mit "ging nicht"? Hat der Compiler gemeckert (falls ja: hast du <stdio.h> eingebunden)? Oder ist nicht das passiert, was sollte?

LG Felix


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "C/C++"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorkurse.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]