none
Programação RRS feed

  • Pergunta

  • Alguém poderia me ajudar a fazer um código que imprima os números impares ou pares?Mas código mesmo,select não vai servir...Sou iniciante na área de programação em SQL server .Grato desde já e me desculpe algum erro no texto.
    sábado, 23 de janeiro de 2016 02:40

Respostas

  • Boa noite.

    Este código imprime o número e exibe se é par ou ímpar:

    DECLARE @varInt INTEGER = 1;
    
    WHILE (@varInt < 15) BEGIN
    	IF @varInt % 2 = 0 BEGIN
    		PRINT STR(@varInt) + ' é par';
    	END
    	ELSE BEGIN
    		PRINT STR(@varInt) + ' é ímpar';
    	END
    
    	SET @varInt = @varInt + 1;
    END
    Acredito que a partir dele tu consigas fazer o que for necessário.


    Att., Rafael Simor

    segunda-feira, 25 de janeiro de 2016 00:21
  • Fávio, acredito que tu terias mais escabilidade e até mesmo mais limpeza de código com minha ideia. Teu código não está verificando se os números são ímpares ou pares, está printando os números a cada acréscimo de 2 alterando o valor inicial. Caso o valor inicial mude, todo output será alterado também.

    Indo um pouco além, imagine que deste problema alguém te fale: "ok, agora quero que imprima os números impares e os múltiplos de 4", com o meu exemplo seria simples:

    DECLARE @varInt INTEGER = 1;
    
    WHILE (@varInt < 15) BEGIN
    	IF @varInt % 4 = 0 BEGIN
    		PRINT STR(@varInt) + ' é multiplo de 4';
    	END
    	ELSE BEGIN
    		PRINT STR(@varInt) + ' é ímpar';
    	END
    
    	SET @varInt = @varInt + 1;
    END
    Claro, uma refatoraçãozinha seria bem-vinda, mas acredito que dê para entender a ideia.


    Att., Rafael Simor

    terça-feira, 2 de fevereiro de 2016 21:26

Todas as Respostas

  • Flávio, Não ficou clara a sua necessidade. Pode por gentileza esclarecer um pouco melhor o que você precisa e talvez exemplificar?

    Felipe Lauffer MCSA: SQL Server | MCP

    sábado, 23 de janeiro de 2016 15:36
  • Boa noite.

    Este código imprime o número e exibe se é par ou ímpar:

    DECLARE @varInt INTEGER = 1;
    
    WHILE (@varInt < 15) BEGIN
    	IF @varInt % 2 = 0 BEGIN
    		PRINT STR(@varInt) + ' é par';
    	END
    	ELSE BEGIN
    		PRINT STR(@varInt) + ' é ímpar';
    	END
    
    	SET @varInt = @varInt + 1;
    END
    Acredito que a partir dele tu consigas fazer o que for necessário.


    Att., Rafael Simor

    segunda-feira, 25 de janeiro de 2016 00:21
  • Flávio,

    Veja este exemplo que pode ser aplicado a partir do SQL Server 2012, utilizando as funções IIF e Concat:

    Create Table Numeros
    (Numero SmallInt Identity(1,1))
    Go
    
    Insert Into Numeros Default Values
    Go 32687
    
    
    Select IIF(Numero%2=0, CONCAT('O número: ', Numero, ' é par....'), Concat('O número: ', Numero, ' é impar...')) As 'Análise' from Numeros
    Where Numero <= 200


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 26 de janeiro de 2016 12:15
    Moderador
  • Eu consegui achar a resposta com o cara que era meu professor:

    /* Escreva um código que gere e imprima os números pares de 0 até 100;*/

    DECLARE @CONT INT=0
    WHILE @CONT<=100
    BEGIN
    PRINT @CONT
    SET @CONT+=2
    END

    /* Escreva um código que gere e imprima os números IMPARES de 0 até 100;*/
    DECLARE @CONT INT=1
    WHILE @CONT<=100
    BEGIN
    PRINT @CONT
    SET @CONT +=2
    END

     Mas obrigado mesmo pela resposta,eu achei que ninguém fosse responder.Obrigado mesmo.
    • Editado Flávio Sousa terça-feira, 2 de fevereiro de 2016 21:01
    terça-feira, 2 de fevereiro de 2016 21:00
  • Fávio, acredito que tu terias mais escabilidade e até mesmo mais limpeza de código com minha ideia. Teu código não está verificando se os números são ímpares ou pares, está printando os números a cada acréscimo de 2 alterando o valor inicial. Caso o valor inicial mude, todo output será alterado também.

    Indo um pouco além, imagine que deste problema alguém te fale: "ok, agora quero que imprima os números impares e os múltiplos de 4", com o meu exemplo seria simples:

    DECLARE @varInt INTEGER = 1;
    
    WHILE (@varInt < 15) BEGIN
    	IF @varInt % 4 = 0 BEGIN
    		PRINT STR(@varInt) + ' é multiplo de 4';
    	END
    	ELSE BEGIN
    		PRINT STR(@varInt) + ' é ímpar';
    	END
    
    	SET @varInt = @varInt + 1;
    END
    Claro, uma refatoraçãozinha seria bem-vinda, mas acredito que dê para entender a ideia.


    Att., Rafael Simor

    terça-feira, 2 de fevereiro de 2016 21:26
  • Flávio esse teu código só faz um +2 no final do loop!
    quinta-feira, 4 de fevereiro de 2016 04:32