Parcours
/
C#
C#
/
Exercices
/
Voitures, assemble !
Voitures, assemble !

Voitures, assemble !

Exercice d'apprentissage

Introduction

Nombres

Il existe deux types de nombres différents en C# :

  • Les entiers : des nombres sans chiffre après la virgule (nombres entiers). Par exemple -6, 0, 1, 25, 976 et 500000.
  • Les nombres à virgule flottante : des nombres avec zéro ou plusieurs chiffres après la virgule. Par exemple -2.4, 0.1, 3.14, 16.984025 et 1024.0.

Les deux types numériques les plus courants en C# sont int et double. Un int est un entier de 32 bits et un double est un nombre à virgule flottante de 64 bits.

Les opérations arithmétiques se font avec les opérateurs arithmétiques standards. On peut comparer des nombres avec les opérateurs de comparaison numériques standards, ainsi qu'avec les opérateurs d'égalité (==) et d'inégalité (!=).

C# propose deux types de conversions numériques :

  1. Les conversions implicites : aucune donnée ne sera perdue et aucune syntaxe supplémentaire n'est nécessaire.
  2. Les conversions explicites : des données peuvent être perdues et une syntaxe supplémentaire, sous la forme d'un cast, est nécessaire.

Comme un int a moins de précision qu'un double, convertir un int en double est sans risque et constitue donc une conversion implicite. En revanche, convertir un double en int peut entraîner une perte de données, ce qui exige une conversion explicite.

int softCool = 1358938113;
double notLost = 4.8151623;

// implicit cast: no loss of information
double macDebug = softCool;         // 1358938113.0

// explicit cast: possible loss of information 
int somethingLost = (int)notLost;   // 4

Les instructions if

Dans cet exercice, tu dois exécuter de la logique de manière conditionnelle. En C#, la façon la plus courante de le faire est d'utiliser une instruction if/else :

int x = 6;

if (x == 5)
{
    // Execute logic if x equals 5
}
else if (x > 7)
{
    // Execute logic if x greater than 7
}
else
{
    // Execute logic in all other cases
}

La condition d'une instruction if doit être de type bool. C# ne connaît pas la notion de valeurs truthy.

Instructions

Dans cet exercice, tu vas écrire du code pour analyser la production d'une chaîne de montage dans une usine de voitures. La vitesse de la chaîne de montage peut aller de 0 (arrêt) à 10 (maximum).

À sa vitesse minimale (1), 221 voitures sont produites chaque heure. La production augmente linéairement avec la vitesse. Ainsi, avec une vitesse réglée sur 4, elle devrait produire 4 * 221 = 884 voitures par heure. Cependant, des vitesses plus élevées augmentent la probabilité que des voitures défectueuses soient produites, et celles-ci doivent alors être écartées.

Tu as trois tâches.

1. Calcule le taux de réussite

Implémente la méthode (static) AssemblyLine.SuccessRate() pour calculer la proportion d'objets fabriqués sans erreur pour une vitesse donnée. Le tableau suivant montre comment la vitesse influence le taux de réussite :

  • 0 : taux de réussite de 0 %.
  • 1 à 4 : taux de réussite de 100 %.
  • 5 à 8 : taux de réussite de 90 %.
  • 9 : taux de réussite de 80 %.
  • 10 : taux de réussite de 77 %.
AssemblyLine.SuccessRate(10)
// => 0.77

2. Calcule le taux de production par heure

Implémente la méthode (static) AssemblyLine.ProductionRatePerHour() pour calculer le taux de production horaire de la chaîne de montage, en tenant compte de son taux de réussite :

AssemblyLine.ProductionRatePerHour(6)
// => 1193.4

Note que la valeur renvoyée est un double.

3. Calcule le nombre de voitures fonctionnelles produites par minute

Implémente la méthode (static) AssemblyLine.WorkingItemsPerMinute() pour calculer combien de voitures fonctionnelles sont produites par minute :

AssemblyLine.WorkingItemsPerMinute(6)
// => 19

Note que la valeur renvoyée est un int.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
C# Exercism

Prêt à commencer Voitures, assemble ! ?

Inscris-toi sur Exercism pour apprendre et maîtriser C# avec 62 concepts178 exercices, et un vrai mentorat humain, le tout gratuitement.