Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Nesecito ayuda con este programa

Estas en el tema de Nesecito ayuda con este programa en el foro de C/C++ en Foros del Web. este programa lo hiso una amiga y me dice que el programa le corre normalmente pero cuando se le pide hacer algo se cierra la ...
  #1 (permalink)  
Antiguo 11/02/2010, 00:26
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Nesecito ayuda con este programa

este programa lo hiso una amiga y me dice que el programa le corre normalmente pero cuando se le pide hacer algo se cierra la consola por asi decirlo: este es el codigo: "PERDON ESTE SI ES EL CODIGO EL OTRO ERA CUANDO NO ESTABA TERMINADO"


#include <stdio.h>
#include <stdlib.h>
void main() {
unsigned n,e,*x;
float *c,**a,*h,*v;
unsigned i,j,bi,bj;
printf ("Numero de variables:");
scanf ("%u",&n);
printf ("Numero de inecuaciones:");
scanf ("%u",&e);
c = (float*) calloc ( n+1, sizeof( float));
a = (float**) calloc ( e+1, sizeof( float*));
x = (unsigned*) calloc ( e+1, sizeof( unsigned));
h = (float*) calloc ( n+1, sizeof( float));
v = (float*) calloc ( e+1, sizeof( float));
for ( i=0;i<n;i++) {
printf ("Coeficiente x(%u) en la ecuacion del Maximo:",i+1);
scanf ("%f",&c[i]);
}
for ( j=0;j<e;j++) {
a[j] = (float*) calloc ( n+1, sizeof(float));
for ( i=0;i<n;i++) {
printf ("Coeficiente x(%u) en la %u ecuacion:",i+1,j+1);
scanf ("%f",&a[j][i]);
}
printf ("Termino Independiente de la %u ecuacion:",j+1);
scanf ("%f",&a[j][n]);
printf ("Subindice de la variable auxiliar de la inecuacion h(i)");
scanf ("%u",&x[j]); x[j]--;
}
for ( i=0; i<=n;i++ ){
a[e][i]=-c[i];
for ( j=0;j<e;j++){
a[e][i]+=a[j][i]*c[x[j]];
}
}
for (i=0; i< n; i++ ){
printf ("c(%u)= %7.2f\n", i+1,c[i]);
}
bi=1;
for ( i=0;i<n;i++){
if ( a[e][i]< a[e][bi] )
bi=i;
if ( a[e][bi]>=0 )
break; //PARECE QUE ESTE IF DEBIERA ESTAR DENTRO DEL FOR
}

bj=1;
for ( j=0;j<e;j++){
if ( a[j][n]*a[bj][bi] < a[bj][n]*a[j][bi] )
bj=j;
}
printf ("+");
for ( i=0;i<n+2;i++)
printf ("--------");
printf ("+\n");
for ( j=0; j< e; j++){
printf ("| x%u | %7.2f | ",x[j]+1,a[j][n] );
for ( i=0; i<n; i++ ){
if ((i==bi)&&(j==bj)) {
printf ("%7.2f*",a[j][i] );
} else {
printf ("%7.2f ",a[j][i] );
}
}
printf("|\n");
} printf ("+");
for ( i=0;i<n+2;i++)
printf ("--------");
printf ("+\n");
printf (" | %7.2f | ",a[e][n] );
for ( i=0; i<n; i++ ){
printf ("%7.2f ",a[e][i] );
}
printf("|\n\n");
for (i=0;i<=n;i++ ){
h[i]=a[bj][i];
}
for ( j=0;j<=e;j++ ){ v[j]=a[j][bi];
}
for (i=0;i<=n;i++ ){
for ( j=0;j<=e;j++ ){
a[j][i] -= h[i]*v[j]/h[bi];
}
}
for (i=0;i<=n;i++ ){
a[bj][i]=h[i]/v[bj];
}
x[bj]= bi;

printf(" + ");
for (i=0;i<n+2;i++){
printf ("--------"); }
printf ("+\n");
for ( j=0; j< e; j++){
printf ("| x%u | %7.2f | ",x[j]+1,a[j][n] );
for ( i=0; i<n; i++ ){
printf ("%7.2f ",a[j][i] );
}
printf("|\n");
}
printf ("+");
for ( i=0;i<n+2;i++)
printf ("--------");
printf ("+\n");
printf (" | %7.2f | ",a[e][n] );
for ( i=0; i<n; i++ ){
printf ("%7.2f ",a[e][i] );
}
printf("|\n\n");
printf ("\nSolucion:\n");
for ( j=0; j<e; j++){
printf ("x%u=%7.2f\n",x[j]+1,a[j][n]);
}
for ( j=0; j<=e; j++)
free(a[j]);
free(c);
free(a);
free(x);
free(h);
free(v);
}


yo creo que es un problema de logica ustedes que opinan o que se le podria hacer para que funcione ya no se que hacer yo no pude conseguir el problema

Última edición por inmortal19; 11/02/2010 a las 18:23
  #2 (permalink)  
Antiguo 11/02/2010, 08:53
 
Fecha de Ingreso: agosto-2009
Ubicación: Cartagena, Colombia
Mensajes: 516
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: Nesecito ayuda con este programa

Pues colocale un getch(); de conio.h
o un system("pause"); de stdlib.h
Código C:
Ver original
  1. include <conio.h>
  2. .......
  3.  getch();
  4.  return 0;
o
Código C:
Ver original
  1. include <stdlib.h>
  2.  ......
  3.  system("pause");
  4.  return 0;
__________________
Un camino de mil millas comienza por el primer paso. Lao Tse
  #3 (permalink)  
Antiguo 11/02/2010, 11:04
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Nesecito ayuda con este programa

Hola,

Cita:
Iniciado por inmortal19 Ver Mensaje
este programa lo hiso una amiga y me dice que el programa le corre normalmente ...
Exactamente igual (copy+paste) ese código no corre, aunque posiblemente no mostraste el código original, y después de corregir los errores evidentes...

Suponiendo que inicializamos n = 1, e = 1; en la última línea en rojo va a existir un error de acceso a memoria, a[1] nunca fué inicializado. a[1][any] va a generar una error o va a escribir en un area desconocida de la memoria.

Cita:
Iniciado por inmortal19 Ver Mensaje
# include <stdio.h>
int main ( ) {
unsigned n,e,*x;
float *c,**a,*h,*v;
unsigned i,j,bi,bj;
printf ("Num. var.: ");
scanf ("%u",&n);
printf (".:Num. inecuaciones.:");
scanf ("%u",&e);
c = calloc ( n+1, sizeof( float));
a = calloc ( e+1, sizeof( float*));
x = calloc ( e+1, sizeof( unsigned));
h = calloc ( n+1, sizeof( float));
v = calloc ( e+1, sizeof( float));
for ( i=0;i<n;i++) {
printf ("Coef. x(%u) en la ec. del Maximo:",i+1);
scanf ("%f",&c[i]);
}
for ( j=0;j<e;j++) {
a[j] = calloc ( n+1, sizeof(float));
for ( i=0;i<n;i++) {
printf ("Coef. x(%u) en la %u ec.:",i+1,j+1);
scanf ("%f",&a[j][i]);
}
printf ("Term.Indep. de la %u ec.:",j+1);
scanf ("%f",&a[j][n]);
printf ("Subindice de variable aux. de la inecuacion h(i)");
scanf ("%u",&x[j]); x[j]--;
}
for ( i=0; i<=n;i++ ){
a[e][i]=-c[i];
for ( j=0;j<e;j++){
a[e][i]+=a[j][i]*c[x[j]];
}
}
...
Y después ya no quise seguir depurando ...
Usa un depurador y depura, valga la redundancia; paso a paso.

Saludos,
  #4 (permalink)  
Antiguo 11/02/2010, 18:25
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Nesecito ayuda con este programa

Cita:
Iniciado por mhax Ver Mensaje
Pues colocale un getch(); de conio.h
o un system("pause"); de stdlib.h
Código C:
Ver original
  1. include <conio.h>
  2. .......
  3.  getch();
  4.  return 0;
o
Código C:
Ver original
  1. include <stdlib.h>
  2.  ......
  3.  system("pause");
  4.  return 0;
Men hay esta el codigo que era el anterior no era perdon por la molestia
  #5 (permalink)  
Antiguo 11/02/2010, 18:31
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Nesecito ayuda con este programa

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,



Exactamente igual (copy+paste) ese código no corre, aunque posiblemente no mostraste el código original, y después de corregir los errores evidentes...

Suponiendo que inicializamos n = 1, e = 1; en la última línea en rojo va a existir un error de acceso a memoria, a[1] nunca fué inicializado. a[1][any] va a generar una error o va a escribir en un area desconocida de la memoria.



Y después ya no quise seguir depurando ...
Usa un depurador y depura, valga la redundancia; paso a paso.

Saludos,
men este si es el codigo revisalo por favor y me dice que es y perdon el otro no era pero este si es
  #6 (permalink)  
Antiguo 12/02/2010, 00:24
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Nesecito ayuda con este programa

Hola,

Cita:
Iniciado por inmortal19 Ver Mensaje
men este si es el codigo revisalo por favor y me dice que es y perdon el otro no era pero este si es
Los cast's, el include, el par de llaves mal cerradas y el break eran lo que yo llamé errores evidentes; pero no corregiste el error que te mostré anteriormente y ese era solamente el primer error .

Saludos.
  #7 (permalink)  
Antiguo 12/02/2010, 15:08
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Nesecito ayuda con este programa

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,



Los cast's, el include, el par de llaves mal cerradas y el break eran lo que yo llamé errores evidentes; pero no corregiste el error que te mostré anteriormente y ese era solamente el primer error .

Saludos.
hola soy la muchacha que necesita el programa. el programa corre el compila normalmente pero a lo que yo termino de ingresar los datos d ela inecuaciones ocurre un error en tiempo de ejecución que no logro detectar. eso es lo que verdaderamente no entiendo porque el no presenta errores cuando yo lo compilo normalmente. cualquier ayuda se los agradeceria, que el profesor me tiene al borde de la locura.... plis!!!

Etiquetas: programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:21.