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

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ... 49
271  Programación / Programación C/C++ / Re: Ayuda - Ajustar tamaño array - variable en: 4 Julio 2012, 13:16 pm
Te pongo un ejemplo para que lo entiendas mejor:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. int main()
  6. {
  7.    char *cadena; //Puntero a char
  8.    char prueba[] = "Hola Mundo"; //Contenido que queremos poner en "cadena"
  9.    int i, longitud;
  10.    char letra = 'a'; //para asignarle valores a "cadena"
  11.  
  12.    cadena = (char*) malloc (27 * sizeof(char)); //Tenemos 27 espacios para la cadena.
  13.  
  14.    for(i=0; i<26; i++)
  15.    {
  16.        cadena[i] = letra;
  17.        letra++; //Pasamos a la siguiente letra del abecedario (valor en ASCII).
  18.    }
  19.    cadena[26] = '\0';
  20.  
  21.    //Ya tenemos asignados todos los valores de "cadena". Ahora, vamos a concatenar.
  22.  
  23.    longitud = strlen(prueba); //Hallamos la longitud para después quitar memoria
  24.  
  25.    cadena = (char*) realloc (cadena, (longitud + 1) * sizeof(char));  
  26.    //Sabemos que "prueba" tiene una longitud menor que "cadena". Por tanto, con realloc() se le quita memoria a "cadena",
  27.    //ya que no vamos a necesitar tanta. Se le reserva "longitud + 1" porque strlen() coge la longitud de la cadena sin
  28.    // el '\0' final.
  29.  
  30.    strcpy(cadena, prueba); //Concatenamos
  31.  
  32.    puts(cadena); //¡Ya tenemos "Hola Mundo en cadena!
  33.  
  34.    return 0;
  35.  
  36. }
  37.  
  38.  

Si tienes alguna duda sobre cómo utilizar realloc() u otra función, pregunta.

Saludos.
272  Programación / Programación C/C++ / Re: Ayuda - Ajustar tamaño array - variable en: 4 Julio 2012, 12:15 pm
A no ser que uses memoria dinámica, no va a poder ser...

Tendrías que declarar la variable "caracteres" como un puntero a char, reservarle memoria, y asignarle los valores que quieras, por ejemplo, las letras del abecedario, como en tu ejemplo.

Después, hallas la longitud de "prueba" con strlen(), y dejas a "caracteres" con esa longitud (usando la función realloc() ).

Finalmente, copias el contenido con strcpy.

Saludos.
273  Programación / Programación C/C++ / Re: Factor primo más grande de un número muy largo en: 4 Julio 2012, 11:07 am
Le he hecho algunas modificaciones al programa.

Me he dado cuenta que no necesito hallar si un número es primo o no, ya que si empiezo a ver los divisores del "número grande" desde el 2 hacia delante, siempre será divisible antes por un número primo que por uno compuesto. Así me calcula todo mucho más rápido, ¡y llega a la solución correcta!  :D

Saludos.
274  Programación / Programación C/C++ / Re: Como utilizar el gets en: 4 Julio 2012, 10:27 am
El prototipo es: char *gets(char *cadena);

Por tanto, tendrías que poner:

gets(nombre_de_variable_de_tipo_*char);

Es decir:

Código
  1. #include <stdio.h>
  2. #define SM 60
  3. main()
  4. {
  5. int seg, resto, min;
  6. int segu, minut, restoo;
  7. char nombres[25];
  8. printf("Si quieres de minutos a segundos, escribelo, y si quieres de segundos a minutos escribe 1\n");
  9. gets(nombres);
  10. if(strcmp(nombres, "de minutos a segundos")==0)
  11. {
  12. printf("Vamos a convertir los minutos que quieres convertir a segundos.\n");
  13. scanf("%d", &min);
  14. min = min * SM;
  15. printf("El resultado es %d segundos.\n", min);
  16. }
  17. else if(strcmp(nombres, "de segundos a minutos")==0)
  18. {
  19. printf("Elige el numero de segundos a convertir\n");
  20. scanf("%d", &segu);
  21.    minut = segu / SM;
  22.    restoo = segu % SM;
  23. printf("%d segundos son, %d minutos y %d segundos", segu, minut, restoo);
  24. }
  25.  
  26. while(1);
  27. }
  28.  

Saludos.
275  Programación / Programación C/C++ / Re: Factor primo más grande de un número muy largo en: 4 Julio 2012, 10:23 am
Muchas gracias a los dos por responder.

En este código se me olvidó comprobar que los números primos obtenidos sean factores del número dado, pero ha sido al ponerlo en el foro, antes lo tenía pero lo borraría haciendo pruebas, supongo. Ahora lo hago de nuevo y edito el primer mensaje.

Sí, uno de los problemas que he tenido ha sido que al ser un número tan grande, por mucho que pusiera long long int, a veces el ordenador se inventa un número... Intentaré ver qué puedo hacer respecto a esto.

¿Entonces la función esPrimo no calcula bien si un número es primo o no? He hecho varias pruebas y creo que sí lo hace bien, al menos con números bajos...

Saludos.
276  Programación / Programación C/C++ / Factor primo más grande de un número muy largo en: 4 Julio 2012, 01:24 am
Hola.

Para entretenerme, estoy haciendo problemas en C de una página de Internet que son como retos.  

Uno de ellos dice así:

Citar
The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

Sería algo como: "Los factores primos de 13195 son 5, 7, 13 y 29. ¿Cuál es el factor primo más grande de 600851475143 ?"

He intentado esto:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.    long long int i, resultado;
  7.    long long int MAX = 600851475143;
  8.    int num;
  9.  
  10.    for( i = 2; i < MAX; i++)
  11.    {
  12.       if(MAX % i == 0)
  13.       {
  14.           MAX /= i;
  15.           i = 2;
  16.        }
  17.    }
  18.  
  19.    printf("El maximo factor primo de 600851475143 es %d\n\n", MAX );
  20.  
  21.    system("pause");
  22.    return 0;
  23. }
  24.  
  25.  

Pero no me da el resultado correcto  :-\

He hecho varios intentos, pero nada...

Saludos.
277  Programación / Programación C/C++ / Re: calcular numeros primos en: 3 Julio 2012, 23:18 pm
Yo lo que haría sería una función que calcule si cierto número es primo o no (en vez de ponerlo en main(), para que lo que viene después sea más fácil).

Entonces, con un bucle for, iría incrementando una variable en uno, y calculando si el valor de dicha variable es un número primo mediante la función anterior. En caso de serlo, aumentas una variable llamada contador y guardas el número primo en un vector. Cuando el contador llegue a 10, tendrás los 10 primeros números primos.

Saludos.
278  Programación / Programación C/C++ / Re: ALguien me ayuda a que esto salga? prog C en: 3 Julio 2012, 18:52 pm
De nada  :D
279  Programación / Programación C/C++ / Re: contar letras de un texto en: 3 Julio 2012, 18:27 pm
Como una de las variables "palabra" o "cadena" es auxiliar, en una de ellas, cada vez que encuentres una carácter que coincida, puedes sustituirlo por un espacio.

Saludos.
280  Programación / Programación C/C++ / Re: ALguien me ayuda a que esto salga? prog C en: 3 Julio 2012, 18:01 pm
Bien, veo que ya has puesto el código entre GeSHi.

No puedes inicializar la cadena de caracteres así (poniéndole de tamaño "largo"). Para eso existe la memoria dinámica.

Sería tal y como te dije en http://foro.elhacker.net/programacion_cc/ayuda_con_el_uso_de_malloc_en_char_c-t365940.0.html .

Por otra parte, veo que a los vectores les das valores desde "vector[1]". Debes saber que los vectores empiezan por 0, no por el 1.

Por cierto, te recomiendo no declarar variables en mitad del código. A la larga puede resultar algo lioso cuando trabajes con códigos más extensos y darte problemas.

He editado tu código:

Código
  1.  
  2. #include<stdio.h>
  3. #include<conio.h>
  4.  
  5. int main(){
  6.    int largo;
  7.    char **vector1;
  8.    int i;
  9.    printf("Ingrese la cantidad de personas en : ");
  10.    scanf("%d",&largo);
  11.    fflush(stdin); // Después de scanf si vas a usar gets() encuentras problemas. Por ello, usamos fflush(stdin); (aunque yo recomiendo usar getchar() ).
  12.  
  13.   vector1 = (char**)malloc(largo * sizeof(char*)); //Inicializamos filas
  14.   for(i = 0; i < largo; i++) vector1[i] = (char*)malloc(40 * sizeof(char)); //Inicializamos columnas
  15. /* Con las dos líneas anteriores, hemos creado una matriz de "largo" número de filas, cada cual tiene 40 columnas (40 espacios). */
  16.  
  17.    for (i=0;i<largo;i++){
  18.        printf("\nIngrese el valor para la posicion %d: ",i);
  19.        gets( vector1[i]); //Pedimos cadenas de caracteres
  20.    }
  21.  
  22.  
  23.    for (i=0;i<largo;i++){
  24.        printf("Vector[%d]: %s \n",i+1,vector1[i]); //Imprimimos el contenido
  25.  
  26.    }
  27.  
  28.    free(vector1);
  29.    return 0;
  30. }
  31.  


Saludos.

Páginas: 1 ... 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 [28] 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 ... 49
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines