Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Diviseurs en C++ et bonnes pratiques

41 réponses
Avatar
Olivier Miakinen
Bonjour,

Ma principale expérience de C++ consiste en la maintenance de programmes
sous Windows avec Visual C++, sans aucune utilisation
de bibliothèque standard. Je voudrais remédier à cela en m'entraînant
sur Linux (avec gcc je suppose). Or il se trouve que j'ai un petit
problème à résoudre, et je pense que ça pourrait être l'occasion, mais
j'aurais besoin d'un peu d'aide au début pour le faire « à la C++ » et
pas avec les méthodes C que j'ai toujours utilisées jusqu'à présent.

Le « début » en question consiste à partir de la suite des nombres de 1
à 200 (dans un vector, je suppose), pour chaque nombre de déterminer la
liste ordonnée de ses diviseurs (dans d'autres vector sans doute), puis
d'écrire sur stdout toutes les décompositions des nombres en produits de
deux facteurs.

Par exemple, cela pourrait donner ceci :
1 : 1×1
2 : 1×2
3 : 1×3
4 : 1×4 2×2
...
8 : 1×8 2×4
9 : 1×9 3×3
10 : 1×10 2×5
...
36 : 1×36 2×18 3×12 4×9 6×6
...
199 : 1×199
200 : 1×200 2×100 4×50 5×40 8×25 10×20

Je ne cherche pas nécessairement à ce qu'on me mâche tout le boulot,
mais déjà, si quelqu'un pouvait m'indiquer où trouver d'une part les
bonnes pratiques C++ et d'autre part s'il existe une bibliothèque de
maths qui gère les décompositions en nombres premiers et les diviseurs,
ça me serait très utile.

Cordialement,
--
Olivier Miakinen

10 réponses

1 2 3 4 5
Avatar
Gabriel Dos Reis
Marc Boyer writes:

| Le 06-10-2010, Gabriel Dos Reis a écrit :
| > Marc Boyer writes:
| >| Mais souvent, on fait commencer par un truc genre
| >| "algorithmique et structures de données".
| >
| > Tu fais un cours d'algorithmique et de structures de données
| > en C++ à des gens qui ne savent pas programmer en C++ ?
|
| En quoi faire le cours d'algorithmique et de structures
| de données ?

Alors c'est « oui » ou c'est « non » ?

-- Gaby
Avatar
Gabriel Dos Reis
Marc Boyer writes:

[...]

| Gabriel Dos Reis a écrit :
| > Mon impression est que les
| > cours passaient le plus clair de leur temps à faire réimplà ©menter
| > des abstractions standard, au lieu d'apprendre à résoudre des
| > problèmes.
|
| D'une part, je n'étais pas à ces cours là, donc je n'ai pas
| d'avis dessus.

ah.

| Ensuite, tu opposes une méthode "réimplémenter des abstr actions
| standard" à un objectif "apprendre à résoudre des problà ¨mes".

Ah bon ?

| Et puis comme tout cours est un équilibre entre plein de choses
| (cours magistral/projet par exemple), celui dont tu parles souffrait
| peut-être d'un déséquilibre.
|
| Sinon, mon argument était que dans de nombreux domaines, dont
| l'informatique, le débutant commence à "faire ses gammes",
| à faire des exercices qui sont loins des problèmes réels,
| mais permettent d'aquérir de la technique.
|
| Mais le cas particulier de l'informatique, où la copie
| est facile et la ré-utilisation généralement encouragà ©e,
| l'élève rale assez souvent (dans mon expérience) d'avoir
| à coder un type ou une fonction, alors qu'il lui suffirait
| d'aller récupérer une implantation déjà existante pour
| résoudre le problème.

N'est-ce pas là une méthode de copie assez efficace pour
la question qui lui a été posée ? Ce serait même un bon cas de
réutilisation :-)

-- Gaby
Avatar
Marc Boyer
Le 06-10-2010, Gabriel Dos Reis a écrit :
Marc Boyer writes:

| Le 06-10-2010, Gabriel Dos Reis a écrit :
| > Marc Boyer writes:
| >| Mais souvent, on fait commencer par un truc genre
| >| "algorithmique et structures de données".
| >
| > Tu fais un cours d'algorithmique et de structures de données
| > en C++ à des gens qui ne savent pas programmer en C++ ?
|
| En quoi faire le cours d'algorithmique et de structures
| de données ?

Alors c'est « oui » ou c'est « non » ?



Ca dépend du contexte global.
Si ça ne dépendait que de moi, si on a assez d'heures pour faire
4-5 langages dans la formation, je dirais non. Mais je pourrais
me laisser convaincre de dire oui.

Je me tate.

Marc Boyer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
Avatar
Marc Boyer
Le 06-10-2010, Gabriel Dos Reis a écrit :
Marc Boyer writes:
| Gabriel Dos Reis a écrit :
| > Mon impression est que les
| > cours passaient le plus clair de leur temps à faire réimplémenter
| > des abstractions standard, au lieu d'apprendre à résoudre des
| > problèmes.

| Ensuite, tu opposes une méthode "réimplémenter des abstractions
| standard" à un objectif "apprendre à résoudre des problèmes".

Ah bon ?



Ben oui.

| Sinon, mon argument était que dans de nombreux domaines, dont
| l'informatique, le débutant commence à "faire ses gammes",
| à faire des exercices qui sont loins des problèmes réels,
| mais permettent d'aquérir de la technique.
|
| Mais le cas particulier de l'informatique, où la copie
| est facile et la ré-utilisation généralement encouragée,
| l'élève rale assez souvent (dans mon expérience) d'avoir
| à coder un type ou une fonction, alors qu'il lui suffirait
| d'aller récupérer une implantation déjà existante pour
| résoudre le problème.

N'est-ce pas là une méthode de copie assez efficace pour
la question qui lui a été posée ? Ce serait même un bon cas de
réutilisation :-)



Sauf que dans l'enseignement, on demande généralement à
l'étudiant de faire lui même. D'ailleurs, souvent, la correction
existe déjà, l'enseignant perd donc une energie importante en
demandant à faire ce qui existe déjà chez lui...

Sinon, copier sur le voisin est aussi assez efficace.

Marc Boyer
--
En prenant aux 10% des francais les plus riches 12% de leurs revenus,
on pourrait doubler les revenus des 10% les plus pauvres.
http://www.inegalites.fr/spip.php?article1&id_mot0
Avatar
Stan
On 6 oct, 10:29, Gabriel Dos Reis wrote:
James Kanze writes:

[...]

| Mais c'est peut-être lié au contexte. Nous récherchons surtout
| une maîtrise du calcul numérique, avec des connaissances des
| algorithmes de marché, si possible. Le C++ est important, mais
| pas primordial. (Et en passant, nous recherchons toujours.)

Comment est le marché du travail de l'autre côté de l'Atlantique ?




Ces derniers temps, il y a eu un pic dans le domaine bancaire.
Suite aux pertes occasionnées par un trader ( en France), il a été
jugé
utile de sécuriser les mécanismes financiers.
Quelques millions d'euros ont été 'investi' à cet effet.

Le domaine de la Défense se porte bien.

Et je pense ( je n'ai pas de chiffre) qu'au niveau de l'E-Commerce, le
marché
se porte bien.

(Ici, on note un certain décalage entre l'offre et les compétences
des candidats...)




c'est à dire ?

--
-Stan
Avatar
Gabriel Dos Reis
Marc Boyer writes:

| Le 06-10-2010, Gabriel Dos Reis a écrit :
| > Marc Boyer writes:
| >
| >| Le 06-10-2010, Gabriel Dos Reis a écrit :
| >| > Marc Boyer writes:
| >| >| Mais souvent, on fait commencer par un truc genre
| >| >| "algorithmique et structures de données".
| >| >
| >| > Tu fais un cours d'algorithmique et de structures de données
| >| > en C++ à des gens qui ne savent pas programmer en C++ ?
| >|
| >| En quoi faire le cours d'algorithmique et de structures
| >| de données ?
| >
| > Alors c'est « oui » ou c'est « non » ?
|
| Ca dépend du contexte global.
| Si ça ne dépendait que de moi, si on a assez d'heures pour fa ire
| 4-5 langages dans la formation, je dirais non. Mais je pourrais
| me laisser convaincre de dire oui.
|
| Je me tate.

Je vois bien que tu te tates, mais je ne comprends pas pourquoi
une question aussi simple et totale donne lieu à une réponse qui
n'en est pas une.

-- Gaby
Avatar
Gabriel Dos Reis
Marc Boyer writes:

| Le 06-10-2010, Gabriel Dos Reis a écrit :
| > Marc Boyer writes:
| >| Gabriel Dos Reis a écrit :
| >| > Mon impression est que les
| >| > cours passaient le plus clair de leur temps à faire réimpl émenter
| >| > des abstractions standard, au lieu d'apprendre à résoudre des
| >| > problèmes.
| >
| >| Ensuite, tu opposes une méthode "réimplémenter des ab stractions
| >| standard" à un objectif "apprendre à résoudre des probl èmes".
| >
| > Ah bon ?
|
| Ben oui.

Ben non. Tu aurais peut-être voulu que je dise cela, mais ce
n'est pas ce que j'ai dit.

| >| Sinon, mon argument était que dans de nombreux domaines, dont
| >| l'informatique, le débutant commence à "faire ses gammes",
| >| à faire des exercices qui sont loins des problèmes réel s,
| >| mais permettent d'aquérir de la technique.
| >|
| >| Mais le cas particulier de l'informatique, où la copie
| >| est facile et la ré-utilisation généralement encourag ée,
| >| l'élève rale assez souvent (dans mon expérience) d'avoir
| >| à coder un type ou une fonction, alors qu'il lui suffirait
| >| d'aller récupérer une implantation déjà existante pour
| >| résoudre le problème.
| >
| > N'est-ce pas là une méthode de copie assez efficace pour
| > la question qui lui a été posée ? Ce serait même un bon cas de
| > réutilisation :-)
|
| Sauf que dans l'enseignement, on demande généralement à
| l'étudiant de faire lui même.

si la copie et la ré-utilisation sont encouragées, je crois que
l'élève remplit son contrat...

| D'ailleurs, souvent, la correction
| existe déjà, l'enseignant perd donc une energie importante en
| demandant à faire ce qui existe déjà chez lui...

Je ne te le fais pas dire.

| Sinon, copier sur le voisin est aussi assez efficace.

Si tu le dis...

-- Gaby
Avatar
Gabriel Dos Reis
Stan writes:

| On 6 oct, 10:29, Gabriel Dos Reis wrote:
| > James Kanze writes:
| >
| > [...]
| >
| > | Mais c'est peut-être lié au contexte. Nous récherchons surtout
| > | une maîtrise du calcul numérique, avec des connaissances des
| > | algorithmes de marché, si possible. Le C++ est important, mais
| > | pas primordial. (Et en passant, nous recherchons toujours.)
| >
| > Comment est le marché du travail de l'autre côté de l'At lantique ?
| >
|
| Ces derniers temps, il y a eu un pic dans le domaine bancaire.
| Suite aux pertes occasionnées par un trader ( en France), il a à ©té
| jugé
| utile de sécuriser les mécanismes financiers.
| Quelques millions d'euros ont été 'investi' à cet effet.

Ah, il sera donc honnoré pour avoir pris des démarches concrà ¨tes
menant à des mesures soutenant la création d'emplois ?

| Le domaine de la Défense se porte bien.

:-)

|
| Et je pense ( je n'ai pas de chiffre) qu'au niveau de l'E-Commerce, le
| marché
| se porte bien.
|
| > (Ici, on note un certain décalage entre l'offre et les compét ences
| > des candidats...)
| >
|
| c'est à dire ?

Pendant la crise, il y a eu une poussée vers certains aspects de
la technologie informatique et une « liquidation » de certains do mains
traditionnels, de sorte que maintenant les propositions d'emploi
ne correspondent pas forcément à la majorité des applicants.
Par exemple, je remarque que cette année la demande de mains d'oeuvre
qualifiées en « robotique + logiciel + AI » monte en pique.

-- Gaby
Avatar
Stan
On 6 oct, 18:11, Gabriel Dos Reis wrote:


Pendant la crise, il y a eu une poussée vers certains aspects de
la technologie informatique et une « liquidation » de certains domain s
traditionnels, de sorte que maintenant les propositions d'emploi
ne correspondent pas forcément à la majorité des applicants.
Par exemple, je remarque que cette année la demande de mains d'oeuvre
qualifiées en « robotique + logiciel + AI » monte en pique.




Cela ne me surprend pas, d'une part je pense
que le Japon a une certaine influence.
( Elle donne un bon exemple des nombreuses
application de la robotique).
Et de plus, on cherche à remplacer l'Homme là où
on n'imaginait pas le faire il y a seulement une décénie;
un exemple : les inspections visuelles des avions au sol
qui sont confié à des machines ( plus complexe
que d'inspecter une boîte de conserve sur une chaine
de fabrication ;-) ).

Dans le domaine de la Défense, les secteurs
très en vogue en ce moment,
sont justement la robotique et les drones.

En France les diplomes ou formations de robotique
et AI sont assez récents, donc si la demande
devait monter en flêche, l'offre ne serait peut être
pas en adéquation.

--
-Stan
Avatar
James Kanze
On Oct 6, 9:29 am, Gabriel Dos Reis wrote:
James Kanze writes:

[...]

| Mais c'est peut-être lié au contexte. Nous récherchons surtout
| une maîtrise du calcul numérique, avec des connaissances des
| algorithmes de marché, si possible. Le C++ est important, mais
| pas primordial. (Et en passant, nous recherchons toujours.)

Comment est le marché du travail de l'autre côté de l'Atlantique ?



Globalement, pas terrible, d'après ce que je vois. Je m'étais
resigné à rester jusqu'à la retraite où j'étais, même si je
m'ennuyais un peu. Puis, UBS m'a fait un offre, sans que je le
cherche ; les banques à Londres semblent être l'exception, et je
crois qu'on n'est pas les seuls qui embauchent.

(Ici, on note un certain décalage entre l'offre et les
compétences des candidats...)



Ça, de toute façon. On cherche les gens compétents, alors que la
plupart des candidats... Pour exemple, nous exigeons une bonne
connaissance de la bibliothèque standard, avec en plus un peu de
Boost, si possible, et des notions de base de la
métaprogrammation avec templates. Ainsi que une très bonne
connaissances des techniques numériques. Et de savoir comment
écrire du code correct et facile à lire et à modifier par la
suite. Et de pouvoir s'exprimer en anglais, évidemment (bien que
prèsque la moitié des gens avec qui je travaille actuellement
sont des francophones). Alors que ce qu'on trouve... (Et on
paie assez pour pouvoir prétendre à la crême des candidats.)

--
James Kanze
1 2 3 4 5