elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 [151] 152 153 154 155 156 157 158 159 160 161
1501  Programación / Programación C/C++ / Re: ¿Cómo usar IF con un métodos de una clase? en: 17 Enero 2016, 23:00 pm
Pon el código donde se cambia el valor de si el satélite está identificado.
1502  Programación / Programación C/C++ / Re: PAC-MAN EN C CON HILOS Y <NCURSES> en: 15 Enero 2016, 19:49 pm
Pásate por aquí hay un buen tutorial sobre pthreads. Como siempre en inglés.
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
1503  Programación / Programación C/C++ / Re: factorización de un número en: 15 Enero 2016, 16:50 pm
Código
  1. #include <stdio.h>
  2.  
  3. unsigned divide(unsigned n) {
  4.    unsigned divisores = 1;
  5.    unsigned divisor = 2;
  6.  
  7.    while(n > 1) {
  8.        if(n % divisor == 0) {
  9.            n /= divisor;
  10.            divisores++;
  11.        }
  12.        else
  13.            divisor++;
  14.     }
  15.    return(divisores);
  16. }
  17.  
  18. int main() {
  19.    unsigned n;
  20.  
  21.    printf("Dime el número: ");
  22.    scanf("%u", &n);
  23.    printf("%d\n", divide(n));
  24.  
  25.    return 0;
  26. }
1504  Programación / Programación C/C++ / Re: factorización de un número en: 15 Enero 2016, 00:25 am
A ver:

Presentas el código muy desordenado. Para ti, si haces pruebas y lo puedes entender sigue con él, pero cuándo vayas a presentarlo a más gente ordenalo. Sigue algunas reglas de estructuración. Sé coherente.

Por otra parte pasas como argumentos a las funciones variables que después resultan ser locales de la función.

Estos errores los vas repitiendo post tras post y creo que te los han a corregido numerosas veces.
1505  Programación / Programación C/C++ / Re: como se puede mejorar este programa si alguien me puede ayudar en: 14 Enero 2016, 19:59 pm
Ahí va un código más bonito y adaptado totalmente a C, ya que había batiburrillo de mucho C y algo de C++.

Aviso que el código no compila. Los errores originales siguen estando. Tan solo se ha aclarado y se han quitado problemas dialectales.

A ver si así la gente se anima con este post.

Código
  1. #include <string.h>
  2. #include <stdio.h>
  3. #include <ctype.h>
  4. #include <stdlib.h>
  5.  
  6. // defino una estructura  llamada agenda
  7. struct agenda {  
  8.    int codigo;
  9.    char nombre[10];
  10.    char apellido[10];
  11.    int telefono;
  12.    int vacio;
  13. } registros[10];
  14.  
  15. // funciones a utilizar
  16. int ingresar(int codigo, int pos);
  17. void consultar();
  18. int verifica_pos();
  19. void desmarcar_pos();
  20. int verifica_cod(int cod);
  21. int excluir();
  22. void mostrar();
  23.  
  24. int main() {
  25.    int op, retorno, codaux, posicion;
  26.  
  27.    desmarcar_pos();  // no entiendo para que sirve esta funcion  bien
  28.  
  29.    do {
  30.        printf("\n\n\t\t\t\t** AGENDA **\n1 - Ingresar\n2 - Buscar\n3 - Borrar\n4 - Mostrar todo\n\nOpcion: ");
  31.        scanf("%d", &op);
  32.        while(getchar() != '\n');
  33.  
  34.        switch(op) {
  35.            case 1:                
  36.                posicion = verifica_pos();
  37.                if (posicion != -1) {
  38.                    printf("\nIngresar codigo: ");
  39.                    scanf("%d", &codaux);
  40.                    while(getchar() != '\n');
  41.  
  42.                    retorno = verifica_cod(codaux);
  43.                    if(retorno)
  44.                        ingresar(codaux, posicion);
  45.                    else
  46.                        puts("\nIntenta de nuevo");
  47.                }
  48.                else
  49.                    puts("\nLa agenda ya esta llena");
  50.                break;
  51.            case 2:              
  52.                consultar();
  53.                break;
  54.            case 3:
  55.                excluir();
  56.                break;
  57.            case 4:
  58.                mostrar();
  59.                break;
  60.            case 5:
  61.                puts("\nPresione INTRO para salir");
  62.                getchar();
  63.                break;
  64.            default:
  65.                printf ("\nEsa opcion no existe");
  66.                break;
  67.        }
  68.    } while(op != 5);
  69. }
  70.  
  71. void mostrar( )
  72. {
  73.    /* Aqui tengo que mostrar todo pero sin el dato eliminado ya que me
  74.      * muestras todo  seria con registros[pos].vacio == 1 pero
  75.      * no se como muy bien */
  76.    int cont = 0;
  77.  
  78.    while (cont < 10) {
  79.        printf ("\n\t ----------------");
  80.        printf ("\n\t posicion %d",cont);
  81.        printf ("\n\t codigo   %d",registros[cont].codigo);
  82.        printf ("\n\t nombre   %s",registros[cont].nombre);
  83.        printf ("\n\t apellido %s",registros[cont].apellido );
  84.        cont++;
  85.    }
  86. }
  87.  
  88. int ingresar(int codigo, int pos) {
  89.    int val_atomic;
  90.    int val_atomic2;
  91.    int estado;
  92.    int estado2;
  93.    int x, y;
  94.    int i;
  95.  
  96.    if(pos > 10) {
  97.        puts("\nTodo esta lleno");
  98.    }
  99.    else {      
  100.        registros[pos].codigo=codigo;
  101.        val_atomic = 0;
  102.        val_atomic2 = 0;
  103.        estado = 0;
  104.        estado2 = 0;  
  105.        do {
  106.            if(!estado) {
  107.                printf("\n Nombre: ");
  108.                scanf ("%s", &registros[pos].nombre);  // utilizo scanf ya que no se utyilizar muy bien el gets creo que hice lo correcto
  109.            }
  110.            else {
  111.                if(val_atomic == 1) {
  112.                    puts("\nNombre correcto no es necesario modificar");  
  113.                    x = 1;
  114.                }
  115.            }
  116.            if(!estado2) {
  117.                printf("\n Apellido ") ;
  118.                scanf("%s", &registros[pos].apellido);  
  119.            }
  120.            else {
  121.                if (val_atomic2 == 1) {      
  122.                    puts("\nApellido correcto no es necesario modificar") ;  
  123.                    y = 1;
  124.                }
  125.            }        
  126.            char *str = registros[pos].nombre;  // se supone que paso  lo que esta enla estrctura   d de nombre   a un puntero  
  127.            char *str2 = registros[pos].apellido;
  128.            i = 0;
  129.            while(str) {  // no entiendo bien pero se supone que un puntero es un array  pero  no se como funciona el while aqui
  130.                if(strlen(registros[pos].nombre) > 10) {  // digo que si cadena es mayor a 10 entonces que no se pueda exceder del tamaño del array
  131.                    puts("\nLo siento demasiadas letras");
  132.                    printf("El nombre %s", registros[pos].nombre);
  133.                    printf(" tiene %d letras ", strlen(registros[pos].nombre));  // imprimo el numero de letras contenidas
  134.                    break;
  135.                }
  136.                if(isalpha(str) != NULL) {  // verifico si es  o no un tipo de dato alfabetico
  137.                    puts("\nBien");
  138.                    estado = 1;
  139.                    break;
  140.                }
  141.                else {
  142.                    puts("\nEl nombre es incorrecto nada de caracteres o numeros raros");
  143.                    registros[pos].vacio = 0;  // aqui se supone que si lo que ingreso fue incorrecto le digo que me lo elimine de la estructura
  144.                    estado = 0;
  145.                    break;
  146.                }
  147.                i++;
  148.            }
  149.            i = 0;
  150.            while(str2) {  
  151.                if(strlen(registros[pos].apellido) > 10) {
  152.                    puts("\nLo siento demasiadas letras");
  153.                    printf("El apellido %s", registros[pos].apellido);
  154.                    printf(" tiene %d letras",  strlen(registros[pos].apellido));
  155.                    break;
  156.                }
  157.                if(isalpha(str2) != NULL) {
  158.                    puts("\nBien");
  159.                    estado2 = 1;
  160.                    break;  
  161.                }    
  162.                else {
  163.                    puts("\nApellido es incorrecto   nada de numeros o caractes raros");
  164.                    registros[pos].vacio = 0;
  165.                    estado2 = 0;
  166.                    break;
  167.                }
  168.                i++;
  169.            }
  170.        } while (estado != 1  ||  estado2 != 1);  
  171.        suma = x + y;
  172.        registros[pos].vacio = 1;  // aqui valido y digo que se le pase el valor para poder ser registrado
  173.        puts("\nEl registro a sido realizado\n");
  174.        return suma;
  175.    }
  176. }
  177.  
  178. void consultar() {
  179.    int cont = 0;
  180.    int codigo;
  181.  
  182.    printf("\nIngresa el codigo: ");
  183.    scanf("%d", &codigo);
  184.    while(cont <= 10) {
  185.        if(registros[cont].codigo == codigo) {  // igualo el codigo con el codigo de la estructura
  186.            if(registros[cont].vacio == 1) {  // se supone que verifico si en determinada posicion vacio vale uno y si es asi que me lo imprima
  187.                printf("\nNombre: %s", registros[cont].nombre);
  188.                printf("\nApelldio: %s", registros[cont].apellido);
  189.                break;
  190.            }
  191.        }
  192.        cont++;
  193.        if(cont > 10)  // si es mayor a diez significa que no lo encontro
  194.        puts("\nCodigo no encontrado");
  195.    }
  196. }
  197.  
  198. int verifica_pos() {
  199.    int cont = 0;
  200.  
  201.    while(cont <= 10) {
  202.        if(registros[cont].vacio == 0)
  203.            return(cont);
  204.        cont++;
  205.    }
  206.    return -1;  // retorno -1 para comprobar que no este lleno
  207. }
  208.  
  209. void desmarcar_pos() {
  210.    int cont;
  211.  
  212.    for(cont = 0; cont <= 10; cont++)
  213.        registros[cont].vacio = 0;  // no entiendo muy bien
  214. }
  215.  
  216. int verifica_cod(int codigo) {
  217.    int cont = 0;
  218.  
  219.    while(cont <= 10) {
  220.        if(registros[cont].codigo == codigo) {  // comparo el codigo y si es el mismo que me imprima que no se puede tener el mismo codigo
  221.            puts("\nLo siento no puedes tener el mismo codigo");
  222.            return 0;
  223.        }
  224.        cont++;
  225.    }
  226.    return 1;  // retorno 1 para decirle que pueda continuar si es que no es el mismo
  227. }
  228.  
  229. int excluir() {
  230.    int codigo;
  231.    int cont = 0;
  232.  
  233.    printf("\nIngresa el codigo para ser eliminado: ");
  234.    scanf("%d", &codigo);
  235.    while(getchar() != '\n');
  236.    while(cont <= 10) {
  237.        if(registros[cont].codigo == codigo)  // compara como arriba
  238.            if (registros[cont].vacio == 1) {  // verifico  que  el valor de la estrctura de determinada posicion  sea iguala  uno para eliminarlo con la linea sigueinte
  239.                registros[cont].vacio = 0;
  240.                puts("\nEliminado correctamente");
  241.                break;
  242.            }
  243.            cont++;
  244.            if(cont > 10)
  245.                puts("\nCodigo no encontrado");
  246.    }
  247.    return codigo;
  248. }

Vaya diferencia ¿eh?  ;-) ;-)
1506  Programación / Programación C/C++ / Re: No me reconoce las variables. en: 14 Enero 2016, 12:57 pm
Ah, jeje, creía que le ibas a hacer algo al coche  ;)
1507  Programación / Programación C/C++ / Re: No me reconoce las variables. en: 13 Enero 2016, 22:35 pm
¿Cuál es el proyecto?
1508  Programación / Programación C/C++ / Re: No me reconoce las variables. en: 13 Enero 2016, 19:35 pm
Vaya fallo mas sutil, jaja. Buena vista  ;-)
1509  Programación / Programación C/C++ / Re: No me reconoce las variables. en: 13 Enero 2016, 18:57 pm
Se me ocurre que no uses extern para cuando declares las variables locales en los fuentes que acceden a las variables externas que has definido.
Puede que el linkador le falte la información para encontrar las cabeceras y la biblioteca que has creado: -l<path_de_cabecera> -I<path_de_librería>
1510  Programación / Programación C/C++ / Re: Establecer la cantidad de dígitos a la derecha de la coma [lenguaje C] en: 13 Enero 2016, 18:43 pm
Sigue siendo más de lo mismo. Tu trabajas en decimal, el ordenador no. El ordenador trabaja en números binarios en coma flotante, y no solo eso: trabaja con una forma especial para que fue diseñada para que equipos de computación trabajen con números binarios, el IEEE 754.
Páginas: 1 ... 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 [151] 152 153 154 155 156 157 158 159 160 161
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines