Reputation: 35
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)
Upvotes: 1
Views: 88
Reputation: 3669
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
.
Upvotes: 1