You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
2.6 KiB
120 lines
2.6 KiB
#include <stdio.h>
|
|
#include <math.h>
|
|
#include "minirechner.h"
|
|
|
|
int run_minirechner() {
|
|
float zahl1, zahl2, erg;
|
|
int r_op;
|
|
|
|
printf("Rechenoperationen: \n");
|
|
printf("<1> addieren\n<2> subtrahieren\n<3> multiplizieren\n<4> dividieren\n<5> rest\n<6> groesster gemeinsammer Teiler\n<7> kleinstes gemeinsammes Vielfaches\n");
|
|
|
|
scanf("%d", &r_op);
|
|
|
|
printf("Zahl 1: ");
|
|
scanf("%f", &zahl1);
|
|
|
|
printf("Zahl 2: ");
|
|
scanf("%f", &zahl2);
|
|
|
|
switch (r_op) {
|
|
// Der Rechner gibt die gegebenen Zahlen (im Sinne der Optik) mit einer und das Ergebnis mit zwei Nachkommastellen aus.
|
|
case 1:
|
|
erg = addieren(zahl1, zahl2);
|
|
printf("%.1f + %.1f = %.2f\n", zahl1, zahl2, erg);
|
|
break;
|
|
|
|
case 2:
|
|
erg = subtrahieren(zahl1, zahl2);
|
|
printf("%.1f - %.1f = %.2f\n", zahl1, zahl2, erg);
|
|
break;
|
|
|
|
case 3:
|
|
erg = multiplizieren(zahl1, zahl2);
|
|
printf("%.1f * %.1f = %.2f\n", zahl1, zahl2, erg);
|
|
break;
|
|
|
|
case 4:
|
|
erg = dividieren(zahl1, zahl2);
|
|
if (erg != 0) {
|
|
printf("%.1f / %.1f = %.2f\n", zahl1, zahl2, erg);
|
|
}
|
|
break;
|
|
|
|
case 5:
|
|
erg = rest(zahl1, zahl2);
|
|
printf("%.1f / %.1f rest= %.2f\n", zahl1, zahl2, erg);
|
|
break;
|
|
|
|
case 6:
|
|
erg = groesster_gemeinsammer_teiler(zahl1, zahl2);
|
|
printf("%.2f\n", erg);
|
|
break;
|
|
|
|
case 7:
|
|
erg = kleinstes_gemeinsammes_vielfaches(zahl1, zahl2);
|
|
printf("%.2f\n", erg);
|
|
break;
|
|
|
|
default:
|
|
printf("Bitte verwenden sie eine der gegebenen Ziffern");
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
//addieren
|
|
float addieren(float a, float b) {
|
|
return a + b;
|
|
}
|
|
|
|
//subtrahieren
|
|
float subtrahieren(float a, float b) {
|
|
return a - b;
|
|
}
|
|
|
|
//multiplizieren
|
|
float multiplizieren(float a, float b) {
|
|
return a * b;
|
|
}
|
|
|
|
//dividieren
|
|
float dividieren(float a, float b) {
|
|
if (b == 0) {
|
|
printf("Bitte nicht durch 0 dividieren\n");
|
|
return 0;
|
|
}
|
|
else {
|
|
return a / b;
|
|
}
|
|
}
|
|
|
|
//rest
|
|
float rest(float a, float b) {
|
|
return fmod(a, b);
|
|
}
|
|
|
|
// groesster gemeinsammer Teiler
|
|
float groesster_gemeinsammer_teiler(float a, float b) {
|
|
float gr, kl;
|
|
float rest = 1;
|
|
if (a > b) {
|
|
gr = a;
|
|
kl = b;
|
|
}
|
|
else {
|
|
gr = b;
|
|
kl = a;
|
|
}
|
|
while (rest != 0) {
|
|
rest = fmod(gr, kl);
|
|
gr = kl;
|
|
kl = rest;
|
|
}
|
|
return gr;
|
|
}
|
|
|
|
// kleinstes gemeinsammes Vielfaches
|
|
float kleinstes_gemeinsammes_vielfaches(float a, float b) {
|
|
float erg = a * b / groesster_gemeinsammer_teiler(a, b);
|
|
return erg;
|
|
}
|