butterblume
Goto Top

Minicomputer

Aufgabe: Entwickeln Sie ein Programm, welches für zwei Operanden die mathematische Grundoperationen Addition, Subtraktion, Multiplikation und Division ausführt.

Hallo zusammen, ich habe diese Aufgabe versucht zu lösen. Nun ist es so, dass die zweite Eingabe also Operator wird einfach übersprungen und ich weiss nicht warum. Kann mir jemand helfen?
Danke, lg, Kristina

/* IMPORT ---------------------- */
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

/* HAUPTPROGRAMM --------------- */
int main()
 {
  /* VARIABLEN (lokal) --------- */
  int Operand_1;
  int Operand_2;
  char Operator;
  float Resultat;

  /* Intro --------------------- */
  printf("Dies ist die Aufgabe M103_A_409: Minicomputer \n\n");  
  printf ("Zum Beenden Q eingeben");  
  
  /*Bildschirmausgabe*/
  printf("\n\nGeben Sie den ersten Operanden ein: ");  
  scanf("%i",&Operand_1);  
  printf("\nGeben Sie den Operator ein: ");  
  scanf("%c",&Operator);  
  printf("\n\nGeben Sie den zweiten Operanden ein: ");  
  scanf("%i",&Operand_2);  
        
     /* gewählter Menupunkt ausführen*/
     
     if (Operator=='+') {  
     Resultat = Operand_1 + Operand_2;
     printf("Ergebnis: %2.f", Resultat);  
     }
     
     else if (Operator=='-') {  
     Resultat = Operand_1 - Operand_2;
     printf("Ergebnis: %2.f", Resultat);  
     }
     
     else if (Operator=='*') {  
     Resultat = Operand_1 * Operand_2;
     printf("Ergebnis: %2.f", Resultat);  
     }
     
     else if (Operator=='/') {  
     Resultat = Operand_1 / Operand_2;
     printf("Ergebnis: %2.f", Resultat);  
     }
     
     else {
     printf ("Fehler");  
     }
  
  system ("PAUSE");  
  return 0;
 }

Hab's geschafft <edit>
*****************************************************************************/
/* IMPORT ---------------------- */
#include <stdlib.h>
#include <stdio.h>
#include <math.h>

/* HAUPTPROGRAMM --------------- */
int main()
 {
  /* VARIABLEN (lokal) --------- */
  int Operand_1;
  int Operand_2;
  char Operator;
  float Resultat;

do {
  /* Intro --------------------- */
  printf("\n\nDies ist die Aufgabe M103_A_409: Minicomputer \n\n");  
  printf ("Zum Beenden beim Operator Q eingeben");  
  
  /*Bildschirmausgabe*/
  printf("\n\nGeben Sie den ersten Operanden ein: ");  
  scanf("%i",&Operand_1);  
  printf("\nGeben Sie den Operator ein: ");  
  scanf("%s",&Operator);  
  printf("\nGeben Sie den zweiten Operanden ein: ");  
  scanf("%i",&Operand_2);  
        
     /* gewählter Menupunkt ausführen*/
     
     if (Operator=='+') {  
     Resultat = Operand_1 + Operand_2;
     printf("\nErgebnis: %2.f", Resultat);  
     printf ("\n\n------------------------------------------\n");  
     }
     
     else if (Operator=='-') {  
     Resultat = Operand_1 - Operand_2;
     printf("\nErgebnis: %2.f", Resultat);  
     printf ("\n\n------------------------------------------\n");  
     }
     
     else if (Operator=='*') {  
     Resultat = Operand_1 * Operand_2;
     printf("\nErgebnis: %2.f", Resultat);  
     printf ("\n\n------------------------------------------\n");  
     }
     
     else if (Operator=='/') {  
     Resultat = Operand_1 / Operand_2;
     printf("\nErgebnis: %2.f", Resultat);  
     printf ("\n\n------------------------------------------\n");  
     }
     else if (Operator=='q') {  
     printf("\n\nBye Bye Bye", Resultat);  
     printf ("\n\n------------------------------------------\n");  
     }
     
     else {
     printf ("\n\nFehler\n\n");  
     printf ("\n\n------------------------------------------\n");  
     }
  
  } while (Operator != 'q' and Operator !='Q');  
  
  system ("PAUSE");  
  return 0;
 }
/*****************************************************************************/

<edit> Hallo Zusammen, ich möchte dieses Programm mit einem switch Modus starten...z.b. "minicomputer /d"...so ein debugger....ich weiss aber nicht, wie es geht...kann mir jemand helfen?? ich weiss nicht was ich da programmieren muss, auf jeden fall muss ich ein test durchführen.

danke für ihre hilfe....

Content-Key: 58180

Url: https://administrator.de/contentid/58180

Printed on: April 19, 2024 at 20:04 o'clock

Member: Kevin-P
Kevin-P May 04, 2007 at 07:41:47 (UTC)
Goto Top
hi,

versuch mal nach jedem einlesen einer eingabe, den tastaturpuffer zu leeren, zB. mit

fflush(stdin);

sonst hast du nach der ersten eingabe immer ein "\n" im puffer (vom return drücken), und das wird automatisch als 2. eingabe gewertet! deswegen "überspringt" er es nicht, er hat halt sozusagen schon ein 2. zeichen.


gruß,
Kevin
Member: miniversum
miniversum May 07, 2007 at 17:51:50 (UTC)
Goto Top
Das mit den Argumenten ist ganz einfach.
Die main Funktion in C sieht ja eigentlich so aus:
int main(int argc, char *argv)
In der Variablen argc steht drin wie viele Argumente übergeben wurden (durch ein " " getrennt)
Die Argumente an sich stehen dann im Array argv, welches eben die größe argc besitzt.
argv ist das Dateineme (bzw. mit Pfad wenn so aufgerufen).
Ab argv[1] kommen dan alle Argumente.

Kannst ja mal Folgenden Sourcecode Compilieren und ausprobieren. Dann siehst du vielleicht besser wie es geht.
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv)
{
int i;  
  printf ("Anzahl der Argumente: %i \n",argc-1);  
  for ( i=0 ; i<argc ; i++ )
  {
     printf ("Argument %i: %s \n",i,argv[i]);  
  }
  
  system("PAUSE");	  
  return 0;
}
miniversum