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 :
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?
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 :