Advertisement
jvalldejuli7

Swift code for iOS app

Jun 30th, 2015
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 6.11 KB | None | 0 0
  1. //
  2. //  ViewController.swift
  3. //  Mean, Mode, Median
  4. //
  5. //  Created by Jonathan Valldejuli on 6/29/15.
  6. //  Copyright (c) 2015 Randomware. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10.  
  11. class ViewController: UIViewController {
  12.  
  13.     //outlets for ui
  14.     @IBOutlet weak var undoBtn: UIButton!
  15.    
  16.     @IBOutlet weak var listField: UITextField!
  17.    
  18.     @IBOutlet weak var enterBtn: UIButton!
  19.    
  20.     @IBOutlet weak var calcMeanBtn: UIButton!
  21.    
  22.     @IBOutlet weak var meanLabel: UILabel!
  23.    
  24.     @IBOutlet weak var calcMedianBtn: UIButton!
  25.    
  26.     @IBOutlet weak var medianLabel: UILabel!
  27.    
  28.     @IBOutlet weak var calcModeBtn: UIButton!
  29.    
  30.     @IBOutlet weak var modeLabel: UILabel!
  31.    
  32.     @IBOutlet weak var numbersList: UILabel!
  33.    
  34.    
  35.     //vars for use
  36.     var userList: [Double] = []
  37.    
  38.     var stringForListLabel: String = ""
  39.    
  40.  
  41.    
  42.    
  43.     //math functions TAKE DOUBLE LIST RETURN DOUBLE/DOUBLE LIST
  44.     func average(numbers: [Double]) -> Double {
  45.        
  46.         var total = 0.0
  47.        
  48.         for x in numbers {
  49.            
  50.             total += x
  51.            
  52.         }
  53.        
  54.         return total/Double(numbers.count)
  55.        
  56.        
  57.     }
  58.    
  59.    
  60.     func median(var numbers: [Double]) -> Double {
  61.        
  62.         numbers = sorted(numbers)
  63.        
  64.         if numbers.count % 2 == 0 {
  65.            
  66.             return Double((numbers[numbers.count/2] + numbers[numbers.count/2 - 1])/2.0)
  67.            
  68.         }
  69.            
  70.         else {
  71.            
  72.             return Double(numbers[numbers.count/2])
  73.            
  74.         }
  75.        
  76.     }
  77.    
  78.    
  79.     //set a variable equal to the result of the call then use varname.mainReturn or varname.exists to get tuple value
  80.     func mode(numbers: [Double]) -> (mainReturn: [Double], exists: Bool) {
  81.        
  82.         var occurences = [Double:Int]()
  83.        
  84.         var signal: Bool
  85.        
  86.         var mode = [Double]()
  87.        
  88.         var max = 0
  89.        
  90.         for number in numbers {
  91.            
  92.             if var test = occurences[number] {
  93.                
  94.                 occurences[number] = occurences[number]! + 1
  95.                
  96.             }
  97.                
  98.             else {
  99.                
  100.                 occurences[number] = 1
  101.                
  102.             }
  103.            
  104.         }
  105.        
  106.         for (key, item) in occurences {
  107.            
  108.             switch item {
  109.                
  110.             case max:
  111.                
  112.                 let d = "d"
  113.                
  114.             case let x where x > max:
  115.                
  116.                 max = x
  117.                
  118.             default:
  119.                
  120.                 let a = "a"
  121.                
  122.             }
  123.            
  124.         }
  125.        
  126.         for (key, item) in occurences {
  127.            
  128.             if item == max {
  129.                
  130.                 mode.append(key)
  131.                
  132.             }
  133.            
  134.         }
  135.        
  136.         if max == 1 {
  137.            
  138.             signal = false
  139.            
  140.         }
  141.            
  142.         else {
  143.            
  144.             signal = true
  145.            
  146.         }
  147.        
  148.         return (mode, signal)
  149.        
  150.     }
  151.    
  152.    
  153.  
  154.    
  155.    
  156.    
  157.    
  158.     override func viewDidLoad() {
  159.         super.viewDidLoad()
  160.         // Do any additional setup after loading the view, typically from a nib.
  161.     }
  162.  
  163.     override func didReceiveMemoryWarning() {
  164.         super.didReceiveMemoryWarning()
  165.         // Dispose of any resources that can be recreated.
  166.     }
  167.    
  168.    
  169.    
  170.    
  171.    
  172.    
  173.    
  174.     @IBAction func enterBtnTapped(sender: UIButton) {
  175.    
  176.         if stringForListLabel == "Numbers" {
  177.            
  178.             stringForListLabel = ""
  179.            
  180.         }
  181.        
  182.         var numberToAdd: Double = (listField.text as NSString).doubleValue
  183.        
  184.         userList.append(numberToAdd)
  185.        
  186.         var numberToAddToLabel = listField.text
  187.        
  188.         if userList.count == 1 {
  189.            
  190.             stringForListLabel += numberToAddToLabel
  191.  
  192.         }
  193.        
  194.         else {
  195.        
  196.             stringForListLabel += ", " + numberToAddToLabel
  197.            
  198.         }
  199.        
  200.         numbersList.text = stringForListLabel
  201.        
  202.         listField.text = ""
  203.        
  204.     }
  205.    
  206.    
  207.     @IBAction func undoBtnTapped(sender: UIButton) {
  208.    
  209.         userList.removeAtIndex(userList.count - 1)
  210.        
  211.         stringForListLabel = ""
  212.        
  213.         if userList.count != 0 {
  214.            
  215.             stringForListLabel += userList[0].description
  216.        
  217.             for x in 1..<userList.count {
  218.            
  219.                 stringForListLabel += ", " + userList[x].description
  220.            
  221.             }
  222.            
  223.         }
  224.        
  225.         else {
  226.            
  227.             stringForListLabel = "Numbers"
  228.            
  229.         }
  230.        
  231.         numbersList.text = stringForListLabel
  232.        
  233.        
  234.        
  235.        
  236.     }
  237.    
  238.     @IBAction func calcBtnTapped(sender: UIButton) {
  239.    
  240.         switch sender.tag {
  241.            
  242.         case 1:
  243.            
  244.             meanLabel.text = average(userList).description
  245.            
  246.         case 3:
  247.            
  248.             var optionalMode = mode(userList)
  249.            
  250.             if optionalMode.exists {
  251.                
  252.                 var ourStr = ""
  253.                
  254.                 for mode in optionalMode.mainReturn {
  255.                    
  256.                     ourStr += mode.description
  257.                    
  258.                 }
  259.                
  260.                 modeLabel.text = ourStr
  261.            
  262.             }
  263.            
  264.             else {
  265.                
  266.                 modeLabel.text = "No Mode"
  267.                
  268.             }
  269.            
  270.         case 2:
  271.            
  272.             medianLabel.text = median(userList).description
  273.            
  274.         default:
  275.            
  276.             var done = "Done! :)"
  277.            
  278.            
  279.            
  280.            
  281.            
  282.         }
  283.            
  284.        
  285.            
  286.        
  287.    
  288.     }
  289.    
  290.    
  291.    
  292.    
  293.    
  294.    
  295.  
  296.  
  297. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement