• Comunicados

    • Gabriel Torres

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

      Prezados membros do Fórum do Clube do Hardware,

      Está aberto o processo de seleção de novos moderadores para diversos setores do fórum. Os requisitos são:
        Pelo menos 1000 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 ao formulário 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!   22-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  
Seguidores 0
mitous

Como tranf esse algoritmo em .exe

10 posts neste tópico

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

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

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
Entre para seguir isso  
Seguidores 0