Ampel Programmieren die jede 10 sekunden ihre farbe wechselt

Dosenoeffner

Mitglied
Ich arbeite gerade an einem Programm eigentlich in der Golang Sprache jedoch fehlt mir nur die Idee deswegen kann mir hier trotdem helfen.

Die frage an sichist eigentlich easy jedoch komme ich nicht auf den richtigen alogorithmus mit dem das Programm wieder anfangen soll zu laufen.

Hier erstmal die Ganze frage :
Schreiben Sie eine Funktion colour(), die eine Zeitangabe t in Sekunden erwartet.
Die Funktion soll einen String zurückgeben, der sagt, welche Farbe eine Ampel
nach t Sekunden hat, wenn sie bei Rot startet und alle 10 Sekunden umschaltet.
*/

Mein Programm läuft Prima aber leider nur für die ersten 40 sekunden
0-9t = Rot
10-19= RotGelb
20-29 =Grün
30-39= Gelb

jetzt muss es wieder vom anfang laufen also
40 - 49 = Rot
50-59 = Rot Gelb...

und genau das bekomme ich seit mehreren Stunden leider nich hin ;(

heir mein Programm in der Golang Sprache, COOL falls die jemand heir versteht

Code:
package main

import "fmt"
func main(){
    fmt.Println(colour(0))
    fmt.Println(colour(9))
    fmt.Println(colour(10))
    fmt.Println(colour(20))
    fmt.Println(colour(30))
    fmt.Println(colour(40))
}
/* AUFGABENSTELLUNG:
Schreiben Sie eine Funktion colour(), die eine Zeitangabe t in Sekunden erwartet.
Die Funktion soll einen String zurückgeben, der sagt, welche Farbe eine Ampel
nach t Sekunden hat, wenn sie bei Rot startet und alle 10 Sekunden umschaltet.
*/

func colour(t int) string {
    switch{
        case t / 10 == 0:
            fmt.Println("Rot")
        case t / 10  == 1 :
            fmt.Println("Rot-Gelb")
        case t / 10  == 2  :
            fmt.Println("Gruen")
        case t / 10  == 3  :
            fmt.Println("Gelb")

    }
    return ""
}

Danke im Voraus
 
Du solltest modulo (%) benutzen, wenn es alle 40 Sekunden wieder von vorne losgeht.
Oh Stimmt , hat geklappt DANKE,

Kannst du mir bitte noch sagen was ich bei return angeben muss damit die Richtige Farbe gespeichert wird?
Code:
func colour(t int) string {
    switch{
        case t % 40 >= 0 && t % 40 <= 9  :
            fmt.Println("Rot")
        case t % 40 >= 10 && t % 40 <= 19:
            fmt.Println("Rot-Gelb")
        case  t % 40 >= 20 && t % 40 <= 29 :
            fmt.Println("Gruen")
        case t % 40 >= 30 && t % 40 <= 39 :
            fmt.Println("Gelb")

    }
    return ""
 
Code:
func colour(t int) string {
    switch{
        case t % 40 >= 0 && t % 40 <= 9  :
            return "Rot"
        case t % 40 >= 10 && t % 40 <= 19:
            return "Rot-Gelb"
        case  t % 40 >= 20 && t % 40 <= 29 :
            return "Gruen"
        case t % 40 >= 30 && t % 40 <= 39 :
            return "Gelb"

    }
    return ""
}

Stimmt das so?
 
Java:
func colour(t int) string {
    switch{
        case t % 40 >= 0 && t % 40 <= 9  :
            return "Rot"
        case t % 40 >= 10 && t % 40 <= 19:
            return "Rot-Gelb"
        case  t % 40 >= 20 && t % 40 <= 29 :
            return "Gruen"
        case t % 40 >= 30 && t % 40 <= 39 :
            return "Gelb"

    }
    return ""
}
warum nicht
Java:
func colour(t int) string {
    t %= 40;
    if (t < 0) return "";
    switch{
        case t <= 9  :
            return "Rot"
        case  t <= 19:
            return "Rot-Gelb"
        case t  <= 29 :
            return "Gruen"
        case t <= 39 :
            return "Gelb"
                default:
            return "";
    }
}
wäre einfacher zu lesen
 
Java:
func colour(t int) string {
    switch{
        case t % 40 >= 0 && t % 40 <= 9  :
            return "Rot"
        case t % 40 >= 10 && t % 40 <= 19:
            return "Rot-Gelb"
        case  t % 40 >= 20 && t % 40 <= 29 :
            return "Gruen"
        case t % 40 >= 30 && t % 40 <= 39 :
            return "Gelb"

    }
    return ""
}
warum nicht
Java:
func colour(t int) string {
    t %= 40;
    if (t < 0) return "";
    switch{
        case t <= 9  :
            return "Rot"
        case  t <= 19:
            return "Rot-Gelb"
        case t  <= 29 :
            return "Gruen"
        case t <= 39 :
            return "Gelb"
                default:
            return "";
    }
}
wäre einfacher zu lesen
Stimmt Danke vielmals 😘
 
ich kenne diese aufgaben die einfach erscheinen und immer in einem riesen if block entarten wenn man den wald vor augen net sieht 😀
 

Zurück
Oben