Buch Cover Buch Cover Buch Cover Buch Cover

Web-Code: - Webcode Help

Anstoßende Partygäste (Schleifen)

Es handelt sich hier nicht um anstößige Partygäste. Vielmehr geht es darum, dass die Personen an einer Party mit ihren Gläsern anstoßen.

Die Aufgabe, wie oft die Gläser klingen, wenn jeder mit jedem anstößt, ist bekannt. Es handelt sich um die Formel von Gauß und bei n Personen wird n*(n-1)/2 mal angestoßen.

Doch diese Party ist anders.

Nach und nach betreten die 20 Gäste den Ballsaal. Einer nach dem anderen. Leider vergeht von Gast zu Gast so viel Zeit, dass alle Anwesenden bereits wieder ausgetrunken haben. Doch von vorne:

Nachdem der zweite Gast der Raum betritt, stoßen die beiden Personen an und beginnen zu plaudern. Nach einiger Zeit haben sie ausgetrunken und ein dritter Gast betritt den Ballsaal. Nun schenken sich alle ein Getränk ein und alle drei stoßen miteinaner an.

Sobald der 4. Gast den Raum betritt, schenken sich sofort alle wieder ihr Glas voll; alle vier Personen stoßen nun miteinander an

Wie viel mal klingelten die Gläser an diesem Abend, wenn insgesammt 20 Gäste anwesend waren? Oder darf man hier sagen "hineintröpfelten"?

Programmieren Sie das Resultat so, dass der Anwender die Anzahl aller Gäste frei wählen kann, und Ihr Programm soll danach ausgeben, wie oft die Gläser geklungen hatten.

0 Kommentare

Bitte melde dich an um einen Kommentar abzugeben

12 Lösung(en)

#include <stdio.h>


int klaenge(int personen) {
	if(personen < 2) return 0;
	int klg = 0;
	for(int i = 2; i <= personen; i++) {
		klg = klg + i*(i-1)/2;
	}
	return klg;
}

void main() {
  int personen;
	printf("Geben Sie die Anzahl Personen ein:");
	scanf("%d", &personen);
	int kl = klaenge(personen);
	printf("Es hat %d mal geklungen.\n", kl);
}

                

Lösung von: Philipp Gressly Freimann (SANTIS Training AG)

import java.util.InputMismatchException;
import java.util.Scanner;

public class Main {

    private int amount;

    public static void main(String[] args) {
        new Main().init();
    }

    private void init() {
        readAmount();
        calc();
    }

    private void readAmount() {
        try {
            System.out.print("Anzahl der Partygäste: ");

            Scanner input = new Scanner(System.in);
            amount = input.nextInt();
        } catch (InputMismatchException e) {
            System.out.println("Bitte geben Sie eine Zahl an.");
            System.out.println();
            readAmount();
        }
    }

    private void calc() {
        int result = 0;

        for(int i = 2; i <= amount; i++) {
            result += 0.5 * i * (i - 1);
        }

        System.out.println("Anzahl der Klänge: " + result);
    }
}
                

Lösung von: Linus Götz (Lichtenberg-Gymnasium Cuxhaven)

// geschrieben in GO (GOLANG) Ver. 1.9.2

package main

import "fmt"

func main() {

	var n, k, t int
	fmt.Print("Wieviele Gäste erwarten Sie?:")
	fmt.Scan(&n)

	for i := 0; i < n; i++ {
		k += i

		for j := 0; j < i; j++ {
			t += j
		}

	}

	fmt.Println("Es klingeln", (k + t), "mal die Gläser. Prost!")

}

/*

INFO: Zu testen bei The Golang Playground
URL:  https://play.golang.org/

Personen:	Klingeln:	SummeKlingeln:
1			0			0
2			1			1
3			3			4
4			6			10
5			10			20
...			...			...
20			190			1330

*/
                

Lösung von: Name nicht veröffentlicht

program klingendeGlaeser (input, output);

var
	Gaeste: integer;
	klingeln: integer;
	i: integer;
	
begin
	writeln ('Bitte gebe die Anzahl von Gaesten ein');
	readln (Gaeste);
	i:= 2;
	klingeln:= 0;
	while i <= Gaeste do
	begin	
		Klingeln:= Klingeln + i*(i-1)div 2 ;
		i:= i+1;
	end;
	writeln ('Es wird ', klingeln ,' mal angestoßen')
	
end.
                

Lösung von: Name nicht veröffentlicht

static void Main(string[] args)
        {
            var x = 0;
            Console.WriteLine("Wählen Sie eine Zahl:");
            var y =  Convert.ToInt32(Console.ReadLine());
            
            var i = 1;
            while (i <= y)
            {
                              
                x += i * (i - 1) / 2;
                i++;
            }
            Console.Write(x);
           
        }
                

Lösung von: Irene Strauß (Liceo Scientifico, Bruneck)

''24.02.2018 - Powerbasic 10

#COMPILE EXE
#DIM ALL

FUNCTION PBMAIN () AS LONG
    DIM x AS STRING
    DIM t AS LONG
    DIM i AS LONG

    x = INPUTBOX$("Wieviele Partygäste?","Anstossende Partygäste","20")
    IF x = "" THEN EXIT FUNCTION

    FOR i = 1 TO VAL(x)
        t += i*(i-1)/2
    NEXT i

    MSGBOX "Es hat " & FORMAT$(t) & " mal 'kling' gemacht.",, EXE.NAME$

END FUNCTION  
                

Lösung von: Markus Sägesser (keine)

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package gläser;
import java.util.*;
/**
 *
 * @author SuReLLi
 */
public class Gläser {
    public static int klingel;
    public static int total;
    public static int gäste;
    public static int anstoßen(){
        klingel = (gäste*(gäste-1)/2);
        total = total + klingel;
        return klingel;
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        int fail = 1;
        Scanner scanner = new Scanner(System.in);
        int runden = 0;
        System.out.println("Wie viele Gäste erscheinen zur Party?");
        while(fail==1){
        try{
        runden = scanner.nextInt();
        fail=0;
        }
        catch(NumberFormatException x){
            fail=1;
        }
        }
        int arunde = 0;
        gäste = 1;
        while(arunde < runden){
        System.out.println("Der "+(arunde+1)+". Gast ist eingetroffen.");
        if(arunde > 0){
            System.out.println("Die Partygäste stoßen an");
            anstoßen();
        }
        System.out.println("Es wurde insgesamt "+total+" mal angestoßen");
        arunde++;
        gäste++;
        }
        }
    }


                

Lösung von: Name nicht veröffentlicht

<!DOCTYPE html>
<html>
    <head>
        <style>
            span, input, label {display: inline-block;}
        </style>
        <script>
            const getCheersCount = (guests) => isNaN(parseInt(guests)) || parseInt(guests) <= 0 ? 0 : Array
                    .apply(null, new Array(parseInt(guests)))
                    .map((guest, index) => index + 1)
                    .reduce((acc, n) => acc + (n*(n-1)) / 2, 0);

            const updateResult = () => {
                const guests = document.getElementById("input").value;
                document.getElementById("result").innerHTML = getCheersCount(guests);
            };
        </script>
    </head>
    <body>
        <label for="input">Number of guests:</label>
        <input title="numberOfGuests"
               placeholder="Number of guests ..."
               id="input"
               onkeydown="updateResult()"
               oninput="updateResult()" />
        Result:&nbsp;<span id="result"></span>
    </body>
</html>
                

Lösung von: Christian :) (Hochschule Merseburg)

anzahlGaeste = int(input("Geben Sie die Anzahl an Gaesten ein, welche eintrudeln sollen: "))
count = 0
for i in range(2, anzahlGaeste+1):
    count += i*(i-1)//2
    
print (count)
                

Lösung von: Tim Rieder (KSWE)

    Sub Main()
        Console.WriteLine("Geben Sie die Anzahl an Gästen ein: ")
        Dim gaeste As Integer = Console.ReadLine()
        Dim klingen As Integer = 0

        For i As Integer = 1 To gaeste Step 1
            If i >= 2 Then
                klingen += i * (i - 1) / 2
            End If
        Next

        Console.WriteLine(klingen)
        Console.ReadLine()
    End Sub
                

Lösung von: Elias Zech (Optics Balzers)

    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Anzahl Gäste: ");
            int gaeste = Convert.ToInt32(Console.ReadLine());

            int stoß = 0;

            for (int i = 2; i < gaeste + 1; i++)
            {
                stoß += i * (i - 1) / 2;
            }

            Console.WriteLine("Anzahl Anstoßen: {0}", stoß);

            Console.ReadLine();
        }
    }
                

Lösung von: Till Söffgen ()

var ergebnis = 0;
var gaeste = prompt("Wie viel Gäste haben die Party besucht?");
for(i = 2; i <= gaeste; i++) {
	ergebnis = ergebnis + i*(i-1)/2;
};
alert("Es wurde " + ergebnis + " angestoßen!");
                

Lösung von: Name nicht veröffentlicht

Verifikation/Checksumme:

Bei 20 Gästen klingelten die Gläser 1330 Mal.

Aktionen

Bewertung

Durchschnittliche Bewertung:

Eigene Bewertung:
Bitte zuerst anmelden

Meta

Zeit: 0.25
Schwierigkeit: Mittel
Webcode: b2jr-q8pb
Autor: Philipp Gressly Freimann (SANTIS Training AG)

Download PDF

Download ZIP

Zu Aufgabenblatt hinzufügen