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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ayuda con algoritmo no queda!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda con algoritmo no queda!!  (Leído 2,611 veces)
Crowgray

Desconectado Desconectado

Mensajes: 8


Ver Perfil
ayuda con algoritmo no queda!!
« en: 20 Junio 2010, 03:18 am »

hola espero me puedan ayudar con este ejercicio

elaborar un programa para calcular

1(1x2x3x....xn)+2(1x2x3...xn)+m(1x2x3x...xn)

proponer m y n

segun yo el algoritmo va asi, pero salen puros simbolos raros espero me echen una
mano ya me desespere.




#include <stdio.h>
#include <conio.h>
#include <iostream>
void funcion(int, int);
int main()
{
    int m, n;
    double s;
    printf("Da el valor de m");
    scanf("%d", &m);
    printf("Da el valor de n");
    scanf("%d", &m);
    funcion(m, n);
    getch();

}

void funcion(int m, int n)
{
      float p=1;
      double s=0;
      int i, j;
     
      for(j=1; j<=m; j++)
      {
      for(i=1; i<=n; i++)
      {
      p=p*i*j;
      }
      s=s+p;
      }
      printf("El valor de s= %f", s);

}





En línea

Mr.Blue


Desconectado Desconectado

Mensajes: 441



Ver Perfil WWW
Re: ayuda con algoritmo no queda!!
« Respuesta #1 en: 20 Junio 2010, 03:41 am »

Código
  1.    printf("Da el valor de m");
  2.    scanf("%d", &m);
  3.    printf("Da el valor de n");
  4.    scanf("%d", &m);

lo primero q vi

estas guardando el ingreso en la misma variable.


En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: ayuda con algoritmo no queda!!
« Respuesta #2 en: 20 Junio 2010, 12:03 pm »

Hola
Yo lo haría de esta forma

-Pides n y m
-Una función que calcule el factorial de n (1*2*3*...*n)
-Y otra función que calcule (1+2+...+m)
-Después solo multiplicas el resultado de las 2 funciones y listo

Saludos
En línea

Breakbeat como forma de vida
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: ayuda con algoritmo no queda!!
« Respuesta #3 en: 20 Junio 2010, 19:19 pm »

El error principal, aparte de que el algoritmo no hace su tarea está aquí:
Código:
printf("Da el valor de n");
    scanf("%d", &m);

Vuelves a guardar el valor de m, y debería de ser el valor de "n", debido a eso se le manda a la función "funcion" un valor basura de n.

Corrigiendo la función debíera ser así:

Código
  1. void funcion(int m, int n)
  2. {
  3.      float p=1;
  4.      double s=0;
  5.      int i, j;
  6.  
  7.      for(j = 1; j <= m; j++)
  8.      {
  9.        for(i = 1; i <= n; i++)
  10.        {
  11.            p = p * i;
  12.        }
  13.        s = s + p * j;
  14.        p = 1.0;                         /* Reinicializamos p para el productorio */
  15.      }
  16.      printf("El valor de s= %lf", s);
  17. }
  18.  

-Tienes errores de indentación.
-No debes usar conio.h, no es standard
-Decidete entre C ó C++, lo digo por la inclusión de iostream.

Yo la dejaría así:

Código
  1. #include <stdio.h>
  2. void funcion(int, int);
  3. int main(void)
  4. {
  5.    /* Da lo mismo signed que unsignes en este caso, puesto que no podemos
  6.     jugar con numeros muy grandes */
  7.    signed int m, n;
  8.    printf("Da el valor de m : ");
  9.    scanf("%d", &m);
  10.    printf("Da el valor de n : ");
  11.    scanf("%d", &n);
  12.    funcion(m, n);
  13.    while(getchar() != '\n');
  14.    getchar();
  15.    return 0;
  16. }
  17.  
  18. void funcion(int m, int n)
  19. {
  20.      signed int p = 1;
  21.      double s = 0;
  22.      signed int i, j;
  23.      for(j = 1; j <= m; j++)
  24.      {
  25.        for(i = 1; i <= n; i++)
  26.            p *= i;
  27.        s += p * j;
  28.        p = 1;
  29.      }
  30.      printf("El valor de s = %lf", s);
  31. }
  32.  

satu tiene razón, podrías resolver el problema con dos funciones, una para el factorial y otra para la suma de 1 a m.

Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: ayuda con algoritmo no queda!!
« Respuesta #4 en: 20 Junio 2010, 19:45 pm »

¡Buenas!

Y simplificandolo un poco mas

1+2+...+m = (m·(m+1))/2,

Asi que el resultado sera ((m · (m+1))/2) · n!

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
nicolas_cof


Desconectado Desconectado

Mensajes: 348


Into the Wild


Ver Perfil WWW
Re: ayuda con algoritmo no queda!!
« Respuesta #5 en: 20 Junio 2010, 22:34 pm »

Código:
printf( "Da el valor de m : " );
fflush( stdout );
scanf( "%d", &m );
printf( "Da el valor de n : " );
fflush( stdout );
scanf( "%d", &n );

Crowgray, acuerdate de utilizar las etiquetas GeSHI o code para que sea mas legible el codigo

[code=c]codigo fuente C[/code]

[code]codigo fuente[/code]

Salu10.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines