Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

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

 

Dreieck mit drei Variablen a, b und c (eingeteilt in die Bereiche

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.

1 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

Kommentare (1)

gressly 20. Juli 2015 11:03   reply report
Ich habe mir erlaubt, die Aufgabe etwas umzuschreiben, denn so wie es dastand, war die Lösung einfach und es gab immer eine Lösung.

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

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Mittel
Webcode: 7kgw-uozz
Autor: ()

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen