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

4 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

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