sábado, 1 de junio de 2013

Gauss Jordan C++ , nxn sin errores y "validado"


   El detalle de ayer del 0 ya lo correji , y lo de las validaciones igual ya quedo , al decrir validaciones , me refiero a que si presionas un caracter que no sea un numero , no se cierre el programa o se ejecute "infinitamente" .




Asi se deberia visualizar el ejecutable :







7 comentarios:

  1. Creo que tiene un error la validación si ponemos "-" con eso truena el programa.
    Pero dime como se le hace para validar en estos casos a) ". " b) "- " c) "-. " No puedo! Gracias

    ResponderBorrar
    Respuestas
    1. igual checa las funciones guion y punto ... con esas ya puedes usar decimales y negativos

      Borrar
  2. ya lo volvi a checar y no tiene esos errores , mira descargate el cpp , esta mas actualizado , incluso le puse como plus la opcion decorregir algun dato antes de hacer el metodo ...


    pero ve lo que hice es "fusionar" el recorrido de la cadena con un contador, es decir que si cualquier caracter es diferente a "." , "-", y los numeros del 0 al 9 sume uno , el "-." o ".-" no tiene caso ya que con la restriccion del "." y el "-" es suficiente ya que el recorrido de la cadena es caracter por caracter ....

    previo a esto borras todo el contenido de tu char , con la funcion "inicia"



    Me imagino que lo que quieres saber es la validacion para la captura de solo numeros ... si ese es el caso seria esto:


    #include
    #include
    #include
    #include

    using namespace std;

    char inicia (char *op)
    {
    int c;
    for(c=0 ; c<50; c++)
    {
    op[c]=' '; //aqui es el "borrado"
    }
    return *op;
    }



    int csymletras(char *op)
    {
    int o,c,r;
    o=0;
    for(c=0; c<50; c++)
    {
    //en esta condicion recorres tu cadena en busca
    //de caracteres dif a los num , eso inluye el
    // . y el - , si es diferente se suma la unidad
    //a "o" para esto tambien es importante que
    //previmente este igualada la o a 0, sino te sale
    // un numerote , que es la posicion de memoria
    //Continuando si es igual a los numeros pues sumas 0
    // y por ultimo te regresa el valor de o ,
    //te recuerdo que o es el contador.
    if(op[c] != '1' && op[c] != '2' && op[c] != '3' && op[c] != '4' && op[c] != '5' && op[c] != '6' && op[c]!='7' && op[c] != '8' && op[c]!='9' && op[c]!='0' && op[c]!= ' ')
    {
    r=1 ;//

    }
    else
    {
    r=0;
    }
    o=o+r;
    }

    return o;
    }



    int main ()
    {
    int b;
    char a[50];
    inicia(a);
    cout<<"\nCaptura un numero entero positivo :\n";
    cin>>a;
    b=csymletras(a);
    if (b>1)
    {
    cout<<"\n\n NO ES un numero entero positivo";
    }
    else
    {
    cout<<"\n\n Si ES un numero entero positivo" ;
    }
    getch();
    return 0;
    }



    Espero te ayude Suerte

    ResponderBorrar
  3. Hola! Muchas gracias por tomarte la molestia de contestar. Acabo de descargar el .cpp y a continuación (en el link)lo que sucede cuando ingreso "." o "-". A eso me refería espero se visualice correctamente http://s1127.photobucket.com/user/cenipe/media/WP_20130528_001.mp4.html (disculpa si no me explique correctamente), alguna solución? Gracias nuevamente...

    ResponderBorrar
    Respuestas
    1. Orale , si , ya le revise , tienes razon , el error esta en la funcion captura() , lo que pasa es que en el momento de capturar la constante , no utilize una cadena de caracteres osea un dato tipo char para hacer la validacion , osea la captura fue directa al arreglo dauble , ya que de lo contrio si funcionaria y se tomaria al igual que en las capturas de las variables como 0 , porque "-" seria como "-0" que asu ves es solo cero , ó "." seria como "0.0" ,".0" ....
      ahora lo que debes hacer es agregar la validacion a la funcion "void captura(double a[50][50],int n)" :

      quedaria asi :

      void captura(double a[50][50],int n)
      {
      int c,f,v;
      char A[5000];
      for(c=0;c>A;
      v=validacion(A);
      }while (v<1);
      a[c][f]=atof(A);
      }
      else
      {
      do{ // Agregas este do para que regrese a este punto
      system("cls");
      inicia(A); // Haces que el contenido de la cadena char sea " "
      cout<<"\n\n\n\n Captura de la matriz :";
      cout<<"\n\n Constante = ";
      cin>>A; // Capturas una cadena tipo char asi, ya no truena
      v=validacion(A); // Validas
      }while (v<1);
      a[c][f]=atof(A); // Conviertes a numero y lo guardas en una ubicacion del double
      }

      }

      }
      }

      y ya asi no debe tener problemas ...

      ahora que si quieres que no acepte el "." y el "-" sin numeros , me dices y la hago , obien como dato puedes hacer un buscador como el de la funcion punto es decir hacer un recorrido a lo largo del char y y ver si hay numeros , para hacer in contador y despues poner un while ....

      me avisas , si no puedes la hago en el fin de semana !!


      Suerte !!

      Borrar
  4. No se puede descargar el codigo:(

    ResponderBorrar