Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Deus Duet en 19 de Noviembre 2015, 02:16
-
Hola, disculpen. Necesito hacer un programa en C para que el usuario ingrese una matriz y de ahí poderle aplicar gauss-jordan y sacarle la determinante. El caso es que lo quise hacer lo más general posible, por lo que agarré como modelo a Matlab para la lectura de las entradas (Por ejemplo A=[1 2 3;4 5 6;7 8 9]). Todo parecía ir bien, pero en un momento el programa se queda trabado, es decir ya no corre. Lo revisé barias veces pero no encuentro el error (Lógico supongo). Les dejaré el codigo, espero alguien me pueda ayudar.
*Perdonen ustedes las palabras. jeje
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main()
{
int nr,nc,k,nca,ck,kc;
char e[777];
printf("Hola maldito infeliz, escribe las entradas de la matrix con el formato:\n\na b c;d e f;g h i[...]\nLa matrix aparecera de la siguiente manera:\n\na b c\nd e f\ng h i\n\nPuedes poner las entradas que se te de la puta gana\nIMPORTANTE: Las entradas deben ser valores enteros y NO simbolicos\n");
gets(e);
/*Vamos a sacar el numero de columnas*/
nc=0;
for(k=0;e[k]!=';';k++)
{
if(e[k]!=' ')
{
nc=nc+1;
}
}
printf("\nEl arreglo tiene %d columnas\n", nc);
/*Vamos a sacar el numero de renglones*/
nr=1;
for(k=0;e[k]!='\0';k++)
{
if(e[k]==';')
{
nr=nr+1;
}
}
printf("El arreglo tiene %d renglones\n", nr);
nca=nc*nr;
printf("Numero total de entradas: %d\n\n", nca);
/*(insulto)*/
int decod[nr][nc];
/*Vamos a decodificar la matrz*/
k=0;
for(ck=1;ck<=nr;k++);
{
for(kc=1;kc<=nc;kc++);
{
switch(e[k])
{
case ' ':
kc=kc-1;
break;
case ';':
kc=1;
kc=kc+1;
break;
default:
decod[ck][kc]=e[k];
break;
}
k=k+1;
}
}
printf("%d",decod);
return 0;
}
El código está acomodado de una manera tan burda porque le moví muchas cosas para ver si enconraba entre tanto el error. Además he omitido la parte de la transuesta y gauss-jordan, porque con eso no tengo problema.
Espero que alguien me pueda ayudar, gracias de antemano. :D
-
Hola he revisado el código y después de un buen rato la recomendación sería que lo vuelvas a construir basándote en otra idea y paso a paso, porque realmente no le encuentro lógica.
Te quieres basar en caracteres, ¿qué ocurre si un número en la matriz tiene dos cifras?
Introduces un break dentro de un switch que a su vez está dentro de un for... esto genera que el bucle for sólo se ejecute una vez...
Tienes esta condición en un bucle for(ck=1;ck<=nr;k++); donde la variable de control luego es manipulada y no es la que se incrementa
Demasiados errores en tan poco código, en casos así mejor replantearlo
Salu2
-
Hola, encontré un error muy tonto en una variable que hacía todo se asignara mal, pero eso que me dices que hace que mi for solo se reproduzca una vez no lo sabía. Muchas gracias.