Menu
Coddy logo textTech

Podsumowanie — listy dynamiczne

Część sekcji Podstawy ścieżki GO w Coddy. Lekcja 83 z 109.

challenge icon

Wyzwanie

Średni

Poćwiczmy pracę z wycinkami w Go, tworząc prosty menedżer listy zakupów!

Twoim zadaniem jest zaimplementowanie kilku funkcji, które modyfikują listę zakupów:

  1. addItems: Dodaj nowe produkty do listy zakupów
  2. removeItem: Usuń produkt z listy na podstawie indeksu
  3. findExpensiveItems: Znajdź produkty, których ceny przekraczają określony próg
  4. calculateTotalCost: Oblicz łączny koszt wszystkich produktów

Każdy produkt na liście zakupów jest reprezentowany przez ciąg znaków (nazwę) i wartość float64 (cenę). Funkcja main pokazuje, jak wszystkie te operacje współdziałają.

Spróbuj swoich sił

package main

import "fmt"

// addItems dodaje nowe produkty i ich ceny do listy zakupów
func addItems(names []string, prices []float64, newNames []string, newPrices []float64) ([]string, []float64) {
	// Tu wpisz swój kod
	return names, prices
}

// removeItem usuwa produkt o podanym indeksie
func removeItem(names []string, prices []float64, index int) ([]string, []float64) {
	// Tu wpisz swój kod
	return names, prices
}

// findExpensiveItems zwraca produkty, których ceny przekraczają próg
func findExpensiveItems(names []string, prices []float64, threshold float64) []string {
	// Tu wpisz swój kod
	return nil
}

// calculateTotalCost zwraca sumę wszystkich cen
func calculateTotalCost(prices []float64) float64 {
	// Tu wpisz swój kod
	return 0
}

func main() {
	// Zainicjalizuj puste listy zakupów
	names := []string{}
	prices := []float64{}
	
	// Dodaj początkowe produkty
	initialNames := []string{"Apples", "Milk", "Bread"}
	initialPrices := []float64{2.99, 3.49, 2.29}
	
	names, prices = addItems(names, prices, initialNames, initialPrices)
	
	// Wyświetl początkową listę zakupów
	fmt.Println("Initial Shopping List:")
	for i := range names {
		fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
	}
	
	// Oblicz i wyświetl całkowity koszt
	total := calculateTotalCost(prices)
	fmt.Printf("\nTotal Cost: $%.2f\n", total)
	
	// Znajdź i wyświetl drogie produkty
	priceThreshold := 3.00
	expensiveItems := findExpensiveItems(names, prices, priceThreshold)
	
	fmt.Printf("\nExpensive Items (above $%.2f):\n", priceThreshold)
	for _, item := range expensiveItems {
		fmt.Println(item)
	}
	
	// Dodaj nowy produkt
	names, prices = addItems(names, prices, []string{"Cheese"}, []float64{4.99})
	
	// Usuń produkt
	names, prices = removeItem(names, prices, 1)
	fmt.Println("\nRemoved item at index 1")
	
	// Wyświetl końcową listę zakupów
	fmt.Println("\nFinal Shopping List:")
	for i := range names {
		fmt.Printf("%d. %s - $%.2f\n", i, names[i], prices[i])
	}
}

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Go online