Ir ao conteúdo
  • Cadastre-se

VisualG Função que receba dois números inteiros x e y


Posts recomendados

Escreva uma função que receba dois números inteiros x e y. Essa função deve verificar se x é divisível por y. No caso positivo, a função deve retornar 1, caso contrário zero. Escreva também um algoritmo para testar tal função exibindo uma mensagem de acordo com o resultado. 

NÃO SEI NEM COMO COMEÇAR, DE 20 SÓ NÃO CONSEGUI 3, ESSE QUE NÃO SEI COMO, E MAIS DOIS MAIS OU MENOS, SE ALGUÉM PODER ME AJUDAREM E EXPLICAR! AGRADEÇO.


OBS. no visualG (portugol)

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@jehssyk       você precisa criar essa função que verifica , colocando ela lá no inicio logo depois das variáveis, e dentro dela você faz a verificação usando o comando mod  , então se x mod y for igual a zero é por que é divisível e não sobra nada , e nesse caso retorne 1 , senão retorne 0 , e no loop principal coloque as variáveis x e y com o valor que você quiser e usando outra variável para pegar o resultado de retorno chame essa função que faz a verificação , e em seguida veja se a variável de retorno é 1 então imprime que é divisível senão imprima que não é divisível  .

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

var
   x,y:INTEIRO

Procedimento Soma(A, B:Inteiro)
   Escreva("Soma de dois numeros", A+B)
FimProcedimento

inicio
   Escreval("Digite um valor para x:")
   leia(x)
   Escreval("Digite um valor para y:")
   leia(y)
   Se (x %y =0) então
      escreval("Divisao sem resto")
      escreval("Soma",x+y)
      escreva(retorne 1)
   Senao
      escreval("Divisao com resto")
      escreval("Soma:",x+y)
      escreva(retorne 0)
   fimse
fimalgoritmo

 

Eu tentei, mais fica dando [division by zero], o que eu fiz de errado ?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

Está usando qual versão do Visualg?

adicionado 22 minutos depois

 

@jehssyk, seu código (apenas subi o então, que estava na linha de baixo) aqui no Visualg está rodando normalmente... e está no caminho certo...

 

Mas está com erro de sintaxe (regras do Visualg) e erros de lógica (não está de acordo com o enunciado).

 

Em 28/05/2018 às 15:12, jehssyk disse:

escreva(retorne 1)

 

Essa estrutura está errada...  Nem muito menos está sendo pedido a "soma dos números"... não tem nada a ver. Pode tirar também... ;)

 

 

Em fim... minha sugestão é a seguinte: primeiro faça esse algoritmo sem uso de função ou procedimentos... apenas "receba x e y e informe se tem resto ou não". Faça um código novo!!!

 

Ai depois te explicamos como fazer com função, assim como está sendo pedido.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

  • 1 ano depois...

Funcionou desse jeito:

algoritmo "sem nome"
var
   X, Y: inteiro
   dv: inteiro

funcao DVS (X, Y: inteiro): inteiro
inicio
   se (Y = 0) entao
      DV <- 0
   senao
      se (X mod Y) = 0  entao
         DV <- 1
      senao
         DV <- 0
      fimse
   fimse
   retorne DV
fimfuncao

inicio
   Escreval("Digite um valor para x:")
   leia(X)
   Escreval("Digite um valor para y:")
   leia(Y)
   
   se (DVS(X,Y) = 1) entao
      escreva(X, " é divisível por ", Y)
   senao
      escreva(X, " não e divisível por ", Y)
   fimse
fimalgoritmo

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

@Marcuzzv, muito bom! Testei aqui e funcionou bem! :)

 

Só um adendo:

Em relação às declarações das variáveis, como está utilizando parâmetros, seria mais interessante declarar as variáveis da função dentro da própria função. Algo como:

 

funcao DVS (X, Y: inteiro): inteiro
var
   DV: inteiro
inicio
   se (Y = 0) entao
      DV <- 0
   senao
      se (X mod Y) = 0  entao
         DV <- 1
      senao
         DV <- 0
      fimse
   fimse
   retorne DV
fimfuncao

 

Ou seja: as variáveis que a função utiliza, ou vem dela mesmo, ou vem por parâmetro. Assim a função fica mais independente do que acontece no "mundo externo".

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 8 meses depois...

@Laryssa Silva    na Linguagem C essa estrutura é essa mesma , e os operadores são os mesmos , apenas o mod que é diferente e usa se o   %  , e no final das linhas usa se o ponto e vírgula   ";"  , ou o abre chaves   "{"   ou o fecha chaves   "}"     ,  sendo que dentro deles , as variáveis são  Locais , os comandos no VisualG 3.0 , são escritos em português  , e creio que todos os compiladores da Linguagem c usam comandos escritos em Inglês , então traduza para inglês , apenas os comandos , mas as mensagens pode deixar em português mesmo , e entre aspas duplas    "  "  mesmo ,  e esse código melhor identado poderia ser assim  :

algoritmo "sem nome"                      //  pode deletar essa Linha
var                                       //  e delete essa Linha também
// -----------------=========-----------  //  adicione as bibliotecas ,                                                           ex: #include <stdio.h>
  X, Y: inteiro                           //  em c o tipo da variáveL vem antes  e no final da Linha coloque ponto e vírguLa                           ;
  dv : inteiro                            //  aqui também o tipo da variáveL vem antes  e no final da Linha coloque ponto e vírguLa                    ;

funcao DVS(X, Y: inteiro) : inteiro       //  não precisa desse último inteiro 
                                          //  e dentro dos parenteses o tipo de cada variáveL vem antes                                              int
inicio                                    //  pode deletar essa Linha e no lugar ela use abre chaves                                                  "{"
  se(Y = 0) entao                         //  traduzir para inglês e igual é com dois = , e em c não tem entao , é no lugar dele use abre chaves      "{"
    DV <-0                                //  armazenar valor na vsariáveL é com o sinaL de igualdade = e no final da Linha coloque ponto e vírguLa    ;
  senao                                   //  traduzir para Inglês que é else
    se(X mod Y) = 0  entao                //  traduzir e mod é % e em c não tem entao
      DV <-1                              //  armazenar valor na vsariáveL é com o sinaL de igualdade = e no final da Linha coloque ponto e vírguLa    ;
    senao                                 //  traduzir para Inglês que é else
      DV < -0                             //  armazenar valor na vsariáveL é com o sinaL de igualdade = e no final da Linha coloque ponto e vírguLa    ;
    fimse                                 //  pode deletar essa Linha , é no lugar dela use fecha chaves                                              "}"
  fimse                                   //  pode deletar essa Linha , é no lugar dela use fecha chaves                                              "}"
  retorne DV                              //  traduzir para inglês  return e no final da Linha coloque ponto e vírguLa                                ;
fimfuncao                                 //  pode deletar essa Linha , é no lugar dela use fecha chaves                                              "}"

// ----------------===============------- //  aqui é a função principaL que todo programa da Linguagem c precisa ter                          int main()
inicio                                    //  pode deletar essa Linha , é no lugar dela use abre chaves                                               "{"
  Escreval("Digite um valor para x:")     //  traduzir para inglês apenas o comando escreva printf no final da Linha coloque ponto e vírguLa           ;
  leia(X)                                 //  traduzir para inglês apenas o comando escreva scanf("%d",&x) no final da Linha coloque ponto e vírguLa   ;
  Escreval("Digite um valor para y:")     //  traduzir para inglês apenas o comando escreva printf e no final da Linha coloque ponto e vírguLa         ;
  leia(Y)                                 //  traduzir para inglês apenas o comando escreva scanf("%d",&y) e no final da Linha coloque ponto e vírguLa ;

  se(DVS(X, Y) = 1) entao                 //  traduzir para inglês e igual é com dois = , e em c não tem entao , é no lugar dele use abre chaves      "{"
    escreva(X, " é divisível por ", Y)    //  traduzir para inglês apenas o comando escreva printf e no final da Linha coloque ponto e vírguLa         ;
  senao                                   //  traduzir para inglês else
    escreva(X, " não e divisível por ", Y)//  traduzir para inglês apenas o comando escreva printf e o x e o yvemdepois da mensagem e no 
                                          //  final da Linha coloque ponto e vírguLa                                                                   ;
                                          //  dentro das aspas coloque o tipo da variável %d e também %d e no final da Linha coloque  ponto e vírguLa  ;
  fimse                                   //  pode deletar essa Linha , é no lugar dela use fecha chaves                                              "}"
fimalgoritmo                              //  pode deletar essa Linha , é no lugar dela use fecha chaves                                              "}"

faça seu código e poste aqui , e ajudaremos se precisar de alguma correção   .

Link para o comentário
Compartilhar em outros sites

@devair1010

Seguindo suas dicas , fiz assim, mas apareceu alguns erros:

 

#include <stdio.h>
#include <stdlib.h>



int calcula ()
int x,y,dv;


if (y==0)
    {
      dv=<-0;
    }
    if (y==0)
    {
        dv=<-0;
    }
    else
        if (x%y) =0
    {
        dv=<-0;
    }

return dv;
}


 int main ()
 int x,y;
{
  printf( "Digite um valor para x:");
  scanf("%d", x);
  printf( "Digite um valor para y:");
  scanf("%d", y);

  if (dvs(x,y)==1)
  {
      printf("E divisivel por %d", y);
  }
    else
    printf("Nao e divisil por %d", y);
}

image.thumb.png.a13f7dfa5094b91f18e865119773fc8d.png

Link para o comentário
Compartilhar em outros sites

@Laryssa Silva   traduzir de uma Linguagem para Outra precisa muito atenção e cada Linguagem tem suas peculiaridades , com o tempo consegue se melhor desempenho , e seu código poderia ser assim  :

#define  _CRT_SECURE_NO_WARNINGS                   //  para que certas funções funcionem bem no visuaL studio
#include <stdio.h>                                 //  as bibliotecas
#include <stdlib.h>



int calcula(int x,int y)                           //  a função principaL
{                                                  //  faltou esse
    int dv=0;                                      //  no VisualG 3.0 as variáveis criada são inicializada  com vaLor zero
                                                   //  em c não , então precisa inicializar com o valor que a gente Quiser

    if (y == 0)
    {
        dv = 0;                                    //  esse simbolo ( <- )é só do visualg 
    }
    else
    if (x % y == 0 )                               //  o zero ficou do lado de fora do fecha parenteses
    {
        dv = 1;                                    //  esse simbolo ( <- )é só do visualg 
    }
    return dv;
}


int main()
                                                   //  int x, y;
                                                   //  colocado entre essas duas Linhas não faz e nem serve para nada
{
    int x{}, y{};                                  //  aqui sim é o lugar certo desses
    printf("Digite um valor para x:");
    scanf("%d", &x);                               //  faltou o & de endereço da variáveL
    printf("Digite um valor para y:");
    scanf("%d", &y);                               //  faltou o & de endereço da variáveL

    if (calcula(x, y) == 1)                        //  a função dvs não existe aqui , pois no lugar foi colocada outra , "calcula"
    {
        printf("%d Eh divisivel por %d",x, y);     //  na Linguagem c não tem acentos então o h serve Bem
                                                   //  e como no OriginaL mostra os dois valores x e y
    }
    else
        printf("%d Nao eh divisiveL por %d",x, y); //  na Linguagem c não tem acentos então o h serve Bem
                                                   //  e como no OriginaL mostra os dois valores x e y
    return 512;                                    //  em c todo programa ou função que não seja "void" , deve retornar 
                                                   //  algo qq coisa que a gente Quiser int ou char 
                                                   //  ou struct ou typedef   ,  mas vetor ou  string não
}

 

  • Amei 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...