/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

necesito ayuda en creacion de una funcion

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
meirdv



Registrado: 10 Ago 2012
Mensajes: 5

MensajePublicado: 10/08/2012 3:13 pm
Título: necesito ayuda en creacion de una funcion

Hola saldos

Soy nuevo en esto de programacion estoy estudiando solo y me encontre un problema el cual es el siguiente:
hay que hacer una funcion, que dado un numero entero , si el numero es mayor de cero la funcion regresa la suma de los numeros pares mayores de cero y menores que el numero dado,
y si el numero es negativo pues la funcion regrese la suma de los numeros impares mayores que el numero dado hasta el cero.

la funcion main tiene que recivir el numero entero del usuario y regrese la suma.


bueno epero logren ayudarme pues no entiendo bien aun el tema de las funciones. adjunto el codigo de lo que segun yo seria la funcion pero logicamente no me da.:

#include<stdio.h>

int sum(int pair,int odd,int num,int num1,int sum)
{
int n=0;

if(num>0)
{

if(n%2==0)
{
pair=n;
sum=pair+pair;
}

if(num<0)
{


if(n%2==0)
{
pair=n;
}
else
{
odd=n;
sum=odd+odd;
}
return sum;
}
}
}


int main()
{
int num,sum1;
sum1=sum;

printf("enter a number: ");
scanf("%d",&num);


printf("\n");
printf("%d\n",sum1);

return 0;
}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7530
Ubicación: Mexico

MensajePublicado: 10/08/2012 3:44 pm
Título:

Hola meirdv

Bienvenido a los foros. Por favor lee sus reglas, eso para que tengas una idea de como funciona esta comunidad.

Si no tienes un curso de calidad sobre C por favor revisa la sección "Cursos" de este sitio.

En C las sentencias se ejecutan en el orden en que estas aparecen, tal como esta tu programa el orden de las operaciones es (en seudo codigo):
Código:
1) Calcular la suma
2) Instrucciones
3) Obtener el numero


Cuando debería ser:
Código:
1) Instrucciones
2) Obtener el numero
3) Calcular la suma


Ademas la función solo debe recibir un argumento: el numero a procesar. Todos los demás parámetros debes sustituirlos por variables locales.

Un empujón:
Código:
#include <stdio.h>

int suma(int num);

int main(void)
{
   int num;
   
   puts("Indica el numero:");
   scanf("%d", &num);
   
   printf("La suma es %d\n", suma(num));
   
   return 0;
}

int suma(int num)
{
   int s;
   
   s = 0;
   if (num > 0){
      /* Numero mayor que cero, suma de pares */
   }else {
      /* Numero igual o menor que cero, suma de impares */
   }
   
   return s;
}

Como puedes ver falta indicar que hacer si el numero a procesar es el cero. El resto te toca a ti.

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
meirdv



Registrado: 10 Ago 2012
Mensajes: 5

MensajePublicado: 10/08/2012 3:50 pm
Título:

muchas gracias por tu ayuda , estaba muy confundido aohra que inicie el tema de funciones y ahora que me explicaste se me aclaro mas.
y si leere las reglas del foro no quiero hacer cosas en contra de las reglas
nuevamente gracias
Volver arriba
meirdv



Registrado: 10 Ago 2012
Mensajes: 5

MensajePublicado: 12/08/2012 3:39 pm
Título: avance con condigo

#include <stdio.h>

int sum(int num);

int main(void)
{
int num;

puts("Enter a integer number: ");
scanf_s("%d", &num);
printf("the number is %d , and the sum is %d\n",num,sum(num));

return 0;
}

int sum(int num)
{
int s;
int pair,odd;
int sum;

s=0;


if (num > 0)
{

for(s=0;s<num;s++)
if(s%2==0)
{
pair=s;
sum=pair+pair;

}

}

else
{

if(num<0)
{
for(s=0;s>num;--s)
if(s%2!=0)
{
odd=s;
sum=odd+odd;
}
}
}

return sum;
return odd;
}
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 7530
Ubicación: Mexico

MensajePublicado: 12/08/2012 6:07 pm
Título:

Como ya te comente tienes que conseguir un libro (o curso) de calidad ya que tienes varios errores básicos en esa función:

* No puedes declarar una variable con el mismo nombre que la función.

* No puedes devolver dos valores o esperar que la función analice y encuentre el valor "correcto" a devolver.

Tampoco necesitas verificar si el numero es par o impar ya que puedes iniciar con el primer par (o impar) e incrementar (o reducir) el numero en dos unidades.

Esa función corregida es:
Código:
int suma(int num)
{
   int s;
   int i;
   
   s = 0;
   if (num > 0)
      for (i = 2; i < num; i += 2)
         s += i;
   else if (num < 0)
      for (i = -1; i > num; i -= 2)
         s += i;
   
   return s;
}


Y por favor la próxima vez indica claramente en el mensaje en que parte de el tienes dificultades o cual es el problema (ya que cualquiera puede responder a el).

Un saludo
_________________
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Volver arriba
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com