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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda progrma numeros amigos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda progrma numeros amigos  (Leído 4,599 veces)
skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Ayuda progrma numeros amigos
« en: 25 Noviembre 2011, 19:50 pm »

Hola, pues siguiendo con mi intento de adentrarme en este mundo de la programacion, esta vez me ha tocado con los llamados subprogramas o funciones, bueno el caso esque he estado intentando realizar el siguiente ejercicio, no está terminado, pero esque el programa me ignora toda la parte de las funciones unsigned

Código:
/* Se piden dos numeros naturales m y n. El progrma mostrará
todas las parejas de numeros amigos que hay en el intervalo [m,n].
Dos numeros son amigos si la suma de los divisores del primero
(sin contarse el mismo) coincide con el segundo y viceversa.Nota:
usa una funcion que, dado un numero, devuelva la suma de sus divisores
(sin contarse el mismo)*/

# include <stdio.h>
# include <stdlib.h>

unsigned amigos (unsigned am, unsigned an, unsigned m, unsigned n);
int main()
{ int m,n,amigos;

  printf("\nIntroduce m:");
  scanf("%d",&m);
 
  printf("\nIntroduce n:");
  scanf("%d",&n);
   
   
system("pause");
return 0;   
   
}


unsigned amigos (unsigned am, unsigned an, unsigned m, unsigned n)
{
for(am=0;am<m;am++)

{ if(m%am==0)
  m+=am;
}
  if(am==n)
  printf("Son numeros amigos");

}

¿Como puedo solucionarlo?, gracias.


En línea

DickGumshoe


Desconectado Desconectado

Mensajes: 480



Ver Perfil WWW
Re: Ayuda progrma numeros amigos
« Respuesta #1 en: 25 Noviembre 2011, 20:28 pm »

Me parece que es porque "unsigned amigos" (y el resto), va dentro de int main().


En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Ayuda progrma numeros amigos
« Respuesta #2 en: 25 Noviembre 2011, 20:34 pm »

Y los tipos? Donde están los tipos de la variables? y la del prototipo?:

Código
  1. unsigned amigos (unsigned am, unsigned an, unsigned m, unsigned n);


Más bien sería:

Código
  1. void amigos (unsigned int am, unsigned int an, unsigned int m, unsigned int n);

Lo mismo cuando implementas la función, pone los tipos que faltan. O le cambias el tipo de la función a otra cosa que no sea void si es que piensas retornar un entero o algo.

Saludos
« Última modificación: 25 Noviembre 2011, 20:36 pm por RyogiShiki » En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda progrma numeros amigos
« Respuesta #3 en: 25 Noviembre 2011, 20:46 pm »

El caso esque cambio la funcion usnsigned por la que no retorna nada es decir, la funcion void, pero sigue ignorandome todo la funcion, no entiendo
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Ayuda progrma numeros amigos
« Respuesta #4 en: 25 Noviembre 2011, 20:54 pm »

El caso esque cambio la funcion usnsigned por la que no retorna nada es decir, la funcion void, pero sigue ignorandome todo la funcion, no entiendo
Jejej. no me habia fijado en eso. El caso es que tienes que llamar a la función desde main(); en alguna parte en el main después de que pides los datos debes llamar a la función, te doy un ejemplo:
Código
  1. #include <stdio.h>
  2.  
  3. void print_number(int);
  4.  
  5. int main() {
  6.  int num = 0;
  7.  printf("Dame un numero: ");
  8.  scanf("%d", &num);
  9.  print_number(num);
  10.  
  11.  return 0;
  12. }
  13.  
  14. void print_number(int n) {
  15.  printf("Imprimiendo numero: %d desde la funcion print_number\n", n);
  16. }
  17.  

Saludos
En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda progrma numeros amigos
« Respuesta #5 en: 25 Noviembre 2011, 21:12 pm »

Ok, creo que mas o menos lo he pillado, osea sería declarar una funcion(la del void) dentro de la funcion int main(), lo he probado pero ahora el programa me lo compila, pero me sale un mensaje de error y se cierra. Algo así me ha quedado:

Código:
/* Se piden dos numeros naturales m y n. El progrma mostrará
todas las parejas de numeros amigos que hay en el intervalo [m,n].
Dos numeros son amigos si la suma de los divisores del primero
(sin contarse el mismo) coincide con el segundo y viceversa.Nota:
usa una funcion que, dado un numero, devuelva la suma de sus divisores
(sin contarse el mismo)*/

# include <stdio.h>
# include <stdlib.h>

void amigos (int am, int n , int m);

int main()
{ int m,n,am;

  printf("\nIntroduce m:");
  scanf("%d",&m);
 
  printf("\nIntroduce n:");
  scanf("%d",&n);
 
  amigos(am,n,m);
   
   
system("pause");
return 0;   
   
}


void amigos (int am, int n, int m)
{
for(am=0;am<m;am++)

{ if(m%am==0)
  m+=am;
}
  if(am==n)
  printf("Son numeros amigos");

}
En línea

RyogiShiki


Desconectado Desconectado

Mensajes: 745


げんしけん - Hikkikomori FTW!!!


Ver Perfil WWW
Re: Ayuda progrma numeros amigos
« Respuesta #6 en: 25 Noviembre 2011, 21:33 pm »

Fíjate muy bien lo que estas haciendo, analisa el ciclo for de la función:

Código
  1. for(am=0;am<m;am++)
  2. {
  3.   if(m%am==0)
  4.  
Cuando el primer ciclo se ejecute el estado de las variable am es am = 0, momentos después haces m% am, lo que implica hacer una división, en este caso sería m/0 lo que es un error, no puedes dividir por 0.

Mi sugerencia es que te replantees el problema de los números amigos, soluciónalo primero en el papel, observa los pasos que tienes que dar para solucionarlo y cuando tengas eso entonces pásalo al computador.

Saludos
En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda progrma numeros amigos
« Respuesta #7 en: 25 Noviembre 2011, 22:06 pm »

Fíjate muy bien lo que estas haciendo, analisa el ciclo for de la función:

Código
  1. for(am=0;am<m;am++)
  2. {
  3.   if(m%am==0)
  4.  
Cuando el primer ciclo se ejecute el estado de las variable am es am = 0, momentos después haces m% am, lo que implica hacer una división, en este caso sería m/0 lo que es un error, no puedes dividir por 0.

Mi sugerencia es que te replantees el problema de los números amigos, soluciónalo primero en el papel, observa los pasos que tienes que dar para solucionarlo y cuando tengas eso entonces pásalo al computador.

Saludos

Madre mia!!! tengo que estar ciego, porque es verdad que no me habia dado cuenta de ese error, bueno voy a replantearlo en papel y haber que sale.


Muchas gracias compi!!
En línea

skatres

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Ayuda progrma numeros amigos
« Respuesta #8 en: 26 Noviembre 2011, 18:04 pm »

Hola, bueno sigo intentando que me salga este programa, lo volví a empezar en papel, y ahora lo paso al compilador pero me da estos dos errores:
Código:
 Practicas Programacion\Ensayo numeros amigos.cpp In function `unsigned int son_amigos(unsigned int, unsigned int, unsigned int, unsigned int)': 

29 Practicas Programacion\Ensayo numeros amigos.cpp invalid conversion from `unsigned int (*)(unsigned int, unsigned int, unsigned int, unsigned int)' to `unsigned int'


En teoria el programa me ha quedado así:
Código:
/* Se piden dos numeros naturales m y n. El progrma mostrará
todas las parejas de numeros amigos que hay en el intervalo [m,n].
Dos numeros son amigos si la suma de los divisores del primero
(sin contarse el mismo) coincide con el segundo y viceversa.Nota:
usa una funcion que, dado un numero, devuelva la suma de sus divisores
(sin contarse el mismo)*/


# include <stdio.h>
# include <stdlib.h>

unsigned son_amigos(unsigned a , unsigned b , unsigned num1 , unsigned num2);

int main()

{   int num1,num2;
    printf("\nIntroduce el pimer numero:");
    scanf("%d",&num1);
   
    printf("\nIntroduce el segundo numero:");
    scanf("%d",&num2);
   
    system("pause");
    return 0;
}

unsigned son_amigos(unsigned a , unsigned b , unsigned num1 , unsigned num2)
{ for(a==1;a<num1;a++)
  if(num1%a==0)
  num1+=a;
  { for(b==1;b<num2;b++)
    if(num2%b==0)
    num2+=b;
  }
  if(a=b)
  printf("Son numeros amigos");
  else
  printf("No son numeros amigos");
  return son_amigos;
« Última modificación: 26 Noviembre 2011, 18:21 pm por skatres » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Amigos necesito ayuda con un background para un logo de una web ayuda.
Diseño Gráfico
™Carlos.® 2 3,708 Último mensaje 14 Agosto 2004, 00:23 am
por ™Carlos.®
Programa para hallar números amigos « 1 2 »
Programación General
Charderak 14 23,243 Último mensaje 27 Junio 2010, 19:26 pm
por Charderak
Hallar numeros amigos
Scripting
franncc22 3 6,742 Último mensaje 7 Mayo 2011, 20:04 pm
por .:UND3R:.
ayuda progrma c++
Programación C/C++
sabar 1 1,747 Último mensaje 27 Octubre 2014, 00:51 am
por engel lex
(Consulta)Ejercicio de numeros amigos en C - Ayuda!
Programación C/C++
palacio29 1 3,161 Último mensaje 24 Julio 2016, 19:23 pm
por palacio29
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines