Ir ao conteúdo
  • Cadastre-se

C Converter Algoritmo para visualg


Posts recomendados

Oi pessoal, estou tentando entender esse algoritmo, mas estou iniciando agora nessa área e consigo mais entender programas em VisualG, quero entender esse algoritmo, porém ele está em C, se alguém transformasse para VisualG eu ficaria grato :)

#include <stdio.h>

int main( void )

{

int a[ 3 ][ 3 ], soma = 0;

int i, j, tentativas;

for( i = 0; i < 3; ++i )

     for( j = 0; j < 3; ++j )

         scanf("%d", &a[ i ][ j ]);

for( i = 0; i < 3; ++i )

      if( (a[ i ][ 0 ] == 0) + (a[ i] [ 1 ] == 0) + (a[ i ][ 2 ] == 0) == 0 )

          soma = a[ i ][ 0 ] + a[ i ][ 1 ] + a[ i ][ 2 ];

for( j = 0; j < 3; ++j )

      if( (a[ 0 ][ j ] == 0) + (a[ 1 ][ j ] == 0) + (a[ 2 ][ j ] == 0) == 0 )

           soma = a[ 0 ][ j ] + a[ 1 ][ j ] + a[ 2 ][ j ];

if( (a[0][0] == 0) + (a[ 1 ][ 1 ] == 0) + (a[ 2 ][ 2 ] == 0) == 0 )

       soma = a[ 0 ][ 0 ] + a[ 1 ][ 1 ] + a[ 2 ][ 2 ];

if( (a[0][2] == 0) + (a[ 1 ][ 1 ] == 0) + (a[ 2 ][ 0 ] == 0) == 0)

       soma = a[ 0 ][ 2 ] + a[ 1 ][ 1 ] + a[ 2 ][ 0 ];

if( soma == 0 )

{

for( i = 0; i < 3; ++i )

      for( j = 0; j < 3; ++j )

           soma += a[ i ][ j ];

soma /= 2;

}

for( tentativas = 0; tentativas < 3; ++tentativas ) {

       for( i = 0; i < 3; ++i )

             for( j = 0; j < 3; ++j ) {

/*Testa mesma linha*/

if( (a[ i ][ j ] == 0) && (a[ i ][ 0 ] == 0) +

       (a[ i ][ 1 ] == 0) + (a[ i ][ 2 ] == 0) == 1 )

   a[ i ][ j ] = soma - a[ i ][ 0 ] - a[ i ][ 1 ] - a[ i ][ 2 ];

/*Testa mesma coluna*/

if( (a[ i ][ j ] == 0) && (a[ 0 ][ j ] == 0) +

      (a[ 1 ][ j ] == 0) + (a[ 2 ][ j ] == 0) == 1 )

  a[ i ][ j ] = soma - a[ 0 ][ j ] - a[ 1 ][ j ] - a[ 2 ][ j ];

      }

}

for( i = 0; i < 3; ++i ) {

      for( j = 0; j < 3; ++j)

           printf( "%d ", a[ i ][ j ] );

      printf( "\n" );

     }

return 0;

}

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

Olá, legal ver outra pessoa se inturmando na área, seja bem vindo!
Eu estudo no IFSC e sei  que a apostila lhe ajudará, conforme professores dos intituto se cooperam e meu forneceu estou lhe ajudando da melhor forma possivel. Mas aviso que não deve haver qualquer meio comercial para estas apostilas e elas devem ser usadas para estudos! 

Siga o link e vai ter o que for nescessário, lembre-se, vou revogar dentro de 186h.
Bons estudos

https://1drv.ms/f/s!AhyBCocGSwnnhE4ASWimadEDQZXC

 

 

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

@Samuel Barbosa Ramos   esse código   apenas imprime os nove números que forem inseridos nele,  mas se você quer converte-lo então substitua os comandos, por exemplo :

no lugar desse vetor

int a[ 3 ][ 3 ]

coloque

a : vetor[0..2,0..2] de inteiro

no lugar de int soma=0 coloque soma : real

no lugar de for coloque para e coloque o respectivo fimpara
no lugar de if coloque se e coloque o respectivo fimse
no lugar de printf coloque escreva( )
no lugar de printf ("\n"); coloque escreval
no lugar de

 if( (a[ i ][ 0 ] == 0) + (a[ i] [ 1 ] == 0) + (a[ i ][ 2 ] == 0) == 0 )

coloque

  se (a[i,0])+(a[i,1])+(a[i,2])=0 ENTÃO

e nos outros   ifs    faça do mesmo jeito .     e nos para coloque para ir de zero ate 2  assim 

para i de 0 ate 2 faca


   aqui no fórum não podemos dar códigos prontos, pois é contra as regras,  então faça a conversão do código e poste aqui para vermos como está e em que podemos ajudar .

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

Fala que esperava encontrar um expressão do tipo lógico para essa linha (se ((m[l,0]=0)+(m[l,1]=0)+(m[l,2]=0)=0) então), alguem pode me ajudar com esse probleminha

 

Var
   // Seção de Declarações das variáveis
   m: vetor[0..2,0..2] de inteiro
   l, c, soma, t: inteiro

Inicio
   // Seção de Comandos, procedimento, funções, operadores, etc...
   escreval ("Para os dígitos roubados insira o numero 0 (zero)")
   para l de 0 ate 2 faca
      para c de 0 ate 2 faca
         escreva ("Insira os números um por um, de acordo com a ordem em que aparecem na horizontal:")
         leia (m[l,c])
      fimpara
   fimpara
   para l de 0 ate 2 faca
      se ((m[l,0]=0)+(m[l,1]=0)+(m[l,2]=0)=0) então
         soma<-m[l,0]+m[l,1]+m[l,2]
         para c de 0 ate 2 faca
            se ((m[0,c]=0)+(m[1,c]=0)+(m[2,c]=0)=0) então
               soma<-m[0,c]+m[1,c]+m[2,c]
               se ((m[0,0]=0)+(m[1,1]=0)+(m[2,2]=0)=0) então
                  soma<-m[0,0]+m[1,1]+m[2,2]
                  se ((m[0,2]=0)+(m[1,1]=0)+(m[2,0]=0)=0) então
                     soma<-m[0,2]+m[1,1]+m[2,0]
                     se soma=0 então
                        para l de 0 ate 2 faca
                           para c de 0 ate 2 faca
                              soma<-soma+m[l,c]
                              soma<-soma/m[l,c]
                              para t de 0 ate 2 faca
                                 para l de 0 ate 2 faca
                                    para c de 0 ate 2 faca
                                       se ((m[l,c]=0) e (m[l,0]=0)+(m[l,1]=0)+(m[l,2]=0)=1) então
                                          m[l,c]<-soma-m[l,0]-m[l,1]-m[l,2]
                                          se ((m[l,c]=0) e (m[0,c]=0)+(m[1,c]=0)+(m[2,c]=0)=1) então
                                             m[l,c]<-soma-m[0,c]-m[1,c]-m[2,c]
                                             para l de 0 ate 2 faca
                                                para c de 0 ate 2 faca
                                                   escreva (m[l,c]
                                                   escreval ("")
                                                fimpara
                                             fimse
                                          fimpara
                                       fimse
                                    fimse
                                 fimse
                              fimse
                           fimpara
                        fimpara
                     fimpara
                  fimpara
               fimpara
            fimse
         fimse
      fimpara
   fimpara

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

@Samuel Barbosa Ramos       seu código não está funcionando, por que você não observou que em c os loop for começam com { e termina com  ou também no caso de houver apenas  uma linha depois do for ou do if ele não terá esses caractere   { }  e funciona bem mesmo assim,  então reorganizei seu código e ele ficou assim :

Algoritmo "convert de c para visualg"
var
  a : vetor [0..2,0..2] de inteiro
  i,j,tentativas,p : inteiro
  soma : real
inicio
  p:=1
  para i de 0 ate 2 faca
    para j de 0 ate 2 faca
      escreva("Digite O ",p," Número ")
      leia(a[i,j])
      p:=p+1
    fimpara
  fimpara
  para i de 0 ate 2 faca
    se (a[i,0])+(a[i,1])+(a[i,2])=0 ENTÃO
      soma:= a[i,0]+a[i,1]+a[i,2]
    fimse
  fimpara
  para j de 0 ate 2 faca
    se (a[0,j])+(a[1,j])+(a[2,j])=0 ENTÃO
      soma := a[0,j]+a[1,j]+a[2,j]
    fimse
  fimpara
  se (a[0,0])+(a[1,1])+(a[2,2])=0 ENTÃO
    soma:=a[0,0]+a[1,1]+a[2,2]
  fimse
  
  se (a[0,2])+(a[1,1])+(a[2,0])=0 ENTÃO
    soma:=a[0,2]+a[1,1]+a[2,0]
  fimse
  
  se soma=0 ENTÃO
    para i de 0 ate 2 faca
      para j de 0 ate 2 faca
        soma:=soma+a[i,j]
        soma:=soma/2
      fimpara
    fimpara
  fimse
  para tentativas de 0 ate 2 faca
    para i de 0 ate 2 faca
      para j de 0 ate 2 faca
        ///*Testa mesma linha*/
        se (a[i,j]) e (a[i,0])+(a[i,1])+(a[i,2])=1 ENTÃO
          a[i,j]=soma-a[i,0]-a[i,1]-a[i,2]
        fimse
        ///*Testa mesma coluna*/
        se (a[i,j]) e(a[0,j])+(a[1,j])+(a[2,j])=1 ENTÃO
          a[i,j]:=soma-a[0,j]-a[1,j]-a[2,j]
        fimse
      fimpara
    fimpara
  fimpara
  para i de 0 ate 2 faca
    para j de 0 ate 2 faca
      escreva(a[i,j])
    fimpara
    escreval
  fimpara
Fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

@devair1010

Um quadrado é chamado mágico quando a soma dos elementos de uma determinada linha, coluna ou diagonal é sempre igual.

Escreva um programa que, dado um quadrado mágico com alguns números faltando (só pode faltar até 3 números), determine qual era o quadrado mágico original. Quando for inserido "0" significa que é um número faltando

Seu programa deve imprimir, na saída padrão, três linhas, cada uma contendo três inteiros, descrevendo a configuração original do quadrado mágico.

 um quadrado mágico pois ao somar qualquer linha, coluna ou diagonal o resultado é sempre igual (no caso vai ser 15) :

4  9  2

3  5  7

8  1  6

 

então o usuario vai entrar assim: 0 12 12      e o programa deve imprimir: 6 12 12
                                                       16 10 0                                                  16 10 4
                                                       8 8 14                                                      8 8 14
                                                                                                                 
                                                   

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