Autor Beitrag
David_M
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 04.05.11 21:35 
Hi,
ich soll für die Uni einen einfachen Taschenrechner in C programmieren. Das wäre insofern auch kein Problem, aber nun soll ich den Operator mit einem getchar einlesen und diesen später im Ergebnis ausgeben.

Heisst ich muss mit getchar ein + Zeichen einlesen
und dann später mit printf dieses Zeichen wieder ausgeben in der Form von z.B. 2+2=4

Mir ist durchaus bewusst, dass ich z.B. in printf das Pluszeichen schreiben könnte, dies ist aber leider nicht zulässig.

Mein Problem ist das getchar ja einen int zurückgibt und damit drück ich zwar auf Plus übermittelt wird aber 10 und auch wieder ausgegeben.

Kann mir bitte jemand erklären wie ich ein solches Zeichen richtig einlese und dann auch wieder ausgebe.

Danke


Moderiert von user profile iconKha: Topic aus Basistechnologien verschoben am Do 05.05.2011 um 01:22
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 04.05.11 21:47 
Hallo und :welcome:

Wie wäre es, wenn du deinen aktuellen Quelltext dazuschreibst? Sonst kann dir niemand sagen was daran falsch ist.

Hmm, ja, ich habe seit Jahren kaum was mit C gemacht, aber das sollte so gehen:
ausblenden C#-Quelltext
1:
2:
char MyChar = getchar(); 
printf("Eingegeben wurde %c!\n", MyChar);
David_M Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Mi 04.05.11 22:00 
Danke auch wenns mir leider nicht weiterhilft, aber vielleicht liegt das Problem auch ganz woanders. Wenn jemand weiss wie man es Einbaut, dass das Programm am Schluss nachfrägt ob es nochmal von vorne laufen soll (das geht mit printf und ist klar wie) und dann dies auch wirklich tut (geht glaubig mit do while Schleife weiss aber nicht so ganz wie ich die setzen soll).

Hier mal mein Code

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:
#include <stdio.h>
float Summe(float,float,float);
float Subtraktion(float,float,float);
float Multiplikation(float,float,float);
float Division(float,float,float);
 int main (void)
 {
   float a;
   float b;
   float c;
   printf("Geben sie einen Wert für a ein\n");
     scanf("%f",&a);
   printf("Geben sie einen Wert für b ein\n");
   scanf("%f",&b);
   printf("Bitte geben sie den Operanten ein\n");
   char Operant=getchar();
   if(b>0)
   {
       c=Summe(a,b,c);
       c=Subtraktion(a,b,c);
       c=Multiplikation(a,b,c);
       c=Division(a,b,c);
       printf("Das Ergebnis von %f %c %f = %f\n",a,Operant,b,c);
    }
    else
        {
          printf("0 ist kein Zulässiger Wert für b\n");
        }
   return 0;
 }
float Summe(float a,float b,float c)
{
  c=a+b;
  return(c);
}
float Subtraktion(float a,float b,float c)
{
  c=a-b;
    return(c);
}
float Multiplikation(float a,float b,float c)
{
  c=a*b;
  return(c);
}
float Division(float a,float b,float c)
{
  c=a/b;
  return(c);
}


Moderiert von user profile iconKha: C#-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 05.05.11 05:41 
Du benutzt Operant gar nicht und packst einfach nacheinander die verschiedenen Ergebnisse für die Operationen in c rein und gibst am Ende das Ergebnis der Division als Ergebnis der eigentlichen Operation aus. :gruebel:

Wie wäre es, wenn du den Wert von Operant abfragst? Dann kannst du nämlich die Rechnung durchführen, die durch den Operanden festgelegt wurde. ;-)
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
switch(Operant)
{
    case '+':
        c = Summe...
    break;
...