declare @a int,@b varchar(20),@c int
set @a=rand()*10+1
set @b=''
set @c=0
if @a < 4
while @c<@a
begin
set @b=@b+'*'
set @c=@c+1
end
set @c=''
if @a>=4 and @a<7
while @c<@a
begin
set @b=@b+'#'
set @c=@c+1
end
set @c=''
if @a>=7 and @a<10
while @c<@a
begin
while @b=@a
begin
print @b
set @b=@b+1
end
set @c=@c+1
end
set @c=''
if @a=10
set @b='VALOR MAXIMO'
print @a
print @b
wolf_ou escribió:partiendo de la base que nunca he programado en sql server....
viendo el enunciado no entiendo por que esos if <4 y demas... (por que separas en grupos??)
no seria mejor algo asi?? (escribo un pseudocodigo)
for (int i=0;i<10;i++) //para hacer lo mismo las 10 veces
{
int a=random(); //el numero aleatorio generado
int contador=a; //para ver cuantas veces debo escribir ese numero
string salida=""; //donde voy acumulando los numeros para imprimir
while (contador>0)
{
salida=salida+a;
contador=contador-1;
}
print salida;//imprimo al final
}
hace mil años que no programo.... pero creo que deberia ser algo como esto....
declare @a int,@b varchar(20),@c int,@d varchar(10)
set @a=rand()*10+1
set @b=''
set @c=0
set @d=@a
if @a < 4
while @c<@a
begin
set @b=@b+'*'
set @c=@c+1
end
set @c=''
if @a>=4 and @a<7
while @c<@a
begin
set @b=@b+'#'
set @c=@c+1
end
set @c=''
if @a>=7 and @a<10
while @c<@a
begin
set @b=@b+@d
set @c=@c+1
end
set @c=''
if @a=10
set @b='VALOR MAXIMO'
print @a
print @bdeclare @a int,@b varchar(20)
set @a=rand()*10+1
set @b=''
if @a < 4
set @b=REPLICATE('*',@a)
if @a>=4 and @a<7
set @b=REPLICATE('#',@a)
if @a>=7 and @a<10
set @b=REPLICATE(CAST(@a as varchar),@a)
if @a=10
set @b='VALOR MAXIMO'
print @a
print @b
AménMetalhead escribió:Por cierto acotsúmbrate a ponerle nombres descriptivos a las variables, te ayudará bastante a ti y a todo el que lea tu código.
Con el SET a secas no se puede, a no ser que hagas algo así, por ejemplo, pero en este caso concreto no tendría sentido:Ruben[FF]NEO escribió:Lo que no sé es si realmente esta función se puede usar fuera de SELECT
SET @a = (SELECT REPLICATE('*', 2))DECLARE
@_min TINYINT = 1,
@_max TINYINT = 10
DECLARE @_random TINYINT = ROUND(((@_max - @_min) * RAND() + @_min), 0)
SELECT
@_random AS RandomNumber,
CASE
WHEN @_random < 4 THEN
REPLICATE('*', @_random)
WHEN @_random < 7 THEN
REPLICATE('#', @_random)
WHEN @_random < 10 THEN
REPLICATE(CAST(@_random AS VARCHAR(1)), @_random)
ELSE
'Valor máximo'
END AS GeneratedString