cg-Cad

Lisp »Tips 'n Tricks »Lisp & Array »1 »2 »3 »4 »5 »6 »7 »8 »9 »10

SEM

;|
   SEM.LSP
   Copyright (C) 2005 Claudio Piccini.
   All rights reserved
   www.cg-cad.com

   Somma gli Elementi di una Matrice bidimensionale
|;

(defun lstArray (NR NC / i j L e str) 
 (setq i 0)
 (while (< i NR)
  (setq j 0)
  (while (< j NC)
   (setq str (strcat "\n Inserire elemento A[" (itoa i) "],[" (itoa j) "]: ")) 
   (setq e (getreal str))
   (setq L (append L (list e)))
   (setq j (1+ j))
  )
  (setq A (append A (list L)))
  (setq L nil)
  (setq i (1+ i))
 )
 (princ "\n")
 (setq A A)
)

(defun sommaArray (NR NC / i j e s)
 (setq s 0)
 (setq i 0)
 (while (< i NR)
  (setq j 0)
  (while (< j NC)
   (setq e (nth j (nth i A)))
   (setq s (+ s e)) 
   (setq j (1+ j))
  )
  (setq i (1+ i))
 )
 (setq s s)
)

(defun c:sem ( / NR NC A
                 str i j e
                 somma
 )
 ; eco OFF
 (setvar "cmdecho" 0)
 ;|
    input numero righe=NR
          numero colonne=NC
 |;
 (setq NR (getint "\n Numero righe [3]: "))
 (if (= NR nil)(setq NR 3))
 (setq NC (getint "\n Numero colonne [4]: "))
 (if (= NC nil)(setq NC 4))
 ;|
    inizializza la lista 'array' A
 |;
 (setq A (lstArray NR NC))
 ;|
    mostra il contenuto dell'array A
 |;
 (setq i 0)
 (while (< i NR)
  (setq j 0)
  (while (< j NC)
   (setq e (nth j (nth i A)))
   (setq str (strcat " A[" (itoa i) "],[" (itoa j) "]=" (rtos e 2 2))) 
   (princ str)
   (setq j (1+ j))
  )
  (princ "\n")
  (setq i (1+ i))
 )
 ;|
    somma gli elementi dell'array A
 |;
 (setq somma (sommaArray NR NC))
 (setq str (strcat "\n somma=" (rtos somma 2 6)))
 (princ str)
 ;| 
    ripristina l'ambiente
 |;
 (setvar "cmdecho" 1)
 (princ)
)
;;;eof

Test del Lisp

Command: sem
Numero righe [3]: Invio
Numero colonne [4]: Invio
Inserire elemento A[0],[0]: 0.25
Inserire elemento A[0],[1]: 10
Inserire elemento A[0],[2]: 7
Inserire elemento A[0],[3]: 1
Inserire elemento A[1],[0]: -0.3
Inserire elemento A[1],[1]: 18
Inserire elemento A[1],[2]: 13
Inserire elemento A[1],[3]: 444
Inserire elemento A[2],[0]: 1.2
Inserire elemento A[2],[1]: 1.3
Inserire elemento A[2],[2]: 1.4
Inserire elemento A[2],[3]: 3

A[0],[0]=0.25 A[0],[1]=10 A[0],[2]=7 A[0],[3]=1
A[1],[0]=-0.3 A[1],[1]=18 A[1],[2]=13 A[1],[3]=444
A[2],[0]=1.2 A[2],[1]=1.3 A[2],[2]=1.4 A[2],[3]=3

somma=499.85

Lisp »Tips 'n Tricks

Ultimo Aggiornamento_Last Update: 18 Giugno 2005