Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation (La)TeX avancée Discussion :

fiches d'exercices aléatoires


Sujet :

Programmation (La)TeX avancée

  1. #1
    Nouveau membre du Club
    fiches d'exercices aléatoires
    Bonjour à tous.

    J'ai créé des exercices de calcul mental avec des valeurs aléatoires. Je pensais qu'avec une boucle multido je pourrai ainsi créer des fiches d'exercices différentes pour éviter la triche, mais toutes les fiches sont identiques. Comme si seule la dernière version était prise en compte.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[frenchb]{babel}
    \usepackage{Fp}
    \input{xstring}
    \usepackage{multido}
    \usepackage{multicol}
    \usepackage{enumerate}
    \usepackage{ifthen}
    %
    \newcommand*\eaddto[2]{%
    \edef\tmp{#2}%
    \expandafter\addto
    \expandafter#1%
    \expandafter{\tmp}
    }
     
     
    \expandafter\FPseed\expandafter=\pdfuniformdeviate 1000000\relax
     
    %
    %
    \begin{document}
    %
    %
    \multido{}{2}{
    %
    %
    \multido{}{20}{
    	\FPeval{\choix}{trunc(4*random+1,0)}
    %	
    	\ifthenelse{\choix=1}{%
    		\FPeval{\a}{trunc(40*random+1,0)}
    		\FPeval{\b}{trunc(40*random+1,0)}
    		\FPeval{\c}{clip(\a+\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{+}}
    	}{}
    	\ifthenelse{\choix=2}{%
    		\FPeval{\abis}{trunc(40*random+1,0)}
    		\FPeval{\bbis}{trunc(40*random+1,0)}
    		\FPeval{\a}{max(\abis,\bbis)}
    		\FPeval{\b}{min(\abis,\bbis)}
    		\FPeval{\c}{clip(\a-\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{-}}
    	}{}
    	\ifthenelse{\choix=3}{%
    		\FPeval{\a}{trunc(9*random+1,0)}
    		\FPeval{\b}{trunc(9*random+1,0)}
    		\FPeval{\c}{clip(\a*\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{\times}}
    	}{}
    	\ifthenelse{\choix=4}{%
    		\FPeval{\b}{trunc(9*random+1,0)}
    		\FPeval{\c}{trunc(9*random+1,0)}
    		\FPeval{\a}{clip(\c*\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{\div}}
    	}{}}
    %
    \section{Exercice}
    %
    Effectue les calculs ci-dessous:
    \begin{multicols}{2}
    \begin{enumerate}[(1)]
    	\multido{\n=1+1}{20}{
    	\item $\StrChar{\lista}{\n}\StrChar{\listsgn}{\n}\StrChar{\listb}{\n}=\ldots \ldots$}
    \end{enumerate}
    \end{multicols}
    %
    \section{Corrigé}
    %
    \begin{multicols}{4}
    \begin{enumerate}[(1)]
    	\multido{\n=1+1}{20}{
    	\item $\StrChar{\lista}{\n}\StrChar{\listsgn}{\n}\StrChar{\listb}{\n}=\StrChar{\listc}{\n}$}
    \end{enumerate}
    \end{multicols}
    %
    }
    %
    \end{document}

  2. #2
    Membre actif
    Bonjour, cela vient du fait que vous ne réinitialisez pas vos listes après avoir généré une série de calculs. J'ai ajouté des \def\lista{} pour réinitialiser les listes sinon au deuxième exercice on lit les mêmes valeurs.

    Code latex :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
     
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[frenchb]{babel}
    \usepackage{fp}
    \usepackage{xstring}
    \usepackage{multido}
    \usepackage{multicol, enumerate}
    \usepackage{ifthen}
    %
    \newcommand*\eaddto[2]{%
    \edef\tmp{#2}%
    \expandafter\addto
    \expandafter#1%
    \expandafter{\tmp}
    }
     
     
    %\expandafter\FPseed\expandafter=\pdfuniformdeviate 1000000\relax
    \expandafter\FPseed\expandafter=\pdfuniformdeviate 1000000000\relax
     
    %
    %
    \begin{document}
    %
    %
    \multido{}{2}{%
    \def\lista{}
    \def\listb{}
    \def\listc{}
    \def\listsgn{}
    %
    %
    \multido{}{20}{
    	\FPeval{\choix}{trunc(4*random+1,0)}
    %	
    	\ifthenelse{\choix=1}{%
    		\FPeval{\a}{trunc(40*random+1,0)}
    		\FPeval{\b}{trunc(40*random+1,0)}
    		\FPeval{\c}{clip(\a+\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{+}}
    	}{}
    	\ifthenelse{\choix=2}{%
    		\FPeval{\abis}{trunc(40*random+1,0)}
    		\FPeval{\bbis}{trunc(40*random+1,0)}
    		\FPeval{\a}{max(\abis,\bbis)}
    		\FPeval{\b}{min(\abis,\bbis)}
    		\FPeval{\c}{clip(\a-\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{-}}
    	}{}
    	\ifthenelse{\choix=3}{%
    		\FPeval{\a}{trunc(9*random+1,0)}
    		\FPeval{\b}{trunc(9*random+1,0)}
    		\FPeval{\c}{clip(\a*\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{\times}}
    	}{}
    	\ifthenelse{\choix=4}{%
    		\FPeval{\b}{trunc(9*random+1,0)}
    		\FPeval{\c}{trunc(9*random+1,0)}
    		\FPeval{\a}{clip(\c*\b)}
    			\eaddto{\lista}{{\a}}
    			\eaddto{\listb}{{\b}}
    			\eaddto{\listc}{{\c}}
    			\eaddto{\listsgn}{{\div}}
    	}{}}
    %
    \section{Exercice}
    %
    Effectue les calculs ci-dessous:
    \begin{multicols}{2}
    \begin{enumerate}[(1)]
    	\multido{\n=1+1}{20}{
    	\item $\StrChar{\lista}{\n}\StrChar{\listsgn}{\n}\StrChar{\listb}{\n}=\ldots \ldots$}
    \end{enumerate}
    \end{multicols}
    %
    \section{Corrigé}
    %
    \begin{multicols}{4}
    \begin{enumerate}[(1)]
    	\multido{\n=1+1}{20}{
    	\item $\StrChar{\lista}{\n}\StrChar{\listsgn}{\n}\StrChar{\listb}{\n}=\StrChar{\listc}{\n}$}
    \end{enumerate}
    \end{multicols}
    %
    }
     
     
     
    \end{document}


    D'autre part je ne sais pas quelle version de latex tu utilises, mais ton préambule est assez étrange. Sauf si tu as installé des packages à la main ou que certains sont dans ton dossier de travail.


    EDIT : j'avoue oublié de réinitialiser une liste

  3. #3
    Nouveau membre du Club
    Bonjour.

    Merci beaucoup, en effet problème résolu. J'utilise Miktex, j'ai installé la version en 2015 et n'ai pas fait attention s'il y avait de nouvelles versions.

    Qu'est-ce qui t'as choqué ?

  4. #4
    Membre actif
    Citation Envoyé par Dexter80 Voir le message
    Bonjour.

    Merci beaucoup, en effet problème résolu. J'utilise Miktex, j'ai installé la version en 2015 et n'ai pas fait attention s'il y avait de nouvelles versions.

    Qu'est-ce qui t'as choqué ?
    Le \input{xstring} Mais si tout marche comme ça, ne touche à rien

###raw>template_hook.ano_emploi###