Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Zithion

C cadeia binária em C?

Recommended Posts

Oi gente, tudo bem? Queria uma ajuda em adaptar um programa que esta em portugol, para C. To quebrando a cabeça já tem dias, mas não consigo...ainda estou aprendendo a programar em C, ficaria muito feliz pois este é um exercicio para praticar e to mt curioso em saber como seria adapta-lo em C. 

Obrigado pela atenção.

 

1. Faça um algoritmo em portugol que execute os seguintes passos: 0. Procura o 1º Dígito “1” 1. Troca 1 ® 0 2. Procura posição de inserção 3. Troca 0 ® 1 4. Escreve marca fim numeral 5. Procura o 2o dígito “0” à esquerda 6. Troca 0 ® 1 7. Avança uma Posição a Direita 8. Se “0” fim 9. Se “1” continua passo 1 Considerações: · Posição de inserção é a posição do último zero mais a Direita · Marca Fim de Numeral é um zero na próxima posição após o último “Um” mais a Direita. Este pseudo-algoritmo executa a cópia de uma dada cadeia binária em uma fita infinita, utilizando um vetor de grande dimensão. O conteúdo da fita é um numeral unário delimitado à esquerda por 0 (zero) e à direita por 00 (duplo zero), como mostrado abaixo.

 

011111100

Observações: · A posição inicial da cabeça de leitura/gravação é a primeira posição da fita. · Os valores possíveis do conteúdo da fita são 0 e 1. · Os movimentos possíveis são: Direita, Esquerda e Nada. · O estado inicial é 0.

 

Segue abaixo meu programa em portugol.

 

// Função :
// Autor : 
// Data : 07/06/2017
// Seção de Declarações
var
   num:vetor[1..45] de inteiro
   cont,numero,soma,posi,limite,dobro,linha,mais:inteiro
   // Inicio de procedimentos
 Procedimento imprimir()
 inicio
    Escreva("   Esta é a ",linha, " linha: ")
    para cont de 1 ate (limite) faca
         escreva(num[cont]," " )
    fimpara
    Escreval("")
    linha<-linha+1
fimprocedimento
inicio
      // Inicio Seção de Comandos
      cont<-2
      Escreval("|---------------------------------------------|")
      Escreval("   Quantos número 1 tem sua fita? ")
      Escreval("   Digite um número de 1 a 20: ")
      leia(numero)
      se numero>20 então
         Escreval("   Número maior do que o limite estipulado ")
         Escreval("   O programa esta sendo finalizado. ")
         interrompa
      senao
      // Processando quantidade número "1" o usuario digito.
      mais<-2
      dobro<-(numero*2)
      limite<-(numero+2)
      para cont de 3 ate(limite) faca
           num[cont]<-1
      fimpara
      se num[cont]=1 então
         num[cont]<-1
      senao
           num[cont]<-0
      fimse
      Escreval("")
      posi<-cont
      limite<-(limite+2)
      linha<-1
      // Escrevendo na tela a formação de digitos e a quantidade de "1" que o usuario digito.")
      imprimir()
      // Procurando o primeiro numero 1 e trocando para 0.
      para cont de 1 ate(limite) faca
           se num[cont]=1 então
              soma<-soma+1
              se soma=1 então
                 num[cont]<-0
              senao
                   num[cont]<-1
              fimse
           fimse
      fimpara
      // Imprimindo na tela a modificação
      imprimir()
      repita
      // Inicio da repetição
      // Procurando o segundo digito "0" a esquerda e substituindo por "1"!!
      soma<-0
      para cont de 3 ate (limite) faca
      se num[cont]=0 então
      soma<-soma+1
       se soma=3 então
          num[cont]<-1
       senao
          num[cont]<-0
       fimse
      fimse
    fimpara
    //Procurando o ultimo "1" e acrescentando mais o "0" no final
      //Imprimindo na tela a modificação
      posi<-cont
      limite<-(limite+1)
      imprimir()
      // Procurando o Segundo "0" a esquerda
      soma<-0
      para cont de (limite) ate 3 passo-1 faca
         se num[cont]=0 então
            soma<-soma+1
            se soma=3 então
                 num[cont]<-1
            senao
                 num[cont]<-0
            fimse
         fimse
      fimpara
      //Modificando na tela a modificação!
       posi<-cont
       imprimir()
       //Avança uma posição a direita e verifica
       //Se "0" sera o fim
       //Se "1" volt ao repita
       posi<-posi+mais
       se num[posi]=0 então
          interrompa
       senao
            num[posi]<-0
            imprimir()
       fimse
       soma<-0
       para cont de 1 ate (limite) faca
            se num[cont]=1 então
               soma<-soma+1
            fimse
          fimse
      fimpara
      mais<-(mais+1)
      ate soma=dobro
fimalgoritmo

 

Editado por DiF
Botão CODE <>
  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro usuário,

 

Seja bem-vindo ao Fórum do Clube do Hardware.

 

No intuito de servir como fonte de pesquisa no caso de instituições de ensino, informamos que incorrer no resolvimento por completo de questões relacionadas a disciplinas escolares de cursos técnicos e faculdades podem ser revistas e removidas pela Equipe de Moderação do Clube do Hardware.

 

Para sanar dúvidas sobre esse tipo de problema, por gentileza, publique o passo a passo do desenvolvimento da questão, projeto, monografia ou conteúdo em dúvida para que possamos analisar se a resposta está correta ou não, ou para que possa ser auxiliado com a dúvida no desenvolvimento do exercício.

 

Infelizmente, não há como resolver os trabalhos pelos usuários. O objetivo do Fórum do Clube do Hardware é auxiliar seus usuários a encontrar soluções para que possam sanar suas dúvidas, e não de trazer soluções prontas para seus usuários.. Além disso, copiar e colar respostas que não são de autoria própria do qualquer usuário é considerado plágio, o que é ilegal.

 

Esperamos que compreenda.

 

Atenciosamente,

Equipe Clube do Hardware

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Zithion    para converter para a linguagem c, você precisa substituir os comandos, por exemplo:

no lugar de  para cont de 1 ate (limite) faca coloque for( cont=1;cont<=limite;cont++)

no lugar de repita / ate coloque do{ aqui dentro coloque o código que está dentro do repita até o ate }while(soma != dobro);

no lugar de leia(numero) coloque scanf("%d",&numero);

no lugar de se num[cont]=1 então coloque if(num[cont]==1)

no lugar de senao coloque else{  }

no lugar do primeiro interrompa coloque return 0; e no segundo coloque break;

o loop para vai até o valor estipulado, por exemplo para cont de 3 até 10 faca , então ele vai de 3 até 10 e na saída cont terá o valor 10, mas em  c o for começa no 3 evai até 10, mas no final ele soma um ao cont, ficando então cont com valor 11, e nesse caso como vai usar a variável cont, precisa diminuir um para que o resultado do código seja igual,  no entanto quando o loop for decrescente em portugol cont começaria de 10 e vai até 3 e no final ele diminui um, passando cont a valer 2 e em c também estaria valendo 2, o que seria igual, não precisando modificar o valor,  então seguindo essas regras você pode conseguir converter esse código .

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×