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  
mitous

Como tranf esse algoritmo em .exe

Recommended Posts

Bom dia pessoal, eu sou aluno do 1° período do curso de informática e meu professor de programação I da em sua aula Algoritmo.

Ele passo para entregar no dia da prova um trabalho que consiste em criar um .exe, e entregar a ele a estrutura da linguagem utilizada e o algoritmo, q calcule o determinante e a matriz inversa de uma matriz de ordem e valores definidos pelo usúario.

ok, o algoritmo eu fiz. e agora?

o professor acha q todos q entram na faculdade devem conhecer programação, droga eu entrei para aprender, quando eu falei isso ele disse q se eu fiz o algoritmo seria fácil traduzir para ila, ou pascal.

tentei em ila mais ila não aceita q declare a matriz no meio de codigo somente no inicio: não serve.

para quem não tem noção de pascal é impossivel fazer, o professor pensa q pascal se aprende do dia para noite, isso ate desanima.

peço a ajuda de vocês para jogar esse algoritmo para pascal ou outra lunguagem qualquer.

qualquer coisa me envie um e-mail (roberto@carioca.net)

==============================================

algoritmo

{programa p/ calcular determinante e matriz inversa}

  declare linha, coluna, coluna2, valor, i, j, cont, cont_repita, pivo, h, coluna3, soma, div, coluna4, g, ni, nj, cont_repita2, valori, valorj, det numérico

  escreva "A matriz deve ser quadrada"

  escreva "Informe a ordem da matriz:"

  leia ordem

  linha <- ordem

  coluna <- ordem

  coluna2 <- 2 * coluna

  coluna3 <- coluna + 1

  coluna4 <- coluna + (coluna - 1)

  valori <- 1

  valorj <- 1

  declare matriz[linha, coluna] numérico

  para i de 1 ate linha faça

     para j de 1 ate coluna faça

        escreva "Informe o valor:"

        leia valor

        matriz[i, j] <- valor

     fim para

  fim para

  declare matriz[linha, coluna4] numérico

  declare veti[1:coluna], vetj[1:coluna] numérico

  se coluna = 2

     então

        para i de 1 ate linha faça

           para j de 1 ate coluna faça

              se i = j

                 então

                    valori <- matriz[i, j] * valori

                 senão

                    valorj <- matriz[i, j] * valorj

              fim se

           fim para

        fim para

        det <- valori - valorj

     senão

        para i de 1 ate linha faça

           para j de coluna3 ate coluna4 faça

              g <- j - coluna

              valor <- matriz[i, g]

              matriz[i, j] <- valor

           fim para

        fim para

        para i de 1 ate 1 faça

           para j de 1 ate coluna faça

              valor <- 1

              ni <- i

              nj <- j

              cont_repita2 <- 1

              enquanto cont_repita2 <= linha faça

                 cont_repita2 <- cont_repita2 + 1

                 valor <- valor * matriz[ni, nj]

                 ni <- ni + 1

                 nj <- nj + 1

              fim enquanto

              veti[j] <- valor

           fim para

        fim para

        para i de linha ate linha faça

           para j de 1 ate coluna faça

              valor <- 1

              ni <- i

              nj <- j

              cont_repita2 <- linha

              enquanto cont_repita2 <= 1 faça

                 cont_repita2 <- cont_repita2 - 1

                 valor <- valor * matriz[ni, nj]

                 ni <- ni - 1

                 nj <- nj + 1

              fim enquanto

              vetj[j] <- valor

           fim para

        fim para

        valori <- 0

        valorj <- 0

        para j de 1 ate coluna faça

           valori <- veti[j] + valori

           valorj <- vetj[j] - valorj

        fim para

        det <- valori - valorj

  fim se

  escreva "O determinante é:" det

  se det <> 0

     então

        declare matriz[linha, coluna2] numérico

        para i de 1 até linha faça

           para j de 1 até coluna faça

              se i = j

                 então

                    valor <- 1

                 senão

                    valor <- 0

              fim se

              h <- j + coluna

              matriz[i, h] <- valor

           fim para

        fim para

        cont_repita <- 0

        cont <- 0

        repita

           cont_repita <- cont_repita + 1

           se cont_repita > linha

              então

                 interrompa

           fim se

           cont <- cont + 2

           para i de 1 ate linha faça

              para j de 1 ate coluna faça

                 soma <- i + j

                 se (i = j) .e. (soma = cont) então

                    pivo <- matriz[i, j]

                    div <- soma / 2

                 fim se

              fim para

           fim para

           para i de 1 ate linha faça

              para j de 1 ate coluna2 faça

                 se (i <> div) .ou. (j <> div) então

                    valor <- matriz[i, j] - (matriz[div, j] * matriz[i, div] / pivo)

                    matriz[i, j] <- valor

                 fim se

              fim para

           fim para

           para i de 1 ate linha faça

              para j de 1 ate coluna2 faça

                 se (i <> div) .e. (j = div)

                    valor <- 0

                    matriz[i, j] <- valor

                 fim se

              fim para

           fim para

           para i de 1 ate linha faça

              para j de 1 ate coluna2 faça

                 se i = div

                    valor <- matriz[i, j] / pivo

                    matriz[i, j] <- valor

                 fim se

              fim para

           fim para

        fim repita

        escreva "A matriz inversa é:"

        para i de 1 ate linha faça

           para j de coluna3 ate coluna2 faça

              escreva matriz[i,j]

           fim para

        fim para

     senão

        escreva "Impossível calcular a matriz inversa se o determinante for 0."

  fim se

Fim algoritmo

==============================================

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiro você deve saber onde que está querendo compilar o algoritmo. Você como (pelo visto) é iniciante, deve escolher entre Pascal e C, que são linguagens de programação. Tente baixá-las em www.adilson.com.br

Segue um exemplo de fonte em Pascal

program Algoritmo;

uses crt;

var linha, coluna, coluna2, valor, i, j, cont, cont_repita, pivo, h,

coluna3, soma, divisao, coluna4, g, ni, nj, cont_repita2, valori,

valorj, det,ordem : integer;

mat1,ma2,mat3,mat4 : array [1..10,1..10] of integer; { no maximo 10x10, mas você pode aumentar}

begin

    writeln ('A matriz deve ser quadrada');

    writeln ('Informe a ordem da matriz:');

    readln (ordem);

    linha := ordem;

    coluna:= ordem;

    coluna2 := 2 * coluna;

    coluna3 := coluna + 1;

    coluna4 := coluna + (coluna - 1);

    valori := 1;

    valorj := 1;

    for i:=1 to linha do

        for j:=1 to coluna do

            begin

                 writeln ('Informe o valor:');

                 readln  (valor);

                 mat1[i,j]:=valor;

            end;

 if coluna = 2 then

   for i:=1 to linha do

       for j:=1 to coluna do

           if i=j then

               valori := mat2[i, j] * valori

           else

               valorj := mat3[i, j] * valorj;

end.

Qualquer coisa, continuo o seu algoritmo depois.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • Obrigado pela ajuda.

    É realmente fácil passar do algoritmo para pascal?

    como posso fazer para esse código q você fez ser um .exe?

    obrigado (roberto@carioca.net)

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Fala meu,

    p/ você compilar esse codigo fonte p/ .exe é so pegar o turbo pascal, na hp da borland (www.borland.com)  tem p/ download a versão 5. alguma coisa no museu (é freeware).

    Ahe sobre o que você tc sob declare a matrix no meio do codigo fonte, no clipper você conssegue fazer isso.

    Se você tiver duvida em pascal me mande ma mensagem ok?

    []s

    rock.it

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Basta digitar o algoritmo que passei pra você no compilador do Pascal eapaertar f9, ele vai compila-lo e verificar erros. Depois vá em compile/build e ele criará o executável.

    Se quiser esse fonte em C posse descreve-lo também.

    Agora Rock.It, sobre o fato de poder declarar a matriz no meio do algoritmo, em C pode também. Mas não existe vantagem, pois você acabe não tendo uma organização de onde estão as variáveis.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Se quiser um site com algoritmos prontos (mas é imprecindível que você aprenda uma linguagem para o futuro) tem a EFG's Labs. A parte relacionada com matemática fica aqui: http://www.efg2.com/Lab/Library/Delphi/Mat...ions/index.html

    Um dos pacotes que você irá gostar, é escrito para Turbo Pascal e Delphi: http://ourworld.compuserve.com/homepages/JDebord/tpmath.htm

    Na página tem alguns links de compiladores Pascal gratuitos. O melhor mesmo é usar algum da Borland, mas o FreePascal e o GnuPascal também são alternativas boas.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Postado Originalmente por Edy Junior@07 Jun. 2002, 21:40

    Agora Rock.It, sobre o fato de poder declarar a matriz no meio do algoritmo, em C pode também. Mas não existe vantagem, pois você acabe não tendo uma organização de onde estão as variáveis.

    Opa!  :)

    Só chamando atenção prá um detalhe q o Edy disse:

    você PODE declarar uma matriz e qualquer outra variável no meio do programa sim; mas SEMPRE no início de um bloco {} e antes de qualquer outro comando:

    #include <stdio.h>

    int main(void)
    {
     int x;

     ...
     ...
     {
        int mat[5][5];
        ...
        ...
        ...
     }
     ...

     return 0;
    }

    Mas declarações de matrizes precisam ser feitas com constantes, e não com variáveis; apesar de alguns compiladores aceitarem que você declare mat[x][x], o padrão ANSI C proíbe arrays de tamanho variável; o comportamento do programa, nesse caso, é indefinido.

    Uma alternativa é usando alocação dinâmica de memória, e usar um ponteiro como se fosse um vetor unidimensional, calculando índice com a linha e a coluna:

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

    int main(void)
    {
     int x, lin, col;
     double *p;    /* ponteiro para variávei do tipo double */

     printf("Digite a ordem da matriz:\n");
     scanf("%d", &x);

     p = (double *) calloc( x*x, sizeof (double) );     /* aloca memória para a matriz */


     /* O acesso à matriz é feito calculando o índice:
      * matriz[linha][coluna] = p[linha*sizeof(double)+coluna]
      *
      * obs: iniciando o índice em 0, e não em 1
      *
      * Ex: colocando o valor da 4ª linha, 2ª coluna
      * na 7ª linha, 5ª coluna:
      *
      * p [6*sizeof(double) + 4] = p [3*sizeof(double) + 1];
      *
      */

     /* Imprime toda a matriz na tela */

     for (lin=0; lin<x; lin++) {
         for (col=0; col<x; col++)
             printf("%.2f  ", p [ lin*sizeof(double) + col]);

         printf("\n");    /* linha nova no final de cada linha */
     }

     free(p); /* libera a memória alocada */

     system("pause");
     return 0;
    }

    Bom, basicamente é isso; assim você não precisa superdimensionar a sua matriz, nem usar algum estranho recurso particular de um compilador ou outro para alocar matrizes de tamanho variável e ainda arriscar a ter uma BSOD.

    Detalhe: existe vantagem SIM em declarar uma variável no meio do programa: às vezes você precisa criar um bloco dentro de um loop ou um if, e precisa de uma variável extra que não vai ser utilizada em nenhuma outra parte do programa: declarando-a dentro do bloco faz com que ela seja eliminada assim que o bloco acabar, liberando memória.

    OBS: se quiser um BOM compilador de C/C++ (na verdade, um dos melhores que existe), use o MinGW, que vem junto no Dev-C++, em http://www.bloodshed.net/dev que acima de tudo é free  :D

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Perdao amigo Daniel, mas eu me refire ao algoritmo do mitous, que no caso, não valia a pena declarar la em baixo.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
    Postado Originalmente por Edy Junior@08 Jun. 2002, 15:58

    Perdao amigo Daniel, mas eu me refire ao algoritmo do mitous, que no caso, não valia a pena declarar la em baixo.

    Q isso...  :D

    Só aproveitei a sua deixa prá ser um pouco 'didático'  :)

    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

    ×