Ir ao conteúdo
  • Cadastre-se

C Faça um programa que calcula a raiz quadrada de um número EM NEANDER e EM C


Sathosi
Ir à solução Resolvido por devair1010,

Posts recomendados

Olá gente, venho aqui com uma duvida gigantesca em como transformar esse codigo em C em Neander.

 

//  Faça um programa que calcula a raiz quadrada de um número
//  Assuma que apenas números que possuem raiz quadrada inteira serão passados para o programa (e.g. 4, 9, 16, etc)
//  Você não precisa implementar o algoritmo para números que não possuem raiz quadrada inteira, e.g. 3, 5, 11, etc
//
#include <stdio.h>

int main()
{
    int numero, raiz;
    printf("Digite um Numero:");
    scanf("%d",&numero); 
    raiz = sqrt(numero);
    printf("Raiz = %d \n",raiz);
    return 0;
}

 

Não faço ideia como implementar isso em Neander se conseguirem me ajudar 🙂

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

  • Solução

@Sathosi   @Sathosi           o enunciado não diz , mas creio que seria para criar um programa que calcula a raiz Quadrada , e não usar uma função   , "sqrt()" ,   já pronta  da linguagem C  ,   e também não precisa pegar o número  pois será usado aqueles do exemplo , que tem Raiz exata , e para   extrair a raiz Quadrada   você pode usar a multiplicação , 

#define     WIN32_WINNT 0x600
#include    <stdio.h>
#include    <conio.h>
#include    <stdlib.h>
#include    <string.h>
#include    <windows.h>
#define     _h GetStdHandle(STD_OUTPUT_HANDLE)
///  Faça um programa que calcula a raiz quadrada de um número
///  Assuma que apenas números que possuem raiz quadrada inteira
///  serão passados para o programa (e.g. 4, 9, 16, etc)
///  Você não precisa implementar o algoritmo para números que
///  não possuem raiz quadrada inteira, e.g. 3, 5, 11, etc
int raizQuadrada( int );
int main()
{
  int numero = 81;
  int raiz   = 0;
  printf( "Digite um Numero -: ");
  /// scanf ( "%d"  , &  numero     );
  raiz  = raizQuadrada( numero );/// sqrt(numero);
  printf("Raiz = %d \n",raiz);
  return 0;
}
int raizQuadrada( int x )
{
  int y = 1;          /// combinado no enunciado que
  while( y * y != x ) /// só vai receber num inteiro e posit
  {                   /// e com raiz exata
    if( y * y != x )
    {
      y++;
    }
  }
  if( y<=x )return y;
  return 0;
}

e é claro que a multiplicação também é outra função  que pode ser simplificada usando somas sucessivas ,  e em C não tem necessidade  , mas no neanderWin , sim ,  pois esse compilador  do hipotético processador "neander"  tem apenas comando básicos elementares ,  de armazenamento , soma , subtração e comparações ,  assim uma simples multiplicação da linguagem C se torna bem trabalhosa sesse compilador neaderWin ,   que você pode baixar nesse site   
https://sourceforge.net/projects/neander-x/
baixe o neander X , que é o mesmo neanderwin

 

;--------------------------------
; Programa -: Multiplic
; Autor ----: Devair
; Data -----: 11/12/2022
;--------------------------------
org 0
ldi 0    ; carrega A com val 0
sta 128  ; valor iniciaL 
ldi 1    ; increment do loop
sta 129  ; guard em end 129
ldi 7    ; num p multipl
sta 130  ; Multiplicando
L1:      ; inicio do loop
sta 131  ; Multiplicad qtd vezes
jz fim   ; se for zero pula p fim
lda 128  ; carrega acumulador A
add 130  ; soma com conteu end
sta 128  ; armaz nesse ender
lda 131  ; carreg acumul A
sub 129  ; subtrai 1 
jmp L1   ; jump incond p L1
fim:     ; label
lda 128  ; carrega o valor calc
out 0    ; mostra result
hlt      ; termino do prg

e  a raiz Quadrada também pode ser calculada  com esse programa  ,  fazendo nele alguma adaptações  .

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

@Sathosi    esse código  modificado para extrair a raiz Quadrada  do número 81 :

;--------------------------------
; Programa -: Raiz Quadrada
; Autor ----: Devair
; Data -----: 23/12/2022
;--------------------------------
            ; aqui no editor os valores estão na Base 10 ( DecimaL )
            ; no Visor e nas Flag's estão escritos na
            ; Base 16 , ( HexadacimaL )
            ; As variAveis sAo Opcionais , pois podem ser substituIdas
            ; pelos respectivos endereCos
  a equ 128 ; a = endereCo de memória 128 
  b equ 129 ; b = endereCo de memória 129 
  c equ 130 ; c = endereCo de memória 130 
  x equ 131 ; x = endereCo de memória 131 
  y equ 132 ; y = endereCo de memória 132 
org 0       ; inIcio Do Programa
  ldi 0     ; carrega Registrador/Acumulador A com valor zero
  sta a     ; valor iniciaL Das MultipliCOes
  ldi 81    ; nUmero decimal para extrair raiz Quadrada
  sta y     ; armazena no endereCo y = 132
  ldi 1     ; carrega Registrador/Acumulador A com valor zero
  sta b     ; incremento do loop
  sta c     ; nUmeros sequenciais comeCa em 1 p ver se eh a Rzq
L0:         ; Label L0
  lda c     ; eh o Multiplicando
  sta c     ; e o MultiplicadoR , pois eh RzQ , ( num x mesmo )
L1:         ; Label L1 , inIcio do loop Q faz a multipl
  sta x     ; Multiplicad qtd vezes
  lda a     ; Acumulador A com qtd de x somar
  add c     ; soma com o mesmo nUmero ( num x num )
  sta a     ; O vaLor do increMento
  lda x     ; eh O Num p Extrir a QzQ
  sub b     ; diminuiu mais um
  jnz L1    ; se não for zero volta a L1 p somar de novo
fim:        ; Label Final da MultiplicaAo
  lda a     ; carrega o resultado da multipl 
  out 0     ; mostra result da multipl
  lda y     ; carrega A com val do num extr raiz
  sub a     ; subtrai o result da multipl
  jz rzq    ; se res da subtr for zero pula p rzq
  lda c     ; carrega num em test
  add b     ; incrementa esse num testado
  sta c     ; armazena esse novo num
  ldi 0     ; carrega Acumulador A com val zero
  sta a     ; guarda p inicio da nova multiplic
  jmp L0    ; volta p testar esse novo num
rzq:        ; Label da raiz Quadrada Que já foi achada
  lda c     ; eh a raiz quadrada
  out 0     ; mostra a raiz quadrada
hlt         ; Termino do Programa

na tela do neanderWin observe que cada número , na base Decimal , será multiplicado por ele mesmo  e o resultado  mostrado no visor , no sistema Hexadecimal  , enquanto não encontrar a raiz quadrada , do número que se quer saber a raiz quadrada , e as flag's irão se mover ,  mas ao encontrar a raiz quadrada essas flag's  irão para de se movimentar .e o resultado estará no visor em Hexadecimal .

neanderWin2.jpg.c745e0477971a8ec31c94007daee8d0e.jpg

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!