Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Tischdecken (Tischtücher) (Selektionen)

Frau Schneider muss oft Tischdecken, Tischtücher und Tafeltücher nähen.

Sie kennt jeweils Länge und Breite des Tisches (oder bei runden Tischen deren Durchmesser). Für das Tuch muss Sie jedoch auf allen Seiten noch etwas hinzugeben, denn einerseits soll das Tischtuch auf jeder Seite genau 20cm herunterhängen und sie braucht noch 2cm Zugabe für das Bündchen.

In der Länge (nicht aber in der Breite) wird der Stoff beim 1. Waschen noch um beinahe 5% eingehen, also gibt sie hier jeweils 5% der Länge hinzu. Runden Sie danach auf den nächsten cm auf.

Schreiben Sie nun die App für Frau Schneider, bei welcher sie erstens eingibt, ob es sich um einen runden oder um einen rechteckigen Tisch handelt. Beim Runden gibt sie dann den Durchmesser des Tisches ein, wohingegen Sie beim Recheckigen sowohl Länge als auch Breite eingibt. Achtung: Geben Sie Frau Schneider -- sie sollte es zwar wissen -- nochmals an, welches Maß (Länge, Breite) um 5% erweitert wird.

Am Schluss gibt Ihr Programm an, wie viel Stoff (Länge x Breite) sie effektiv kaufen muss, damit das Tuch inklusive Bündchen (2cm) trotzdem noch 20cm herunterhängen wird (Nicht vergessen: Länge am Schluss noch 5% zugeben, wegen dem Waschen).

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

8 Lösung(en)

package ch.programmieraufgaben.selektion;

import java.util.Scanner;

/**
 * TODO document Class
 * @author Philipp Gressly (phi@gressly.ch)
 */
/*
 * History: first Implementation: Jul 25, 2013
 * Bugs   :
 */
public class Tischdecken {
  public static void main(String[] args) {
    new Tischdecken().top();
  }
  
  void top() {
    boolean istRund;
    int tischBreite, tischLaenge;
    istRund = einlesenWahr("Ist das Tischtuch rund");
    if(istRund) {
       int durchmesser = einlesenCM("Durchmesser des Tisches");
       tischBreite = durchmesser;
       tischLaenge = durchmesser;
    } else {
       tischBreite = einlesenCM("Breite des Tisches eingeben (nicht eingehendes Maß)");
       tischLaenge = einlesenCM("Laenge des Tisches eingeben (eingehendes Maß)");
    }
    // herunterhängende Seiten (je 20cm)
    int tuchBreite = tischBreite + 20 + 20;
    int tuchLaenge = tischLaenge + 20 + 20;
    // Bundzugabe (je 2cm)
    tuchBreite = tuchBreite + 2 + 2;
    tuchLaenge = tuchLaenge + 2 + 2;
    // + 5% Zugabe wegen 1. Wäsche, dann auf nächsten cm aufrunden.
    tuchLaenge     = (int) (0.9999 + 1.05 * tuchLaenge);
    System.out.println("Der Stoff für dieses Tischtuch muss " + tuchBreite + "cm breit und ");
    System.out.println(tuchLaenge + "cm lang (hier wurde bereits 5% hinzugefügt) eingekauft werden.");
    
    
  }
  
  Scanner sc = new Scanner(System.in);
  int einlesenCM(String kante) {
      System.out.println("Bitte " + kante + " in cm eingeben: ");
      String ks = "";
      int    ki = 0;
      while("".equals(ks)) {
          ks = sc.nextLine();
      }
      try{
        ki = Integer.parseInt(ks);  
      } catch(NumberFormatException nfe) {
        ki = 0;
      }
      return ki;
  }
  
  boolean einlesenWahr(String frage) {
      System.out.println(frage+ "? ");
      String antw = sc.nextLine().trim();
      return ! ("n".equals(antw.trim().toLowerCase().substring(0, 1)));
  }
  
}  // end of class Tischdecken
                

Lösung von: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

import math

form = input("Welche Form hat der Tisch? Rechteckig(R) oder Rund(r)?")

if form == "R":
    l = float(input("Länge: "))
    b = float(input("Breite: "))
    print("Länge: ", math.ceil((l+44)+((l+44)*0.05)), "Breite: ",math.ceil(b+44))
else:
    d = float(input("Durchmesser: "))
    print("Breite: ", math.ceil(d+44), "Länge: ", math.ceil((d+44)+(d+44)*0.05))

                

Lösung von: Py Thon ()

kindOfTable = raw_input('runder Tisch (r) oder eckiger Tisch (e): ')
if kindOfTable=='e':
	length=int(raw_input('Laenge: '))
	width=int(raw_input('Breite: '))
	print 'Laenge %d cm, Breite %d cm' % ( round((length+44)*1.05,0), round(width+44,0))
elif kindOfTable=='r':
	diameter=int(raw_input('Durchmesser: '))+44
	print 'Laenge %d cm, Breite %d cm' % (round(diameter,0), round(diameter*1.05,0))
                

Lösung von: Py Bert ()

#include <iostream>
using namespace std;

int main()
{
    char  form;
    float l, b, d;

    cout <<"Welche Form hat der Tisch=? Rechteckig(R) oder Rund(r)?"<<endl;
    cin >>form;
    if (form == 'R'){
            cout<<"Eingabe der Länge"<<endl;
            cin>> l;
            cout<<"Eingabe der Breite"<<endl;
            cin>>b;
            cout<<"Länge:" <<((l+44)+((l+44)*0.05))<<endl;
            cout<<"Breite: "<<(b+44)<<endl;
        }
    else{

            cout<<"Eingabe des Durchmessers: "<<endl;
            cin>>d;
            cout<<"Breite: " <<d+44<<endl;
            cout<<"Länge: " <<((d+44)+((d+44)*0.05))<<endl;
        }
}

                

Lösung von: Py Thon ()

import math

def boolinput(prompt):
    while True:
        r = input(prompt+" [J/N]: ")
        if r == "J":
            return True
        elif r == "N":
            return False
        else:
            pass

def floatinput(prompt):
    while True:
        r = input(prompt)
        try:
            r = float(r)
        except:
            pass
        else:
            return r

def tablecloth(length, width=None):
    if width is None:
        width = length
    add = 2*(20+2)
    length += add
    width += add
    length *= 1.05
    print("Die Laenge wird um 5% erhöht, um dem Eingehen entgegenzuwirken")
    return length, width

circular = boolinput("Ist der Tisch rund?")
if circular:
    diameter = floatinput("Geben Sie den Durchmesser (in cm) ein: ")
    length, width = tablecloth(diameter)
else:
    length = floatinput("Geben Sie die Laenge (in cm) ein: ")
    width = floatinput("Geben Sie die Breite (in cm) ein: ")
    length, width = tablecloth(length, width)
length = math.ceil(length)
width = math.ceil(width)
print("Die Tischdecke hat ein Laenge von {}cm und eine Breite von {}cm".format(length, width))

                

Lösung von: Karl Welzel ()

function clothCalc(wid, len) {
   len = len || wid;    // runder tisch
   console.log("Breite: " + (wid+44));
   console.log("Länge: " + (Math.ceil((len + 44) * 1.05)) + 
      " (incl. 5% Zugabe)");
}

if (confirm("Ist es ein runder Tisch?")) 
   clothCalc(parseFloat(prompt("Durchmesser des Tisches:")));
else {
   var m = prompt("Maße des Tisches (Breite x Länge):");
   clothCalc(parseFloat(m.split("x")[0]), parseFloat(m.split("x")[1]));
}
                

Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)

// NET 6.x | C# 10.x | VS-2022
// Ich gehe mal davon aus, dass der Stoff vor dem Nähen gewaschen wird
// und somit das Einlaufen auch für den Stoff der runden Tücher gilt.

Size GetClothSize(Size table) =>
    new (table.Typ, Math.Round((table.LengthOrRadius + 44) * 1.05, 1), 44 + (table.Typ switch { Type.oval => table.LengthOrRadius, _ => table.Width }));

void PrintClothSize(Size table, Size cloth) =>
    Console.WriteLine($"{cloth.Typ} table L: {table.LengthOrRadius} W: {(cloth.Typ == Type.oval ? table.LengthOrRadius : table.Width)} -> cloth L: {cloth.LengthOrRadius} W: {cloth.Width}");

var oval = new Size(Type.oval, 100);
var rect = new Size(Type.rect, 200, 100);

PrintClothSize(oval, GetClothSize(oval)); // oval table L: 100 W: 100 -> cloth W: 151,2 B: 144
PrintClothSize(rect, GetClothSize(rect)); // rect table L: 200 W: 100 -> cloth W: 256,2 B: 144

enum Type { oval, rect }
record struct Size (Type Typ, double LengthOrRadius, double Width = 0.0);
                

Lösung von: Jens Kelm (@JKooP)

// C++ 17
// Ausgangslage wie in der c#-Lösung (@JKooP)
// Hier wird zusätzlich noch die Anzahl der benötigten Tücher angegeben,
// um der Aufgabe bzgl. der benötigten Gesamtstoffmenge gerecht zu werden.

#include <iostream>

enum class Type { oval, rect };

struct Size {
    const int number;
    const Type type;
    double lengthOrRadius_cm;
    double width_cm = 0.0;
};

void get_cloth_size(Size& table) {
    table.width_cm = (44 + (table.type == Type::oval ? table.lengthOrRadius_cm : table.width_cm))/100;
    table.lengthOrRadius_cm = (table.lengthOrRadius_cm + 44) * 1.05 * table.number / 100;
}

void print_size(Size size) {
    std::cout << "total to order (for " << (size.type == Type::oval ? "oval" : "rect") << " cloth):\tL: " << size.lengthOrRadius_cm << " m\tW: " << size.width_cm << " m\n";
}
int main() {
    auto oval = Size{ 10, Type::oval, 100 };
    get_cloth_size(oval);
    print_size(oval);
    auto rect = Size{ 5, Type::rect, 220, 120 };
    get_cloth_size(rect);
    print_size(rect);
}
// total to order (for oval cloth):  L: 15.12 m  W: 1.44 m
// total to order (for rect cloth):  L: 13.86 m  W: 1.64 m
                

Lösung von: Jens Kelm (@JKooP)

Verifikation/Checksumme:

Tisch rund: Duchmesser 130cm -> Tuch 174cm breit und 183cm lang

Tisch rechteckig: Länge 180cm, Breite 90cm -> Tuch 134 breit und 236cm (inkl. 5%) lang

Tisch rechteckig: Länge 80cm, Breite 93cm -> Tuch 137cm breit und 131cm (inkl. 5%) lang

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.5
Schwierigkeit: Leicht
Webcode: tzf7-vh3p
Autor: Philipp G. Freimann (BBW (Berufsbildungsschule Winterthur) https://www.bbw.ch)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen