; ************************************************************ ; Programme: lab_n_6.txt version PEP813 sous Windows ; ; INF2171 - laboratoire traitement des tableaux de nombres ; 6) Lire des nombres au terminal, afficher la quantité de nombres positifs lus, la quantité de nombres lus, faire le total et ; la moyenne des nombres positifs puis afficher tous les nombres positifs. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: hiver 2019 ; cours: INF2171 ; *********************************************************** ; STRO msgbien,d ; bienvenue LDX 0,i ; premier nombre lecture: DECI nombres,x BREQ affiche1 LDA nombres,x ; rejet des nombres négatifs BRLT négatif impair: LDA compteur,d ; compteur de positif + 1 ADDA 1,i STA compteur,d LDA somme,d ; sommation pour les nombres positifs ADDA nombres,x STA somme,d négatif: ADDX 2,i ; nombre suivant BR lecture ; ; la lecture est terminée ; affiche1:STRO msgposit,d DECO compteur,d STRO msgtotal,d STX sauvex,d ASRX ; X avance de 2 octets, on doit doit diviser par 2 STX occurenc,d DECO occurenc,d STRO msgsomme,d DECO somme,d LDA somme,d ; dividende BREQ zéro LDX 0,i ; quotient soustrai:ADDX 1,i SUBA compteur,d BRGE soustrai ; ; à ce stade, nous avons soustrait une fois de trop SUBX 1,i ; redéfaisons la dernière soustraction ADDA compteur,d ; on arrondit si le reste * 2 est >= au diviseur ASLA ; reste * 2 CPA compteur,d BRLT pas_arr ADDX 1,i pas_arr: STX moyenne,d zéro: STRO msgmoyen,d DECO moyenne,d LDX sauvex,d STRO msgaff,d ; on commence à afficher par la début du tableau des nombres LDX 0,i affiche2:CPX sauvex,d BREQ termine LDA nombres,x ; positif ? BRLT négatif2 DECO nombres,x CHARO "\n",i négatif2:ADDX 2,i ; nombre suivant BR affiche2 ; 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 "\ns'ils sont positifs." .ASCII "\n(0-pour terminer)\n\x00" msgposit:.ASCII "\nQuantité de nombres positifs lus:\n\x00" msgtotal:.ASCII "\nQuantité de nombres lus:\n\x00" msgsomme:.ASCII "\nSomme des nombres positifs lus:\n\x00" msgmoyen:.ASCII "\nMoyenne arrondie des nombres positifs lus:\n\x00" msgaff: .ASCII "\nVoici les nombres positifs lus:\n\x00" msgfin: .ASCII "\n\nFin normale du programme.\x00" sauvex: .BLOCK 2 compteur:.BLOCK 2 somme: .BLOCK 2 moyenne: .BLOCK 2 occurenc:.BLOCK 2 ; nombres DOIT se retrouver à la fin du programme nombres: .BLOCK 20 ; #2d10a trace seulement les 10 premiers nombres lus .BLOCK 0 ; les nombres lus qui suivent les 10 premiers, soit 11 à 999 .END