Alguém sabe traduzir esse código para C?

1. Alguém sabe traduzir esse código para C?

Vinícius Gauer
vigauer

(usa Outra)

Enviado em 11/06/2018 - 22:38h

Preciso escalonar uma matriz em um programa em C e achei esse código na wikipédia, acredito que seja Python ou algo parecido, mas como não sei essa linguagem, achei melhor pedir ajuda para alguém que saiba:

Obs.: Tem que ser em C, não C++ nem C#



h := 1 /* Initialization of the pivot row */
k := 1 /* Initialization of the pivot column */
while h ≤ m and k ≤ n
/* Find the k-th pivot: */
i_max := argmax (i = h ... m, abs(A[i, k]))
if A[i_max, k] = 0
/* No pivot in this column, pass to next column */
k := k+1
else
swap rows(h, i_max)
/* Do for all rows below pivot: */
for i = h + 1 ... m:
f := A[i, k] / A[h, k]
/* Fill with zeros the lower part of pivot column: */
A[i, k] := 0
/* Do for all remaining elements in current row: */
for j = k + 1 ... n:
A[i, j] := A[i, j] - A[h, j] * f
/* Increase pivot row and column */
h := h+1
k := k+1


  


2. Re: Alguém sabe traduzir esse código para C?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 11/06/2018 - 23:04h

Não parece ser Python. Tem mais cara de pseudo linguagem, usada só para dar uma ideia do algoritmo.

A tradução seria bem direta. Tem certeza de que precisa de ajuda?


3. Re: Alguém sabe traduzir esse código para C?

Lucas
-qwerty

(usa Slackware)

Enviado em 11/06/2018 - 23:05h

Isso nao e Python.


4. Re: Alguém sabe traduzir esse código para C?

Vinícius Gauer
vigauer

(usa Outra)

Enviado em 11/06/2018 - 23:11h

paulo1205 escreveu:

Não parece ser Python. Tem mais cara de pseudo linguagem, usada só para dar uma ideia do algoritmo.

A tradução seria bem direta. Tem certeza de que precisa de ajuda?


Tem alguns comandos que não tem em C, tipo esse "argmax" ou "swap rows"


5. Re: Alguém sabe traduzir esse código para C?

Paulo
paulo1205

(usa Ubuntu)

Enviado em 12/06/2018 - 02:17h

É verdade. Nem o C nem nenhuma linguagem que eu conheça os possui. E esse é mais um sinal de que o algoritmo está mostrado numa pseudo linguagem, que descreve as operações em alto nível, sem detalhar como elas são feitas.

Você terá de criar funções que façam essas operações, mas num nível que a máquina entenda.

Para a função de troca de elementos da linha, a maneira mais universal de fazer é ter uma função que troque cada um os elementos de duas linhas. Dependendo de qual a representação usada para a matriz, a troca da linha inteira de uma vez pode ser possível (por exemplo: se cada linha for indicada por um ponteiro que tiver sido individualmente alocado).