1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    janvier 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : janvier 2010
    Messages : 52
    Points : 36
    Points
    36

    Par défaut Forcer à une saisie numérique

    Bonjour,
    Je me suis mis à SWIFT donc je fais quelques tests en "Commande line Tool" et je peaufine un peu pour m'habituer à ce language.
    J'améliore un bout de code récupéré sur le net et j'y intègre des tests de saisies.
    J'utilise Xcode.
    Voilà le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    //
    //  main.swift
    //  ProgLines01
    //
    //  Created by Patyom on 29/04/2017.
    //  Copyright © 2017 Patyom. All rights reserved.
    //
     
    import Foundation
     
    // 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!)!
    }
    // Fonction permettant de demander à l'utilisateur d'entrer un string
    func inputStr() -> String {
        let strDataStr = readLine();
        return String(strDataStr!)!
    }
     
    // Déclaration des variables utiles pour le TP
    var nombre1: Int
    var nombre2: Int
    var compteur: Int = 0
    var cpt: Int = 0
    var texte: String
    var ouinon : String
    var operateur: Int // Comprendra un nombre correspondant au menu (par exemple 1 pour une Addition)
    var resultat: Int
     
    //var liste: [Int:String] = [1: "Addition", 2: "Soustraction", 3: "Multiplication", 4: "Division", 5: "Modulo", 6: "Carré"]
    var liste = ["Addition", "Soustraction", "Multiplication", "Division", "Modulo", "Carré"]
     
    // Essai tantque La réponse est égal à "o" ou "O"
    repeat {
    // On boucle tant que l'utilisateur n'a pas rentré un nombre compris entre 1 et 6
        repeat {
            cpt = 0
            // On affiche tout d'abord le menu
            print("--- Menu ---")
            for i in liste {
                cpt = cpt + 1
                var texte = "\(cpt)" + ". " + i
                print(texte)
            }
     
            print("")
     
     
            // On demande à l'utilisateur ce qu'il souhaite
            print("Que voulez-vous ? (de 1 à 6) ")
            repeat {
                operateur = input()
     
            } while (operateur < 1 || operateur > 6)
     
            print("") // Permet de réaliser un saut de ligne
     
            // Affichage du type de choix
    //        print("Vous avez choisi : " + liste[operateur])
            print("") // Permet de réaliser un saut de ligne
     
            // Pour réaliser l'opération, il est nécessaire d'avoir entré un nombre qui correspond au menu
            if (operateur > 0 && operateur < 7) {
     
                // test d'affichage de demande d'1 ou 2 nombres
                if (operateur == 6) {
                    // L'utilisateur rentre un nombre pour calcul "Carré"
                    print("Entrez un nombre : ")
                    nombre1 = input()
                    switch operateur {
                    case 6: // Carré
                        resultat = nombre1 * nombre1
     
                    default:
                        resultat = 0 // On ne devrait pas entrer dans ce cas normalement, mais si jamais, on indique à 0 le résultat.
                        print("Une erreur est survenue.")
                    }
     
                } else {
                    // L'utilisateur rentre le premier nombre
                    print("Entrez le premier nombre : ")
                    nombre1 = input()
     
                    // L'utilisateur rentre le deuxième nombre
                    print("Entrez le deuxième nombre : ")
                    nombre2 = input()
     
                    switch operateur {
                    case 1: // Addtion
                        resultat = nombre1 + nombre2
     
                    case 2: // Soustraction
                        resultat = nombre1 - nombre2
     
                    case 3: // Multiplication
                        resultat = nombre1 * nombre2
     
                    case 4: // Division
                        resultat = nombre1 / nombre2
     
                    case 5: // Modulo
                        resultat = nombre1 % nombre2
     
                    default:
                        resultat = 0 // On ne devrait pas entrer dans ce cas normalement, mais si jamais, on indique à 0 le résultat.
                        print("Une erreur est survenue.")
     
                    }
                }
     
                // Enfin, on affiche le résultat
                print("")
                print("Le résultat de " + liste[operateur - 1] + " est : \(resultat)")
                print("")
     
                compteur = compteur + 1
     
                // Affichage du compteur
                print("Vous avez déjà effectué \(compteur)")
                print("")
            }
        } while (operateur < 1 || operateur > 6)
     
     
        // Question à L'utilisateur pour un autre essai
        print("Voulez-vous procéder à un nouvel essai ? ")
        ouinon = inputStr()
     
    } while (ouinon == "O" || ouinon == "o")
    A chaque fois que je saisi une lettre sur une demande de chiffre, il plante bien entendu.
    Je ne connais pas l'instruction (s'il y a) pour éviter cela.

  2. #2
    Membre à l'essai
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    juin 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : juin 2017
    Messages : 14
    Points : 19
    Points
    19

    Par défaut

    Bonjour

    À chaque fois que je saisis une lettre sur une demande de chiffre, il plante bien entendu.
    Je ne connais pas l'instruction (s'il y a) pour éviter cela.

    Ligne 55: Je vous propose de remplacer cette ligne de code
    Par celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    operateur = Int(readLine() ?? "") ?? 0
    Si la saisie n'est pas conforme à un Int alors "operateur" prends la valeur zéro.
    Votre code semble bien fonctionner et ne plante plus si vous saisissez une lettre.

    Cordialement.

Discussions similaires

  1. Réponses: 7
    Dernier message: 04/05/2017, 13h33
  2. Obliger une saisie numérique dans une VSFlexGrid?
    Par GOLDINGMAROC dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/12/2012, 12h23
  3. [PHP-JS] Forcer une saisie numérique
    Par Empty_body dans le forum Syntaxe
    Réponses: 9
    Dernier message: 04/10/2011, 18h46
  4. forcer la saisie en majuscule dans une input
    Par griese dans le forum JavaScript
    Réponses: 13
    Dernier message: 27/10/2009, 16h02
  5. PROBLEME : Forcer la saisie des Champs numériques!!!!!
    Par Grozeil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/03/2005, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo