Exercice Corrigé Langage Swift – Partie 3

Avec des exercices corrigés en langage Swift, vous pratiquerez divers concepts du langage Swift. Vous commencerez par des exercices du langage Swift de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
 
 
Utiliser l’éditeur Swift pour résoudre les exercices : (Cliquez sur l’onglet input si vous souhaitez entrer des valeurs, cliquez sur Run pour exécuter votre programme, le résultat sera affichée sur l’onglet output).
 

Exercice 1:

Créez une fonction qui prend un nombre et renvoie TRUE s’il est inférieur ou égal à zéro, sinon retournez FALSE.

Exemple:

checkNbr(1) ➞ false

checkNbr(-1) ➞ true

checkNbr(0) ➞ true
Solution:

// Déclare une fonction appelée "checkNbr"
// qui reçoit un nombre décimal "n" de type Double.
// La fonction retourne une valeur booléenne : true ou false.
func checkNbr(_ n: Double) -> Bool {
    
    // Vérifie si "n" est inférieur ou égal à 0.
    // Retourne true si la condition est vraie,
    // sinon retourne false.
    return n <= 0
}
 

Exercice 2:

Créez une fonction qui prend une phrase et renvoie le nombre de mots.

Exemple:

count("Welcome to WayToLearnX") ➞ 3

count("Hello World") ➞ 2

count("I am going to my school") ➞ 6
Solution:

// Déclare une fonction appelée "count"
// qui reçoit une chaîne de caractères "str".
// La fonction retourne un entier.
func count(_ str: String) -> Int {
    
    // Sépare la chaîne en plusieurs éléments
    // en utilisant l'espace comme séparateur.
    // "count" retourne ensuite le nombre d'éléments obtenus.
    return str.split(separator: " ").count
}
 

Exercice 3:

Créez une fonction pour multiplier toutes les valeurs d'un tableau par la longueur du tableau donné.

Exemple:

mulByLen([1, 1, 1]) ➞ [ 3, 3, 3 ]

mulByLen([1, 2, 3]) ➞ [ 3, 6, 9 ]

mulByLen([0, 0, 0, 0, 2]) ➞  [ 0, 0, 0, 0, 10 ]
Solution:

// Déclare une fonction appelée "mulByLen"
// qui reçoit un tableau d'entiers "tab".
// La fonction retourne un nouveau tableau d'entiers.
func mulByLen(_ tab: [Int]) -> [Int] {
    
    // Parcourt chaque élément du tableau avec "map".
    // "$0" représente l'élément courant du tableau.
    // Multiplie chaque élément par le nombre total d'éléments 
    // du tableau.
    // Puis retourne le nouveau tableau.
    return tab.map({ $0 * tab.count })
}
 
 

Exercice 4:

Créez une fonction qui prend un tableau et une chaîne comme arguments et renvoie l'index de la chaîne.

Exemple:

getIndex(["A", "B", "C", "D"], "B") ➞ 1

getIndex(["Alex", "Bob", "Emily", "Tom"], "Emily") ➞ 2

getIndex(["C#", "PHP", "C++", "Java"], "C#") ➞ 0
Solution:

// Déclare une fonction appelée "getIndex"
// qui reçoit un tableau de chaînes de caractères "arr"
// et une chaîne de caractères "str" à rechercher.
// La fonction retourne un entier correspondant à l'indice de "str".
func getIndex(_ arr: [String], _ str: String) -> Int {
    
    // Recherche la position de "str" dans le tableau "arr".
    // "firstIndex(of:)" retourne l'indice du premier élément trouvé.
    // Le "!" force le déballage de la valeur optionnelle.
    return arr.firstIndex(of: str)!
}
 

Exercice 5:

Créez une fonction qui trouve tous les nombres pairs de 1 au nombre donné.

Exemple:

nbrPaire(6) ➞ [2, 4, 6]

nbrPaire(4) ➞ [2, 4]

nbrPaire(2) ➞ [2]
Solution:

// Déclare une fonction appelée "nbrPaire"
// qui reçoit un entier "n" en paramètre.
// La fonction retourne un tableau d'entiers.
func nbrPaire(_ n: Int) -> [Int] {
    
    // Crée un tableau contenant tous les nombres
    // compris entre 1 et "n".
    let numbers = [Int](1...n)
    
    // Parcourt le tableau et conserve uniquement
    // les nombres divisibles par 2.
    // "$0" représente l'élément courant du tableau.
    return numbers.filter { $0 % 2 == 0 }
}
 

Exercice 6:

Créez une fonction qui prend un tableau de nombres et renvoie uniquement les valeurs paires.
 
Exemple:

getEvenNbr([1, 2, 3, 4, 5, 6]) ➞ [2, 4, 6]

getEvenNbr([1, 7, 3, 9, 10]) ➞ [10]

getEvenNbr([2, 4, 6, 8, 10, 12]) ➞ [2, 4, 6, 8, 10, 12]
Solution:

// Déclare une fonction appelée "getEvenNbr"
// qui reçoit un tableau d'entiers "tab".
// La fonction retourne un tableau d'entiers.
func getEvenNbr(_ tab: [Int]) -> [Int] {
    
    // Parcourt tous les éléments du tableau avec "filter".
    // "$0" représente l'élément courant du tableau.
    // Conserve uniquement les nombres pairs,
    // c'est-à-dire ceux dont le reste de la division par 2 est égal 
    // à 0.
    return tab.filter { $0 % 2 == 0 }
}
 
 

Exercice 7:

Créez une fonction qui renvoie le produit de tous les entiers impairs dans un tableau.
 
Exemple:

prodNbrImp([1, 2, 3, 4, 5]) ➞ 15

prodNbrImp([3, 3, 4, 4]) ➞ 9

prodNbrImp([1, 3, 5, 7]) ➞ 105
Solution:

// Déclare une fonction appelée "prodNbrImp"
// qui reçoit un tableau d'entiers "tab".
// La fonction retourne un entier.
func prodNbrImp(_ tab: [Int]) -> Int {
    
    // Filtre le tableau pour conserver uniquement
    // les nombres impairs.
    // "$0" représente l'élément courant du tableau.
    let nombresImpairs = tab.filter { $0 % 2 == 1 }
    
    // Multiplie tous les nombres impairs entre eux.
    // "1" est la valeur initiale du produit.
    return nombresImpairs.reduce(1, *)
}
 

Exercice 8:

Créez une fonction qui prend un tableau de chaînes et renvoie un tableau, trié du plus petit au plus grand.
 
Exemple:

sortByLen(["Python", "Swift", "PHP"])
➞ ["PHP", "Swift", "Python"]

sortByLen(["Louise", "Juliette", "Léo", "Camille"])
➞ ["Léo", "Louise", "Camille", "Juliette"]

sortByLen(["Strasbourg", "Paris", "Toulouse", "Caen"])
➞ ["Caen", "Paris", "Toulouse", "Strasbourg"]
Solution:

// Déclare une fonction appelée "sortByLen"
// qui reçoit un tableau de chaînes de caractères "tab".
// La fonction retourne un nouveau tableau de chaînes de caractères.
func sortByLen(_ tab: [String]) -> [String] {
    
    // Trie les chaînes de caractères par ordre croissant
    // en fonction de leur longueur.
    // "$0" représente la première chaîne comparée.
    // "$1" représente la deuxième chaîne comparée.
    return tab.sorted { $0.count < $1.count }
}
 

Exercice 9:

Créez une fonction qui répète chaque caractère dans une chaîne n fois.

Exemple:

repeatChr("alex", 3) ➞ "aaallleeexxx"

repeatChr("waytolearnx", 1) ➞ "waytolearnx"

repeatChr("bob", 2) ➞ "bboobb"
Solution:

// Déclare une fonction appelée "repeatChr"
// qui reçoit une chaîne de caractères "str"
// et un entier "n" indiquant le nombre de répétitions.
// La fonction retourne une chaîne de caractères.
func repeatChr(_ str: String, _ n: Int) -> String {
    
    // Parcourt chaque caractère de la chaîne avec "map".
    // "$0" représente le caractère courant.
    // "String(repeating:count:)" répète chaque caractère "n" fois.
    // "joined()" rassemble toutes les chaînes obtenues
    // en une seule chaîne de caractères.
    return str.map { String(repeating: String($0), count: n) }.joined()
}

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *