Rechendreieck (Algorithmen)
Schreiben Sie Programm, das nach Eingabe der drei Variablen a, b und c die Felder oben, links unten und rechts unten berechnet. Dabei gilt:
oben + links unten = a
oben + rechts unten = c
links unten + rechts unten = b
Zusatzaufgabe: Schreiben Sie das Programm für die Primarschule so um, dass nur nicht-negative ganze Zahlen zugelassen sind (0, 1, 2, 3, 4, ...). Sollte es keine ganzzahlige Lösung geben, so soll dies ausgegeben werden.
0 Kommentare
7 Lösung(en)
def dreieck():
while True:
try:
a_number = int(input("Zahl oben eingeben: "))
b_number = int(input("Zahl unten links eingeben: "))
c_number = int(input("Zahl unten rechts eingeben: "))
list_of_items = []
list_of_items.append(a_number)
list_of_items.append(b_number)
list_of_items.append(c_number)
ergebnis = False
for a in range(max(list_of_items)):
for b in range(max(list_of_items)):
for c in range(max(list_of_items)):
if a+b == a_number and a+c == b_number and b+c == c_number:
ergebnis = True
print ("links unten ist: {0}, oben ist {1}, rechts unten ist {2}".format (a, b, c))
if ergebnis == False:
print("Achtung: Kein Ergebnis")
except:
print("Achtung: Falsche Eingabe")
dreieck()
Lösung von: Py Thon ()
#ohne Schleifen
def dreieck(a, c, b):
summe = (a+ c+ b)/2
print ("Unten rechts: {0}".format(summe-a))
print ("Unten links: {0}".format(summe-c))
print ("Oben: {0}".format(summe-b))
dreieck(30,37,43)
Lösung von: Py Thon ()
class Program
{
static void Main(string[] args)
{
dreieck(30, 37, 43);
}
static void dreieck(double links, double rechts, double unten)
{
double summe = ((links + rechts + unten) / 2);
Console.WriteLine("Unten rechts:{0} ", (summe-links));
Console.WriteLine("Unten links:{0} ", (summe - rechts));
Console.WriteLine("Oben: {0}", (summe - unten));
Console.ReadKey();
}
}
Lösung von: Py Thon ()
package ch.programmieraufgaben.iteration.rechendreieck;
// Input: see github.com/pheek/javaInput
import static eu.gressly.io.utility.Input.setAddQuestion;
import static eu.gressly.io.utility.Input.inputDouble;
/**
* Programmieraufgabe "Rechendreieck" Web-Code 7kgw-uozz
* @version 0.1 (Jul 20, 2015)
* @author Philipp Gressly Freimann
* (philipp.gressly@santis.ch)
*/
public class Rechendreieck {
public static void main(String[] args) {
new Rechendreieck().top();
}
void top() {
setAddQuestion("Bitte %s eingeben: ");
double a, b, c;
a = inputDouble("a");
b = inputDouble("b");
c = inputDouble("c");
double halbeSumme = (a+b+c)/2.0;
double oben, links, rechts;
oben = halbeSumme - b;
links = halbeSumme - c;
rechts = halbeSumme - a;
if(! natuerlich(oben) || !natuerlich(links) || !natuerlich(rechts)) {
System.out.println("Es existiert keine natürliche Lösung:");
ausgabe(oben, links, rechts, false);
} else {
System.out.println("Lösung:");
ausgabe(oben, links, rechts, true );
}
}
// Hilfsfunktionen (auch) für die Zusatzaufgabe:
// prüfe, ob ganzzahlig und nicht negativ (Null ist ok)
boolean natuerlich(double z) {
if(z < 0) {
return false;
}
// offensichtliche Gleichheit erspart die nachfolgende "kompliziertere"
// Rechnung:
if((int) z == z) {
return true;
}
// Zahl "fast gleich" gerundete Zahl?
return diff(z, runden(z)) < 0.000000001;
}
int runden(double z) {
return (int) (z + 0.5); // negative Zahlen sind ausgeschlossen
}
double diff(double a, double b) {
return Math.abs(a - b); // hier: abs = "Abstand"
}
void ausgabe(double oben, double links, double rechts, boolean natuerlich) {
ausgabe("Oben " , oben , natuerlich);
ausgabe("Links" , links , natuerlich);
ausgabe("Rechts", rechts, natuerlich);
}
void ausgabe(String markierung, double wert, boolean natuerlich) {
System.out.print(markierung + ": ");
if(natuerlich) {
System.out.println("" + (int) wert);
} else {
System.out.println("" + wert);
}
}
} // end of class Rechendreieck
Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)
// eingabemaske
document.write(
'<input id="a" type="number" value="30" onchange="compute()"> links<br>' +
'<input id="b" type="number" value="37" onchange="compute()"> unten<br>' +
'<input id="c" type="number" value="43" onchange="compute()"> rechts' +
'<p id="out"></p>'
);
function sumTriangleForPrimarySchool(a, b, c) {
function isSuitable(num) {
return (num >= 0 && isFinite(num) && (Math.floor(num) === num));
}
var sum = (a + b + c) / 2;
if (isSuitable(sum-a) && isSuitable(sum-b) && isSuitable(sum-c))
return (
"Oben: " + (sum-b) + "<br>" +
"Unten links: " + (sum-c) + "<br>" +
"Unten rechts: " + (sum-a));
return "Rechendreieck nicht geeignet für die Primarstufe.";
}
function compute() {
var a = parseInt(document.getElementById("a").value),
b = parseInt(document.getElementById("b").value),
c = parseInt(document.getElementById("c").value);
document.getElementById("out").innerHTML = sumTriangleForPrimarySchool(a, b, c);
} // lissalanda@gmx.at
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
// F#
let a = 30
let b = 37
let c = 43
let summe = (a + b + c) / 2
printfn "links unten = %d" (summe - c)
printfn "oben = %d" (summe - b)
printfn "rechts unten = %d" (summe - a)
Lösung von: Vural Acar ()
def rechendreieck():
a = int(input('a: '))
b = int(input('b: '))
c = int(input('c: '))
for x in range(min(a, b)):
for y in range(min(a, c)):
for z in range(min(b, c)):
if x + y == a and x + z == c and y + z == b:
print('''\
{}
{} {}
{} {}
{}'''.format(x, a, c, y, z, b))
return True
return False
Lösung von: Bester Mensch (Class)
Verifikation/Checksumme:
a = 30
b = 37
c = 43
links unten = 12
oben = 18
rechts unten = 25
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung: