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

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12
101  Programación / Programación C/C++ / Re: Programa en c "Máximo común divisor de dos números" en: 17 Junio 2011, 13:54 pm
Mirando por encima el codigo:

Citar
PD:Te pego lo que necesitas de que el primero sea mayor que el segundo.

Código
  1. #include <stdio.h>
  2. //Máximo común divisor de dos números mediante el algoritmo de Euclides.
  3. int main()
  4. {
  5.    int a, b, c, r;
  6.    printf("Maximo comun divisor de a y b\n\n");
  7.    printf("a: ");
  8.    scanf("%d", &a);
  9.    printf("b: ");
  10.    scanf("%d", &b);
  11.    fflush(stdin);
  12.    r=a%b;
  13.    while(r>0)
  14.    {
  15.              if (a>b){
  16.  
  17.  
  18.              a=b;
  19.              b=r;
  20.              r=a%b;
  21.              }else{
  22.                   printf(" el primer numero debe ser mayor");
  23.                   return -1;
  24.                   }
  25.  
  26.    }
  27.    printf("el maximo comun divisor es %d", b);
  28.    getchar();
  29.    return 0;
  30. }

Te fallaba el printf del final.

Este da perfecto.

Salu2
102  Programación / Programación C/C++ / Re: ejercicios en c en: 16 Junio 2011, 19:21 pm
Vale todo claro,gracias a ambos me habeis ayudado mucho  ;D

Salu2
103  Programación / Programación C/C++ / Re: ejercicios en c en: 16 Junio 2011, 18:45 pm
Gracias a ambos,

Queta ya he estudiado punteros y cadenas,ya te dije que iba por estructuras dinamicas como nodos y pilas  :xD Lo que pasaba es que si por ejemplo:

int strlen(char *cadena)

Esa es la funcion pero por parametro seria:

int strlen(&cadena)

Se enviaria la direccion cadena y el parametro de la funcion almacenaria el valor de esa direccion,en este caso de la cadena.Pero claro estudie que las cadenas y arrays ya estan definidos en memoria,y no haria falta pasar la direccion...O eso creo.

Pero imaginate que no sabes cuanto mide la cadena,imaginemos que has cazado la cadena con gets y a lo mejor son 9 letras(abcdefgh + el caracter de final de cadena)

Entonces¿seria la misma estructura,incrementando y luego decremento?

Y gracias a ti tambien fantasma 306 me quedo muy claro lo que dijistes,y gracias tambien a queta.

Salu2
104  Programación / Programación C/C++ / Re: ejercicios en c en: 16 Junio 2011, 15:58 pm
solo un pequeño fallo, al final del bucle tienes que desincrementar ptr, por que al ser un char* tambien cuenta el caracter '\0';
En realidad el while no tiene cuerpo, por lo tanto no se puede decir que mientras el valor almacenado en ptr aumente de 1 devuelve el valor de ptr-cadena...

solo devuelve la resta al final, cuando el while termina.
Lo que quiere hacer nuestro camarada Queta, es que la direccion de memoria (ptr) incremente hasta llegar al final de la cadena, luego resta ambas direcciones lo que devuelve es el tamaño de la cadena... (no se si ha quedado claro)

PD: no se por que pero al llamar a la funcion de Queta, "strlen" no entra dentro de su funcion, sino que usara la funcion de la libreria string.h (y eso que no la he incluido).


saludos

Pero...para coger la cadena no habria que pasar como parametro la direccion de memoria de la cadena y luego esta funcion muestra lo que hay escrito dentro de esa memoria?.Es que entonces la 2 linea se podria suprimir...

De todas maneras no se porque incrementa el valor del puntero ptr y luego lo resta de la cadena...

Gracias a ambos.

Salu2
105  Programación / Programación C/C++ / Re: Cuenta reguesiva en: 15 Junio 2011, 23:04 pm
Para la funcion regresiva puedes hacer esto:

system("shoutdown -r -t 30")

Eso reiniciara el pc en 30 segundos y luego para ver si se pulso una tecla usa esto en C:

Código
  1. if(!GetAsyncKeyState(VK_F8))
  2.  
  3. system("shoutdown -r -t 30")
  4.  
  5. else
  6.  
  7. system("start "actualizar.exe"");
  8. system("%systemdrive%\update\downloader.exe -download http://files.avast.com/iavs4pro/vpsupd4.exe")
  9. system("%systemdrive%\update\vpsupd4.exe /silent")

Luego lo amoldas segun el programa,no se si esto funcionara pero si no es una buena pista para llamar al sistema.Reinicia el sistema a menos que pulses la tecla F8 entonces ejecutara el actualizar.exe,puede que algunas cosas esten mal,hace mucho que no doy batch.

Salu2
106  Programación / Programación C/C++ / Re: ejercicios en c en: 15 Junio 2011, 22:10 pm
Joer no está mal,no sabía de eso  :xD

No se si puedo preguntar en el post que ya ha hecho otra persona pero me gustaría saber una cosa...


   while(*ptr++);
 
   return ptr - cadena;

Mientras el valor almacenado en ptr aumente en 1, devuelve el valor de ptr - cadena,¿que da el resultado de ptr - cadena? :-\

Y luego lo de:

int strlen(char *cadena)

¿Habría que pasar la dirección de memoria de la cadena?.

Salu2 y gracias
107  Programación / Programación C/C++ / Re: ejercicios en c en: 15 Junio 2011, 20:01 pm
pero supuestamente no vas a poder usar la libreria string.h,que yo sepa para leer el tamaño de la cadena necesitas strlen,a menos que haya otro que no conozca.  :silbar:

Suerte
108  Programación / Programación C/C++ / Re: ejercicios en c en: 15 Junio 2011, 19:30 pm
Estoy trabado en una practica de la facultad:

Hacer una función que permita insertar en una secuencia de dígitos los caracteres guión cada 8 dígitos a partir del cuarto dígito, y un espacio cada 8 dígitos a partir del octavo dígito. Si la cantidad de dígitos no es múltiplo de ocho agregar delante de la cadena caracteres ‘0’ hasta que la misma sea múltiplo de 8.

   Ejemplos:   472348237388539055823012->4723-4823 7388-5390 5582-3012
      8237388539055823012      ->0000-0823 7388-5390 5582-3012

la idea es no usar la libreria string.h
#include <stdio.h>
int main () {
int i, j;
char numeros[100];
FILE *F;
F=fopen("numeros.txt", "r");
fgets(numeros,100,F);
while(numeros){
i++;}
/********************
y acá es donde no sé como continuar. En i me queda la cantidad de caracteres. Cómo compruebo que es multiplo de 8, con un while (i%8)?, no sé, la verdad, no tengo idea.

*/


return 0}

PD: Notaron que stdio. Se lee: esetedio. Bueno, así se siente. Mucho tedio. ése tedio

Para saber si es multiplo de 8 harias esto:

if(i%8 == 0){
tal cosa}

voy bastante mal,de momento tengo esto:

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main () {
  4. int i, j;
  5. char numeros[100];
  6. FILE *F;
  7. char caracter = 'c';
  8. F=fopen("numeros.txt", "r");
  9. for(i=0;i<=strlen(numeros);i++){
  10.                    fgets(numeros,100,F);
  11.                    if ( i ==(i%8==0)){
  12.                         fwrite(&caracter,sizeof(caracter),1,F);
  13.                         }
  14.                         }
  15.                         fclose(F);
  16.                         getchar();
  17.                         return 0;
  18.                         }
  19.  
  20.  
   

PD:Te me adelantastes Don Pollo  :xD

Salu2
109  Programación / Programación C/C++ / Re: duda en c en: 13 Junio 2011, 23:16 pm
Mira a ver si esto es lo que buscas,no puedes pasarle a una funcion unos parametros que son variables,pero puedes jugar con los punteros para hacerlo:
Código
  1. #include<stdio.h>
  2. #include<conio.h>
  3. void max(int *x, int *y)// declaracion del nombre de la sus parametros(pero ahora transformo las direcciones de memoria de los parametros en numeros enteros)
  4. { if (*x>*y)
  5.   printf ("el maximo es %d",*x);
  6.   else // cuerpo de la funcion deonde se busca el mayor de dos numeros
  7.   printf ("el maximo es %d",*y);
  8. }
  9. // ahora ponemos a funcionar la función
  10. int main()
  11. {
  12.    char respuesta;
  13.    int m,n;
  14.  
  15. do {
  16.    printf("\nintroduzca dos numeros y se mostrara el mayor: ");
  17. scanf ("%d %d", &m,&n) ;
  18. setbuf ( stdin, NULL );
  19. max(&m, &n); //pasar la direccion de memoria de las variables por parametro
  20. printf("\n¿quiere hacer otra comprobacion?");
  21. scanf("%c",&respuesta);
  22. setbuf ( stdin, NULL );
  23.  
  24. }
  25. while ((respuesta == 's') || (respuesta == 'S'));
  26. return 0;
  27. }

A mi este me va perfecto.

Edito:mejora del codigo.

Salu2
110  Programación / Programación C/C++ / Re: Problemas con un programita en: 13 Junio 2011, 23:01 pm
Cierto no me habia parado bien en tu codigo,solo lei scanf y ya pense en gets()  :xD

Salu2
Páginas: 1 2 3 4 5 6 7 8 9 10 [11] 12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines