2017-12-15 1 views
0
var number = numberCars/ (categories?.count)! 

numberCars ist die Zahl der Autos, categories?.count die Zahl der Autos Kategorien und number ist die Anzahl der Fahrzeuge, die jeder Kategorie zugeordnet, so zum Beispiel, wenn numberCars = 4 und categories?.count = 2 4/2 = 2 wir Ich habe 2 Autos für die Kategorie zugewiesen. Leider funktioniert das nur wenn ich gerade Nummern habe, wie kann ich in Situationen wie numberCars = 7 und categories?.count = 3? In diesem Fall möchte ich 3 Autos zu einer Kategorie und 2 Autos zu den restlichen zuordnen.der Division von ganzen Zahlen mit ungeraden Zahlen

+0

Schauen Sie in den Restoperator ('%'). –

+0

Kannst du mir ein Beispiel geben? – fisherM

+0

Das hat nichts mit ungeraden Zahlen zu tun. Betrachten Sie zum Beispiel 4 Kategorien und 10 Autos. –

Antwort

1

Angenommen, Sie haben numberOfCars Variable in Category Objekt dann können Sie einfache Arithmetik verwenden, um Ihre Anforderung zu berechnen. Dieser Code ist nicht optimiert, Sie können diesen Code von Ihnen optimieren. Dies gibt Ihnen nur eine Idee, wie Sie es tun können

let number = numberCars/categories.count 
let remainder = numberCars % categories.count 


print("avg cars:\(number) remainder:\(remainder)") 

// Assign the avg cars to all category 
for category in categories { 
    category.numberOfCars = number 
} 

// Increment the categories to fit the remaining cars 
for i in 0..<remainder { 
    categories[i].numberOfCars += 1 
} 


for category in categories { 
    print("# cars \(category.numberOfCars)") 
} 
+0

danke inder – fisherM

+0

ich kann category.numberOfCars nicht tun, da numberOfCars nicht in der Kategorie object, numberOfCars ist ein einfaches Int, var numberOfCars = 0 – fisherM

+0

Mein Code war, um Ihnen die Idee zu vermitteln, wie Sie es erreichen können. Bitte ändere diesen Code entsprechend –

0

Optimierter Code.

let remainder = numberCars % categories.count 

if numberCars > categories.count { 
    // Assign the avg cars to all category 
    for category in categories { 
    category.numberOfCars = categories.count 
    } 
} 

// Increment the categories to fit the remaining cars 
for i in 0..<remainder { 
    categories[i].numberOfCars += 1 
} 


for category in categories { 
    print("# cars \(category.numberOfCars)") 
} 
+0

Ich kann category.numberOfCars nicht tun, da numberOfCars nicht im Kategorieobjekt – fisherM

+0

ist. NumberOfCars ist ein einfaches Int, var numberOfCars = 0 – fisherM