; ************************************************************ ; Programme: lab_n_7.txt version PEP813 sous Windows ; ; INF2171 - laboratoire traitement des tableaux de nombres ; 7) Lire des nombres au terminal, afficher la quantité de nombres lus, faire le total et la moyenne pour tous les nombres. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: hiver 2019 ; cours: INF2171 ; *********************************************************** ; STRO msgbien,d ; bienvenue LDX 0,i ; compteur de nombres lus LDA 0,i ; somme <- 0 lecture: DECI nombre,d ; nombre n'a pas à être conservé dans un tableau BREQ affiche1 ADDA nombre,d ; sommation ADDX 1,i ; compteur + 1 BR lecture ; ; la lecture est terminée, la somme est dans l'Accumulateur. ; affiche1:STA somme,d STRO msgtotal,d STX quantité,d ; compteur de nombres lus DECO quantité,d STRO msgsomme,d DECO somme,d LDA somme,d ; dividende BREQ zéro ; si zéro, division non requise BRGT positif LDX -1,i ; rendre dividende positif et conserver le signe moins STX signe,d NEGA ; ; moyenne <- sommation / quantité de nombres lus ; positif: LDX 0,i ; quotient soustrai:ADDX 1,i SUBA quantité,d BRGE soustrai ; ; à ce stade, nous avons soustrait une fois de trop SUBX 1,i ; redéfaisons la dernière soustraction ADDA quantité,d ; on arrondit si le reste * 2 est >= au diviseur ASLA ; reste * 2 CPA quantité,d BRLT pas_arr ADDX 1,i ; arrondissement nécessaire pas_arr: LDA signe,d ; dividende négatif, remettre le signe moins BREQ positif2 NEGX positif2:STX moyenne,d zéro: STRO msgmoyen,d DECO moyenne,d ; termine: STRO msgfin,d STOP ; ; variables ; N.B. Il est préférable d'afficher un long message sur plusieurs lignes car la largeur ; de la fenêtre d'output de PEP/8 n'est que de 52 caractères par défaut. msgbien: .ASCII "Bienvenue à ce programme de traitement d'un tableau" .ASCII "\nde nombres." .ASCII "\n\nVeuillez entrer des nombres qui seront comptabilisés:" .ASCII "\n(0-pour terminer)\n\x00" msgtotal:.ASCII "\nQuantité de nombres lus:\n\x00" msgsomme:.ASCII "\nSomme des nombres lus:\n\x00" msgmoyen:.ASCII "\nMoyenne des nombres lus:\n\x00" msgaff: .ASCII "\nVoici les nombres positifs lus:\n\x00" msgfin: .ASCII "\n\nFin normale du programme.\x00" signe: .BLOCK 2 ; #2d (0:positif,-1:négatif) somme: .BLOCK 2 ; #2d sommation moyenne: .BLOCK 2 ; #2d quantité:.BLOCK 2 ; #2d compteur de nombres lus nombre: .BLOCK 2 ; #2d .END