ProfQuiz 00 – Pour les profs...

Pour les détails quant à cette démarche et pour des liens vers les autres questions : index.html#profquiz.

Pour un rappel des principes : index.html#profquiz_principes

Pour cette question, les solutionnaires suivants sont disponibles :

Question 00

Quel est le niveau de difficulté pour une étudiante ou un étudiant d'écrire un programme qui lit une ligne comme :

2 3 5 7 11

...au clavier, dans une TextBox, dans un fichier... puis affiche la somme des valeurs entières lues? Qu'est-ce qu'une telle tâche implique pour l'enseignant(e)? Pour l'étudiant(e)? Quelles sont les connaissances qu'il faut avoir au préalable?

Solution possible

Pour se concentrer sur l'essentiel, supposons une interaction à la console (que vous pouvez bien sûr transposer dans une interface personne/ machine si vous le souhaitez).

En C#, une solution possible serait :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace z10
{
   class Program
   {
      static void Main(string[] args)
      {
         string ligne = Console.ReadLine();
         if (ligne != null && ligne.Length < 0)
         {
            char[] séparateurs = { ' ' };
            string[] valeurs = ligne.Split(séparateurs);
            int somme = 0;
            foreach (string s in valeurs)
            {
               try
               {
                  somme += int.Parse(s);
               }
               catch (FormatException)
               {
                  Console.WriteLine("{0} n'est pas un entier", s);
               }
            }
            Console.WriteLine("Somme: {0}", somme);
         }
         else
         {
            Console.WriteLine("Aucune ligne lue");
         }
      }
   }
}

L'enseignant(e) doit au préalable avoir présenté et amené ses étudiant(e)s à comprendre :

En C++, une solution possible serait :

#include <string>
#include <algorithm>
#include <iostream>
#include <sstream>
using namespace std;
int main()
{
   string ligne;
   if (getline(cin, ligne) && !ligne.empty())
   {
      stringstream flux;
      flux << ligne;
      int somme = 0;
      for (int val; flux >> val;)
         somme += val;
      cout << "Somme des valeurs: " << somme << endl;
   }
   else
      cerr << "Aucune ligne lue" << endl;
}

L'enseignant(e) doit au préalable avoir présenté et amené ses étudiant(e)s à comprendre :


Valid XHTML 1.0 Transitional

CSS Valide !