Ir ao conteúdo
  • Cadastre-se

Como tranf esse algoritmo em .exe


mitous

Posts recomendados

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 ([email protected])

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

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

Link para o comentário
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.

Link para o comentário
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

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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.

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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