Autor Tema: ¿Cómo repetir un programa?

0 Usuarios y 1 Visitante están viendo este tema.

14 Julio, 2008, 03:09 am
Leído 7280 veces

Watt

  • Aprendiz
  • Mensajes: 328
  • Karma: +0/-0
  • Sexo: Masculino
  • Dos numeros manejan el mundo?
Hola, hice este codigo en C que calcula un determinante de 4x4 utilizando el metodo de menores complementarios con la primera fila, mi duda es como puedo hacer para cuando el algoritmo termine el programa haga una pregunta diciendo si desea insertar otra determinante o cerrar el programa.

Aca esta el codigo:

/* Programa que calcula Determinantes de  4x4* a partir de los elementos de la primera fila*/
/*Solo acepta numeros by Watt xD*/
#include<stdio.h>
main()
{
/*Declaracion de los elementos como determinantes y variables*/
printf("Inserte el elemento a11 , osea el de la primera fila y primera columna \n");
int a11;
scanf("%d", &a11);
printf("Inserte el elemento a12\n");
int a12;
scanf("%d", &a12);
printf("Inserte el elemento a13\n");
int a13;
scanf("%d", &a13);
printf("Inserte el elemento a14\n");
int a14;
scanf("%d", &a14);
printf("Inserte el elemento a21\n");
int a21;
scanf("%d", &a21);
printf("Inserte el elemento a22\n");
int a22;
scanf("%d", &a22);
printf("Inserte el elemento a23\n");
int a23;
scanf("%d", &a23);
printf("Inserte el elemento a24\n");
int a24;
scanf("%d", &a24);
printf("Inserte el elemento a31\n");
int a31;
scanf("%d", &a31);
printf("Inserte el elemento a32\n");
int a32;
scanf("%d", &a32);
printf("Inserte el elemento a33\n");
int a33;
scanf("%d", &a33);
printf("Inserte el elemento a34\n");
int a34;
scanf("%d", &a34);
printf("Inserte el elemento a41\n");
int a41;
scanf("%d", &a41);
printf("Inserte el elemento a42\n");
int a42;
scanf("%d", &a42);
printf("Inserte el elemento a43\n");
int a43;
scanf("%d", &a43);
printf("Inserte el elemento a44\n");
int a44;
scanf("%d", &a44);
/*Fin de elementos*/
printf("\n");
/*Muestra el determinante ingresado*/
printf("  El determinante %d %d %d %d \n" ,a11,a12,a13,a14);
printf("                        %d %d %d %d \n" ,a21,a22,a23,a24);
printf("                        %d %d %d %d \n" ,a31,a32,a33,a34);
printf("                        %d %d %d %d \n" ,a41,a42,a43,a44);
printf("\n");
printf("Aprete enter para resolverlo\n");
getchar();
printf("El resuldado del determinante es %d\n" , a11*(a22*a33*a44+a32*a43*a24+a42*a23*a34-a42*a33*a24-a22*a43*a34-a32*a23*a44)-a12*(a21*a33*a44+a31*a43*a24+a41*a23*a34-a41*a33*a24-a21*a43*a34-a31*a23*a44)+a13*(a21*a32*a44+a31*a42*a24+a41*a22*a34-a41*a32*a24-a21*a42*a34-a31*a22*a44)-a14*(a21*a32*a43+a31*a42*a23+a41*a22*a33-a41*a32*a23-a21*a42*a33-a31*a22*a43));
getchar();
}

P.D Como puedo agregarle lineas verticales al determinante?

Saludos.

14 Julio, 2008, 09:20 am
Respuesta #1

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 46,712
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Hola

 No sé muy bien cuales son tus conocimientos sobre C.

 En primer lugar lo lógico sería que el cálculo del determinante lo hiciese una función independiente del programa principal. Además para los elementos de la matriz sería mejor utilizar un array. Para nota hacer que la función determinante de manera recursiva y desarrollando por adjuntos, calcule un determinante de orden arbitrario.

 Pero fuera de esto y respondiendo estrictamente a tu pregunta puedes hacer algo así:

int opcion;
do {

 tu programa

 printf("Escoja (0) - para otro determinante, (1) - para terminar:\n");
 scanf("%d",&opcion);

while (opcion==0);

Saludos.

14 Julio, 2008, 04:56 pm
Respuesta #2

Watt

  • Aprendiz
  • Mensajes: 328
  • Karma: +0/-0
  • Sexo: Masculino
  • Dos numeros manejan el mundo?
Gracias por tu respuesta, como veras mis conocimientos en C son basicos y estoy aprendiendo de tutoriales de internet, de a poco estoy utilizando mas herramientas y funciones.

Este es el codigo que me queda, pero el compilador me da error en la ultima linea:

/* Programa que calcula Determinantes de  4x4* a partir de los elementos de la primera fila*/
/*Solo acepta numeros*/
#include<stdio.h>
main()
{
/*Declaracion de los elementos como determinantes y variables*/
int opcion;
do {
printf("Inserte el elemento a11 , osea el de la primera fila y primera columna \n");
int a11;
scanf("%d", &a11);
printf("Inserte el elemento a12\n");
int a12;
scanf("%d", &a12);
printf("Inserte el elemento a13\n");
int a13;
scanf("%d", &a13);
printf("Inserte el elemento a14\n");
int a14;
scanf("%d", &a14);
printf("Inserte el elemento a21\n");
int a21;
scanf("%d", &a21);
printf("Inserte el elemento a22\n");
int a22;
scanf("%d", &a22);
printf("Inserte el elemento a23\n");
int a23;
scanf("%d", &a23);
printf("Inserte el elemento a24\n");
int a24;
scanf("%d", &a24);
printf("Inserte el elemento a31\n");
int a31;
scanf("%d", &a31);
printf("Inserte el elemento a32\n");
int a32;
scanf("%d", &a32);
printf("Inserte el elemento a33\n");
int a33;
scanf("%d", &a33);
printf("Inserte el elemento a34\n");
int a34;
scanf("%d", &a34);
printf("Inserte el elemento a41\n");
int a41;
scanf("%d", &a41);
printf("Inserte el elemento a42\n");
int a42;
scanf("%d", &a42);
printf("Inserte el elemento a43\n");
int a43;
scanf("%d", &a43);
printf("Inserte el elemento a44\n");
int a44;
scanf("%d", &a44);
/*Fin de elementos*/
printf("\n");
/*Muestra el determinante ingersado*/
printf("  El determinante %a11 %a12 %a13 %a14 \n" , a11, a12, a13, a14);
printf("                  %a21 %a22 %a23 %a24 \n" , a21, a22, a23, a24);
printf("                  %a31 %a32 %a33 %a34 \n" , a31, a32, a33, a34);
printf("                  %a41 %a42 %a43 %434 \n" , a41, a42, a43, a44);
printf("\n");
printf("Aprete enter para resolverlo\n");
printf("Escoja (0) - para otro determinante, (1) - para terminar:\n");
scanf("%d",&opcion);
while (opcion==0);
getchar();
}
}

15 Julio, 2008, 09:55 pm
Respuesta #3

Luis Fuentes

  • el_manco
  • Administrador
  • Mensajes: 46,712
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Hola

 Una de las dos llaves que has puesto al final del programa sobra. Debe de ir antes del while:

do {

 tu programa

 printf("Escoja (0) - para otro determinante, (1) - para terminar:\n");
 scanf("%d",&opcion);

} while (opcion==0);

Saludos.

22 Julio, 2008, 06:54 pm
Respuesta #4

leonardo09

  • Leonardo Andrés Jofré Flor
  • Experto
  • Mensajes: 798
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
con un doble siclo for se obtiene mas correccion en el programa que intentas, Ahora te sugiero que hagas el algoritmo obteniendo el determinante a partir de operaciones elementales hasta obtener la matriz diagonal.
nunca seré buen matemático

22 Julio, 2008, 06:55 pm
Respuesta #5

leonardo09

  • Leonardo Andrés Jofré Flor
  • Experto
  • Mensajes: 798
  • Karma: +0/-0
  • Sexo: Masculino
  • Leonardo Jofré
    • Leonardo Andrés Jofré Flor
Estudia del deitel y deitel de programación c / c++ , asi tu forma de programar mejorará
nunca seré buen matemático