Partage
  • Partager sur Facebook
  • Partager sur Twitter

Calculatrice Amélioré Swift - Incrémentation ?

Comment procéder à l'incrémentation une fois le calcul terminer

    11 août 2019 à 16:51:15

    Bonjour 

    Je sais que c'est un exercice à rendre mais pour le coup je n'y arrive pas, ça fais 2 semaines que je me triture le cerveau pour trouver comment faire mais là je sèche complètement.

    J'ai tenté de faire en while en for en += et rien n'y fais.

    Voici mon code, j'espère que vous pourrez m'aider merci beaucoup

    func input() -> Int {
        let strData = readLine();
        
        return Int(strData!)!
    }
    
    func calculatrice() {
        var nombre1 : Int
        var nombre2 : Int
        var operateur : Int
        var resultat : Int
        var reponse : String
        var compteur: Int
     
        
        repeat {
            compteur = 0
            print("Vous en êtes à \(compteur) calcul")
            print("Entrer le type d'opération \n 1 : Addition \n 2 : Soustraction \n 3 : Multiplication \n 4 : Division \n 5 : Modulo \n 6 : Carré")
            
            operateur = input()
            
            if (operateur >= 1 && operateur <= 6){
                switch operateur {
                case 1 : print("Vous avez choisi addition")
                print("Veuillez entrer votre premier nombre")
                nombre1 = input()
                print("Veuillez entrer votre deuxième nombre")
                nombre2 = input()
                resultat = nombre1 + nombre2
                print("Le resultat est \(resultat)")
                case 2 : print("Vous avez choisi soustraction")
                print("Veuillez entrer votre premier nombre")
                nombre1 = input()
                print("Veuillez entrer votre deuxième nombre")
                nombre2 = input()
                resultat = nombre1 - nombre2
                print("Le resultat est \(resultat)")
                case 3 : print("Vous avez choisi multiplication")
                print("Veuillez entrer votre premier nombre")
                nombre1 = input()
                print("Veuillez entrer votre deuxième nombre")
                nombre2 = input()
                resultat = nombre1 * nombre2
                print("Le resultat est \(resultat)")
                case 4 : print("Vous avez choisi division")
                print("Veuillez entrer votre premier nombre")
                nombre1 = input()
                print("Veuillez entrer votre deuxième nombre")
                nombre2 = input()
                resultat = nombre1 / nombre2
                print("Le resultat est \(resultat)")
                case 5 :print("Vous avez choisi modulo")
                print("Veuillez entrer votre premier nombre")
                nombre1 = input()
                print("Veuillez entrer votre deuxième nombre")
                nombre2 = input()
                resultat = nombre1 % nombre2
                print("Le resultat est \(resultat)")
                case 6 :print("Vous avez choisi Carré")
                print("Veuillez entrer votre un nombre")
                nombre2 = input()
                resultat = nombre2 * nombre2
                print("Le resultat est \(resultat)")
                default:
                    print("Vous n'avez pas choisi entre 1 et 6")
                }
            }
            else {
                print("Tu n'as pas choisis un nombre entre 1 et 6")
            }
        } while operateur < 1 || operateur > 6
        print("Souhaites-tu recommencer ? (Tapez sur la touche Entrer pour recommencer)")
        reponse = readLine()!
        if (reponse == String("")){
            repeat {
                compteur += 1
            }
                while compteur <= 1
            calculatrice()
     
        }
        else {
            print("parfait au revoir!")
        }
        
    }
    calculatrice()
    
    



    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2019 à 20:07:28

      Salut,

      Peux tu décrire le résultat attendu et le résultat obtenu ? Je comprend pas ce que tu cherches à faire. Je suppose que tu souhaites que ta variable compteur garde son état. Pour ça tu as deux solutions : soit tu la passes en paramètre de ta méthode avec 0 comme valeur par défaut. Soit tu la sors du scope de ta méthode. Si c’est pas ça je comprend pas.

      Sinon,

      Je dirais que le if operateur ne sert a rien puisque le cas est géré dans le default.

      Ta deuxième boucle while ne sert à rien. En supprimant complètement la ligne 76 à la ligne 79 ça fait la même chose.

      • Partager sur Facebook
      • Partager sur Twitter
        12 août 2019 à 1:34:21

        Merci pour ta réponse, en effet le if ne sert à rien, je me suis embrouillé avec l'exo qui disait passer par un if alors que je voulais tester le switch ^^

        Pour le While, en effet ça ne fonctionne pas et c'est inutile puisque ce que je cherche ne fonctionne pas, je l'ai laissé pour l'exemple, bien vu ;)

        Je cherche donc à ce que quand la personne execute le programme, le compteur soit incrémenté de 1 et ce dès que la personne fait un calcul. Je remet le code épuré

        func input() -> Int {
            let strData = readLine();
            
            return Int(strData!)!
        }
        
        func calculatrice() {
            var nombre1 : Int
            var nombre2 : Int
            var operateur : Int
            var resultat : Int
            var reponse : String
            var compteur: Int
         
            
            repeat {
                compteur = 0
                print("Vous en êtes à \(compteur) calcul")
                print("Entrer le type d'opération \n 1 : Addition \n 2 : Soustraction \n 3 : Multiplication \n 4 : Division \n 5 : Modulo \n 6 : Carré")
                
                operateur = input()
                
                    switch operateur {
                    case 1 : print("Vous avez choisi addition")
                    print("Veuillez entrer votre premier nombre")
                    nombre1 = input()
                    print("Veuillez entrer votre deuxième nombre")
                    nombre2 = input()
                    resultat = nombre1 + nombre2
                    print("Le resultat est \(resultat)")
                    case 2 : print("Vous avez choisi soustraction")
                    print("Veuillez entrer votre premier nombre")
                    nombre1 = input()
                    print("Veuillez entrer votre deuxième nombre")
                    nombre2 = input()
                    resultat = nombre1 - nombre2
                    print("Le resultat est \(resultat)")
                    case 3 : print("Vous avez choisi multiplication")
                    print("Veuillez entrer votre premier nombre")
                    nombre1 = input()
                    print("Veuillez entrer votre deuxième nombre")
                    nombre2 = input()
                    resultat = nombre1 * nombre2
                    print("Le resultat est \(resultat)")
                    case 4 : print("Vous avez choisi division")
                    print("Veuillez entrer votre premier nombre")
                    nombre1 = input()
                    print("Veuillez entrer votre deuxième nombre")
                    nombre2 = input()
                    resultat = nombre1 / nombre2
                    print("Le resultat est \(resultat)")
                    case 5 :print("Vous avez choisi modulo")
                    print("Veuillez entrer votre premier nombre")
                    nombre1 = input()
                    print("Veuillez entrer votre deuxième nombre")
                    nombre2 = input()
                    resultat = nombre1 % nombre2
                    print("Le resultat est \(resultat)")
                    case 6 :print("Vous avez choisi Carré")
                    print("Veuillez entrer votre un nombre")
                    nombre2 = input()
                    resultat = nombre2 * nombre2
                    print("Le resultat est \(resultat)")
                    default:
                        print("Vous n'avez pas choisi entre 1 et 6")
                    }
                }
                while operateur < 1 || operateur > 6
            print("Souhaites-tu recommencer ? (Tapez sur la touche Entrer pour recommencer)")
            reponse = readLine()!
            if (reponse == String("")){
                calculatrice()
            }
            else {
                print("parfait au revoir!")
            }
        }
        calculatrice()
        
        

        -
        Edité par FifouAK 12 août 2019 à 1:36:33

        • Partager sur Facebook
        • Partager sur Twitter
          12 août 2019 à 10:43:42

          On y voit plus clair !

          Du coup, reprend mon premier paragraphe. La réponse est dedans.

          Quand tu repasses dans calculatrice() le compteur est remis à 0 quoi qu’il arrive. Il doit venir d’ailleurs.

          Sinon tu peux certainement mettre tout le code dans un while dont la condition est la ligne 71 et supprimer la récursivité. Faudrait aussi supprimer la ligne 17 et faire l’initialisation Directement sur la ligne 13.

          Ça fait 3 solutions en tout.

          Si tu comprends pas une de mes réponses dis le moi, j’essaierai de récupérer un ordinateur pour pondre un exemple. (Sur mobile c’est pas pratique)

          • Partager sur Facebook
          • Partager sur Twitter
            13 août 2019 à 16:46:55

            Merci pour ta réponse ! 

            En effet tu as raison le résultat sera toujours 0 car compteur = 0, du coup comment je fais pour dire à compteur qu'au début il est à 0 et qu'ensuite cette valeur sera incrémenté de 1 une fois passé dans le if/else de reponse ? 

            Et surtout que dois-je indiqué dans ce dernier pour indiqué que je veux faire une incrémentation de compteur, j'ai tenté "compteur++, compteur+=" j'ai tenter un for, un while, et rien n'y fais ...

            • Partager sur Facebook
            • Partager sur Twitter
              13 août 2019 à 19:47:37

              J'ai un peu tout refactorisé, donc pour les 3 exemples je vais partir d'une base commune dont tu n'as pas besoin :

              
              private func compute(_ operation: Operation) {
                  
                  var nombre1 = 0
                  var nombre2 = 0
                  
                  print(operation.choiceDescription)
                  
                  if operation == .Carre {
                      print("Veuillez entrer votre un nombre")
                      nombre1 = input()
                  } else {
                      print("Veuillez entrer votre premier nombre")
                      nombre1 = input()
                      print("Veuillez entrer votre deuxième nombre")
                      nombre2 = input()
                  }
                  let text = "Le resultat est "
                  switch operation {
                  case .Addition:
                      print("\(text) \(nombre1 + nombre2)")
                  case .Soustraction:
                      print("\(text) \(nombre1 - nombre2)")
                  case .Multiplication:
                      print("\(text) \(nombre1 * nombre2)")
                  case .Division:
                      print("\(text) \(nombre1 / nombre2)")
                  case .Modulo:
                      print("\(text) \(nombre1 % nombre2)")
                  case .Carre:
                      print("\(text) \(nombre1 * nombre1)")
                  }
              }
              
              enum Operation {
                  case Addition, Soustraction, Multiplication, Division, Modulo, Carre
                  
                  var choiceDescription: String {
                      let text = "Vous avez choisi"
                      switch self {
                      case .Addition:
                          return "\(text) addition"
                      case .Soustraction:
                          return "\(text) soustract"
                      case .Multiplication:
                          return "\(text) multiplication"
                      case .Division:
                          return "\(text) division"
                      case .Modulo:
                          return "\(text) modulo"
                      case .Carre:
                          return "\(text) carré"
                      }
                  }
              }
              

              En partant de là il y a 3 implémentations de calculation possible :

              #1 :

              func calculatrice(compteur: Int = 0) {
              
                  var operateur : Int
                  var reponse : String
              
                  repeat {
                      print("Vous en êtes à \(compteur) calcul")
                      print("Entrer le type d'opération \n 1 : Addition \n 2 : Soustraction \n 3 : Multiplication \n 4 : Division \n 5 : Modulo \n 6 : Carré")
                      
                      operateur = input()
                      
                      switch operateur {
                      case 1 :
                          compute(.Addition)
                      case 2 :
                          compute(.Soustraction)
                      case 3 :
                          compute(.Multiplication)
                      case 4 :
                          compute(.Division)
                      case 5 :
                          compute(.Modulo)
                      case 6 :
                         compute(.Carre)
                      default:
                          print("Vous n'avez pas choisi entre 1 et 6")
                      }
                  }
                      while operateur &lt; 1 || operateur &gt; 6
                  print("Souhaites-tu recommencer ? (Tapez sur la touche Entrer pour recommencer)")
                  reponse = readLine()!
                  if (reponse == String("")){
                      calculatrice(compteur: compteur + 1)
                  }
                  else {
                      print("parfait au revoir!")
                  }
              }
              

              #2 :

              var compteur = 0
              
              func calculatrice() {
              
                  var operateur : Int
                  var reponse : String
              
                  repeat {
                      print("Vous en êtes à \(compteur) calcul")
                      print("Entrer le type d'opération \n 1 : Addition \n 2 : Soustraction \n 3 : Multiplication \n 4 : Division \n 5 : Modulo \n 6 : Carré")
                      
                      operateur = input()
                      
                      switch operateur {
                      case 1 :
                          compute(.Addition)
                      case 2 :
                          compute(.Soustraction)
                      case 3 :
                          compute(.Multiplication)
                      case 4 :
                          compute(.Division)
                      case 5 :
                          compute(.Modulo)
                      case 6 :
                         compute(.Carre)
                      default:
                          print("Vous n'avez pas choisi entre 1 et 6")
                      }
                  }
                      while operateur &lt; 1 || operateur &gt; 6
                  print("Souhaites-tu recommencer ? (Tapez sur la touche Entrer pour recommencer)")
                  reponse = readLine()!
                  if (reponse == String("")){
                      compteur += 1
                      calculatrice()
                  }
                  else {
                      print("parfait au revoir!")
                  }
              }
              

              #3 :

              func calculatrice() {
              
                  var operateur : Int
                  var reponse : String
                  var shouldRepeat = true
                  var compteur = 0
                  repeat {
                      repeat {
                          print("Vous en êtes à \(compteur) calcul")
                          print("Entrer le type d'opération \n 1 : Addition \n 2 : Soustraction \n 3 : Multiplication \n 4 : Division \n 5 : Modulo \n 6 : Carré")
                          
                          operateur = input()
                          
                          switch operateur {
                          case 1 :
                              compute(.Addition)
                          case 2 :
                              compute(.Soustraction)
                          case 3 :
                              compute(.Multiplication)
                          case 4 :
                              compute(.Division)
                          case 5 :
                              compute(.Modulo)
                          case 6 :
                              compute(.Carre)
                          default:
                              print("Vous n'avez pas choisi entre 1 et 6")
                          }
                      }
                          while operateur &lt; 1 || operateur &gt; 6
                      print("Souhaites-tu recommencer ? (Tapez sur la touche Entrer pour recommencer)")
                      reponse = readLine()!
                      if (reponse == String("")){
                          compteur += 1
                      }
                      else {
                          shouldRepeat = false
                          print("parfait au revoir!")
                      }
                  } while shouldRepeat
              }
              
              • Partager sur Facebook
              • Partager sur Twitter
                13 août 2019 à 20:23:39

                Waouh ! Pleins de code ! :) 

                Merci beaucoup pour toute tes propositions, je me suis aidé de ta deuxième solution, en fait' il fallait juste que je place l'incrémentation avant le rappel de la function ... 

                Voici le code corrigé 

                // Fonction permettant de demander à l'utilisateur d'entrer un nombre et de le convertir en entier
                
                func input() -> Int {
                    let strData = readLine();
                    
                    return Int(strData!)!
                }
                
                var compteur = 0 //Initialisation de la variable
                func calculatrice() {
                    var nombre1 : Int
                    var nombre2 : Int
                    var operateur : Int
                    var resultat : Int
                    var reponse : String
                
                 
                    repeat {
                        print("Vous en êtes à \(compteur) calcul")
                        print("Entrer le type d'opération \n 1 : Addition \n 2 : Soustraction \n 3 : Multiplication \n 4 : Division \n 5 : Modulo \n 6 : Carré")
                        
                        operateur = input()
                        
                            switch operateur {
                            case 1 : print("Vous avez choisi addition")
                            print("Veuillez entrer votre premier nombre")
                            nombre1 = input()
                            print("Veuillez entrer votre deuxième nombre")
                            nombre2 = input()
                            resultat = nombre1 + nombre2
                            print("Le resultat est \(resultat)")
                            case 2 : print("Vous avez choisi soustraction")
                            print("Veuillez entrer votre premier nombre")
                            nombre1 = input()
                            print("Veuillez entrer votre deuxième nombre")
                            nombre2 = input()
                            resultat = nombre1 - nombre2
                            print("Le resultat est \(resultat)")
                            case 3 : print("Vous avez choisi multiplication")
                            print("Veuillez entrer votre premier nombre")
                            nombre1 = input()
                            print("Veuillez entrer votre deuxième nombre")
                            nombre2 = input()
                            resultat = nombre1 * nombre2
                            print("Le resultat est \(resultat)")
                            case 4 : print("Vous avez choisi division")
                            print("Veuillez entrer votre premier nombre")
                            nombre1 = input()
                            print("Veuillez entrer votre deuxième nombre")
                            nombre2 = input()
                            resultat = nombre1 / nombre2
                            print("Le resultat est \(resultat)")
                            case 5 :print("Vous avez choisi modulo")
                            print("Veuillez entrer votre premier nombre")
                            nombre1 = input()
                            print("Veuillez entrer votre deuxième nombre")
                            nombre2 = input()
                            resultat = nombre1 % nombre2
                            print("Le resultat est \(resultat)")
                            case 6 :print("Vous avez choisi Carré")
                            print("Veuillez entrer votre un nombre")
                            nombre2 = input()
                            resultat = nombre2 * nombre2
                            print("Le resultat est \(resultat)")
                            default:
                                print("Vous n'avez pas choisi entre 1 et 6")
                            }
                        }
                        while operateur < 1 || operateur > 6
                    print("Souhaites-tu recommencer ? (Tapez sur la touche Entrer pour recommencer)")
                    reponse = readLine()!
                    if (reponse == String("")){
                        compteur += 1 // placé avant le rappel de la fonction "calculatrice()"
                        calculatrice()
                    }
                    else {
                        print("parfait au revoir!")
                    }
                }
                calculatrice()
                


                Merci beaucoup !!!

                -
                Edité par FifouAK 13 août 2019 à 20:25:27

                • Partager sur Facebook
                • Partager sur Twitter

                Calculatrice Amélioré Swift - Incrémentation ?

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown