Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Probleme beim Programmieren eines Rechners

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.04.2007, 12:41 Uhr
~popel
Gast


Hallo Leute

Hab angefangen die Sprache C++ zu lernen. Nun hab ich den Auftrag, einen kleinen Taschenrechner zu machen, welcher mit den vier Grundoperationen rechnet.
Das alles sollte ich nur mit dem printf und scanf befehl machen.
Es hat alles geklappt, ausser das mit dem Operationszeichen macht mir zu schaffen. Wenn ich es als char einlese und bei scanf("%c", &Operation); mache, überspringt er mir dieses Feld beim ausführen einfach.
Ich hab das jetzt so gelöst, dass ich Operation mit int einlese und der Addition die Zahl 1 zu ordner der Subtraktion die zahl 2 der Multiplikation die 3 und der Division die 4. Nun da das ein bisschen umständlich ist, hoffe ich ihr könnt mir weiterhelfen, damit man nacher die Operationszeichen direkt einlesen kann.

hier der code:


C++:
#include <stdlib.h>
#include <stdio.h>

float Operand1;
float Operand2;
float Resultat;
int Operation;

int main()
{

    printf("Erste Zahl eingeben\n");
    scanf("%f", &Operand1);
    printf
        ("Operation eingeben.\n\n fuer Addition die 1\n fuer Subtraktion die 2\n fuer Multiplikation die 3\n fuer Division die 4\n\n");
    scanf("%d", &Operation);
    printf("Zweite Zahl eingeben\n");
    scanf("%f", &Operand2);
    if (Operation == 1) {
        Resultat = Operand1 + Operand2;
    } else if (Operation == 2) {
        Resultat = Operand1 - Operand2;
    } else if (Operation == 3) {
        Resultat = Operand1 * Operand2;
    } else if (Operation == 4) {
        Resultat = Operand1 / Operand2;
    } else {
        printf("Ungueltiges Operations Zeichen\n\n");
    }

    if (Operation == 1) {
        printf("Resultat = %f\n\n", Resultat);
    } else if (Operation == 2) {
        printf("Resultat = %f\n\n", Resultat);
    } else if (Operation == 3) {
        printf("Resultat = %f\n\n", Resultat);
    } else if (Operation == 4) {
        printf("Resultat = %f\n\n", Resultat);
    } else {
        printf("Bitte versuchen sie es erneut\n\n");
    }

    return 0;
}



Bearbeitung von 0xdeadbeef:

code- in cpp-tags geändert, und den Code mal durch indent gejagt (und unten zum vollständigen Programm ergänzt), für bessere Lesbarkeit.


Dieser Post wurde am 29.04.2007 um 18:28 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.04.2007, 14:20 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


mit scanf lassen sich auch gleich 3 "Dinge" einlesen (also die ganze eingabe)

Dann weisst du das erste und das dritte ist ne Zahl und musst dir nur noch angucken was für ein operator das zweite ist.

Scanf ist auch nicht unbedingt geeignet. Besser wäre es vermutlich zunächst den ganzen String einzulesen und dann zu gucken was da so drin steht... Das ganze ist übrigens eher c als c++...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.04.2007, 17:57 Uhr
Suba Esel



Da ist sowieso ziemlicher Quatsch drin:

Zitat von popel:


C++:
if (Operation == 1 ){
         printf("Resultat = %f\n\n", Resultat);
         }
            else if (Operation == 2 ){
            printf("Resultat = %f\n\n", Resultat);
            }
                   else if (Operation == 3){
                   printf("Resultat = %f\n\n", Resultat);
                   }
                            else if (Operation == 4){
                            printf("Resultat = %f\n\n", Resultat);
                            }





Das bringt nichts - schreib einfach
C++:
printf("Resultat = %f\n\n", Resultat);

--
Simon

Dieser Post wurde am 29.04.2007 um 17:58 Uhr von Suba Esel editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.04.2007, 18:29 Uhr
0xdeadbeef
Gott
(Operator)


Aaaalso, wenn ich da mal drübergehen sollte:

C++:
#include <stdlib.h>
#include <stdio.h>

int main(void) {
  // Globale Variablen sollte man sich garnicht erst angewöhnen.
  // Das fliegt dir spätestens um die Ohren, wenn du mehrere Threads benutzt.
  float Operand1;
  float Operand2;
  float Resultat;
  int Operation;

  printf("Erste Zahl eingeben\n");
  scanf("%f", &Operand1);

  // Hier ist ein netter Trick für bessere Lesbarkeit:
  printf("Operation eingeben.\n"
         "\n"
         " fuer Addition die 1\n"
         " fuer Subtraktion die 2\n"
         " fuer Multiplikation die 3\n"
         " fuer Division die 4\n"
         "\n");
  scanf("%d", &Operation);
  printf("Zweite Zahl eingeben\n");
  scanf("%f", &Operand2);

  // Hier würd ich nen switch vorschlagen, der ist ne Ecke schneller.
  // Naja - ich würd da mit nem Array von Funktionspointern arbeiten, aber soweit sind wir hier noch nicht ;)
  switch(Operation) {
  case 1:
    Resultat = Operand1 + Operand2;
    break;
  case 2:
    Resultat = Operand1 - Operand2;
    break;
  case 3:
    Resultat = Operand1 * Operand2;
    break;
  case 4:
    Resultat = Operand1 / Operand2;
    break;
  default:
    printf("Ungueltiges Operations Zeichen\n\n");
  }

  // Das hier lässt sich mindestens so abkürzen:
  // Schöner wär natürlich, das direkt bei der Eingabe abzufangen
  if (Operation >= 1 && Operation <= 4) {
    printf("Resultat = %f\n\n", Resultat);
  } else {
    printf("Bitte versuchen sie es erneut\n\n");
  }

  return 0;
}


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 29.04.2007 um 18:29 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: