I need catch the numbers of function numerosR by separately because them I need know the major number, minor number and average of all numbers, but I don't know
this is my code:
(clear)
(display "Ingrese un Numero entre 10 y 40: ")
(define Numero (read))
; Funcion numerosRamdon genera numeros aleatoreos entre 10 y 150
; agrupados por columnas de 10 numeros
(define (numerosRandom)
(define contador 1)
(define contadorColumnas 1)
(define (ciclo)
(define numerosR (+ (random 141) 10))
(if (and (>= Numero 10)
(<= Numero 40)
(<= contadorColumnas 10))
(if (<= contador Numero)
(begin
(display numerosR)
(display #\space)
(set! contador (+ contador 1))
(set! contadorColumnas (+ contadorColumnas 1))
(ciclo)))
(begin
(newline)
(set! contadorColumnas 1)
(ciclo))))
(ciclo))
(numerosRandom)
This code rewrites numerosRandom
to separate generation of random numbers from their display. It also returns the random numbers as a list. The beginning of numerosRandom
is unchanged.
(define (numerosRandom)
(define contador 1)
Now circlo
only does one thing. It creates a list of random numbers. Now circlo
accepts one argument - a list for accumulating random numbers.
(define (circlo accumulator)
(define numerosR (+ (random 141) 10))
(cond
((= contador Numero)
(reverse accumulator))
(else
(set! contador (+ contador 1))
(circlo (cons numerosR accumulator)))))
A new local function print-numerosR
displays the random numbers.
(define (print-numerosR numeros contadorColumnas)
(cond ((null? numeros) "")
((<= contadorColumnas 10)
(display (car numeros))
(display #\space)
(print-numerosR (cdr numeros)
(+ contadorColumnas 1)))
(else
(newline)
(display (car numeros))
(display #\space)
(print-numerosR (cdr numeros)
(+ contadorColumnas 1)))))
A list of random numbers named numerosR
is first generated, then displayed, then returned as a list.
(define numerosR (circlo '()))
(print-numerosR numerosR 0)
numerosR)
Because the list of random numbers numerosR
is the last item evaluated by numerosRandom
it is always returned.
It would be a good exercise to eliminate the mutation of contador
by passing it as an additional value to circlo
.