Ir ao conteúdo

Posts recomendados

Postado

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
Postado

@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
Postado
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
  • Membro VIP
Postado

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
  • 1 ano depois...
Postado

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
  • Membro VIP
Postado

@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
  • 8 meses depois...
Postado

@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   .

Postado

@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

Postado

@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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!