Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2012, 10:25
adrianing
 
Fecha de Ingreso: agosto-2012
Mensajes: 8
Antigüedad: 12 años, 4 meses
Puntos: 0
Pregunta funcion que compila pero se queda trabada

En este caso el programa me pide :
/*Escribir un programa que presente un menu con 3 opciones. La opcion A debera aceptar una
serie de numeros separados por un espacio y terminada en un punto, dando como resultado la
suma de todos los numeros.
La opcion B aceptara un numero y calculara la suma de sus divisores, excepto el mismo. El
menu se ejecutara hasta introducir la opcion C.*/

La funcion a) es la que me falta, la he hecho pero cuando introduzco los numeros y por ultimo el punto se me queda parado el programa, no se donde he fallado.

Código:
#include <stdio.h>
#include <stdlib.h>
#define PUNTO '.'
int sumanumeros(int b);
int sumadivisores(int a);
int main()
{ 
    char letra;
    int num,num2,x,cont=0;;

    do{
          system("cls");
          printf(" a)Suma de numeros \n b)Suma de divisores \n c)Salir \n");
          scanf("%c",&letra);
          
          switch(letra)
          {
                       case'a':system("cls");
                               
                               printf("Introduzca una serie de numeros terminada en punto");
                               scanf("%d",&num2);
                               x=sumanumeros(num2);
                               
                               printf("La suma de los numeros es:%d \n\n\n",x);
                               break;
                       case'b':system("cls");
                               printf("Introduzca un numero:");
                               scanf("%d",&num);
                               x=sumadivisores(num);
                               printf("La suma de los divisores excluyendo a el mismo es:%d \n\n",x);
                               break;
                       case'c':break;
          }
    fflush(stdin);
    system("pause");
    }
    while(letra>='a' && letra<='b');                   
    
return 0;
}
int sumanumeros(int b)
{
    int suma=0;
    
    while(b!= PUNTO)
    {
      scanf("%d",&b);
      suma = suma + b;
    }
    
      return suma;
}   

int sumadivisores(int a)
{
    int i,suma=1;
    for(i=2;i<=a/2;i++)
    {
        if(a%i==0)
        suma=suma+i;
    }
    return suma;
}