|
Dati tre interi a, b e c decidere se a2+b2=c2. Analisi con esempi: è nota la terna pitagorica (3, 4, 5), infatti 32+42=52, 9+16=25, ... Algoritmo (da descrivere a parole e con un diagramma di flusso): dopo una prima fase di input calcola l'espressione a2+b2-c2, se il risultato è zero va alla visualizzazione della risposta "1" (sì), già contenuta nel dato RISP, altrimenti continua settando la risposta a "0" (no) e dopo la visualizza. Programma: PROG RUN ' INP a ' INP b ' INP c ' LDA a ' MUL a ' STA qa ' qa <-- a*a LDA b ' MUL b ' STA qb ' qb <-- b*b LDA c ' MUL c ' STA qc ' qc <-- c*c LDA qa ' ADD qb ' SUB qc ' ACC <-- qa+qb-qc JEQ OUTPUT' SE(ACC = 0): PC <-- OUTPUT LDA #0 ' STA RISP ' OUTPUT OUT RISP ' ALT ' a DAT 0 ' b DAT 0 ' c DAT 0 ' qa DAT 0 ' qb DAT 0 ' qc DAT 0 ' RISP DAT 1 ' END ' Commento: le risorse qa, qb e qc sono superflue, perché non modificare direttamente i valori in a, b e c? |
|