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);
}
printf("Da el valor de m");
scanf("%d", &m);
printf("Da el valor de n");
scanf("%d", &m);
lo primero q vi
estas guardando el ingreso en la misma variable.
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
El error principal, aparte de que el algoritmo no hace su tarea está aquí:
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í:
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;
}
s = s + p * j;
p = 1.0; /* Reinicializamos p para el productorio */
}
printf("El valor de s= %lf", s);
}
-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í:
#include <stdio.h>
void funcion(int, int);
int main(void)
{
/* Da lo mismo signed que unsignes en este caso, puesto que no podemos
jugar con numeros muy grandes */
signed int m, n;
printf("Da el valor de m : ");
scanf("%d", &m);
printf("Da el valor de n : ");
scanf("%d", &n);
funcion(m, n);
while(getchar() != '\n');
getchar();
return 0;
}
void funcion(int m, int n)
{
signed int p = 1;
double s = 0;
signed int i, j;
for(j = 1; j <= m; j++)
{
for(i = 1; i <= n; i++)
p *= i;
s += p * j;
p = 1;
}
printf("El valor de s = %lf", s);
}
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.
¡Buenas!
Y simplificandolo un poco mas
1+2+...+m = (m·(m+1))/2,
Asi que el resultado sera ((m · (m+1))/2) · n!
¡Saludos!
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.