source: pyromaths/trunk/fuentes/src/pyromaths/ex/cinquiemes/aires.py @ 423

Last change on this file since 423 was 423, checked in by mabarracus, 4 years ago

add sources from pyromaths 15.10

File size: 4.3 KB
Line 
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3#
4# Pyromaths
5# Un programme en Python qui permet de créer des fiches d'exercices types de
6# mathématiques niveau collège ainsi que leur corrigé en LaTeX.
7# Copyright (C) 2006 -- Jérôme Ortais (jerome.ortais@pyromaths.org)
8#
9# This program is free software; you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation; either version 2 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program; if not, write to the Free Software
21# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22#
23import random
24from pyromaths.outils.decimaux import decimaux
25
26#
27# ------------------- Aire de disques -------------------
28#
29
30
31def arrondir(nombre):
32    [partie_entiere, partie_decimale] = nombre.split(".")
33    return int(partie_entiere) + (int(partie_decimale[0]) >= 5)
34
35
36def exo_aire_diques():
37    exo = ["\\exercice"]
38    cor = ["\\exercice*"]
39    rayon1 = 2 * (random.randrange(33) + 1)
40    rayon2 = int(1.5 * rayon1)
41    i = random.randrange(2)
42    if i == 0:
43        donnees = (_('rayons'), rayon1, rayon2)
44    else:
45        donnees = (_(u'diamètres'), 2 * rayon1, 2 * rayon2)
46    difference_des_carres = rayon2 ** 2 - rayon1 ** 2
47    aire_arrondie = arrondir(str(3.14 * difference_des_carres))
48    enonce = \
49        _(u"""\\begin{minipage}{4cm}
50\\begin{pspicture}(-2,-2)(2,2)
51\\pscircle[fillstyle=solid](0,0){1.5}
52\\pscircle[fillstyle=solid, fillcolor=white](0,0){1}
53\\psdots[dotstyle=x](0,0)
54\\rput(0.3;60){$O$}
55\\end{pspicture}
56\\end{minipage}\\hfill
57\\begin{minipage}{13cm}
58On considère deux cercles de centre $O$ et de %s respectifs $\\unit[%s]{cm}$ et $\\unit[%s]{cm}$.\\par
59Calculer l'aire de la couronne circulaire (partie colorée) comprise entre les deux cercles en arrondissant le résultat au $\\unit{cm^2}$ le plus proche.""") % donnees
60    exo.append(enonce)
61    cor.append(enonce)
62    cor.append(_("\\par\\dotfill{}\\\\\n"))
63    if i == 0:
64        cor.append(_(u"On calcule l'aire du disque de rayon $\\unit[%s]{cm}$:") % rayon2)
65        cor.append(_(u"\\[\\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\\]") % (rayon2, rayon2, rayon2, decimaux(rayon2 ** 2)))
66        cor.append(_(u"On calcule l'aire du disque de rayon $\\unit[%s]{cm}$:") % rayon1)
67        cor.append(_(u"\\[ \\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\]") % (rayon1, rayon1, rayon1, decimaux(rayon1 ** 2)))
68    else:
69        cor.append(_(u"Un disque de diamètre $\\unit[%s]{cm}$ a pour rayon $%s \div 2 = \\unit[%s]{cm}$. Calculons son aire:") % (2 * rayon2, 2 * rayon2, rayon2))
70        cor.append(_(u"\\[\\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\\]") % (rayon2, rayon2, rayon2, decimaux(rayon2 ** 2)))
71        cor.append(_(u"Un disque de diamètre $\\unit[%s]{cm}$ a pour rayon $%s \div 2 = \\unit[%s]{cm}$. Calculons son aire:") % (2 * rayon1, 2 * rayon1, rayon1))
72        cor.append(_(u"\\[\\pi \\times %s^2 = \\pi \\times %s \\times %s = \\unit[%s \\pi]{cm^2}\\]") % (rayon1, rayon1, rayon1, decimaux(rayon1 ** 2)))
73    cor.append(_(u"L'aire $\\mathcal{A}$ de la couronne est obtenue en retranchant l'aire du disque de rayon  $\\unit[%s]{cm}$  à l'aire du disque de rayon  $\\unit[%s]{cm}$:") % (rayon1, rayon2))
74    cor.append(u"\\[\\mathcal{A} = %s \\pi  - %s \\pi= (%s - %s)\\pi =\\unit[%s \\pi]{cm^2}\\]" % (decimaux(rayon2 ** 2), decimaux(rayon1 ** 2), decimaux(rayon2 ** 2), decimaux(rayon1 ** 2), decimaux(difference_des_carres)))
75    cor.append(_(u"L'aire exacte de la couronne est $\\unit[%s \\pi]{cm^2}$.") % (decimaux(difference_des_carres)))
76    cor.append(_(u"En prenant 3,14 comme valeur approchée du nombre $\\pi$, on obtient :"))
77    cor.append(u"\\[\\mathcal{A}  \\approx %s \\times 3,14\\]" % decimaux(difference_des_carres))
78    cor.append(u"\\[\\boxed{\\mathcal{A} \\approx  \\unit[%s]{cm^2}}\\]" % decimaux(aire_arrondie))
79    exo.append("\\end{minipage}\n")
80    cor.append("\\end{minipage}\n")
81    return (exo, cor)
82
83exo_aire_diques.description = _(u'Aire de disques')
Note: See TracBrowser for help on using the repository browser.