[ Foro de C++ ]

ayuda a dividir un programa en funciones

18-Mar-2021 17:36
Invitado (mauro)
0 Respuestas

como puedo dividir este programa por funciones
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
int opcion, n;
do
{
printf("\tElija una de las opciones:\n\n");
printf("1. Sumatoria de N\n");
printf("2. Factorial de N\n");
printf("3. Mostrar N terminos de la sucesion de Fibonacci\n");
printf("4. Elevar un numero A a una potencia B\n");
printf("5. Calcular el maximo comun divisor de dos numeros\n");
printf("6. Identificar si un numero es primo\n");
printf("7. Conocer los divisores de un numero\n");
printf("8. Identificar si un anio es bisiesto\n");
printf("9. Identificar si una palabra es palindromo\n");
printf("0. Terminar el programa\n\n ");
printf("Escriba la opcion que desea: ");
scanf("%i", &opcion);
system("cls");
switch(opcion)
{
case 1:
{
int sum = 0;
printf("Ha elegido sumatoria de un numero N\n");
    printf("Ingrese el numero: ");
    scanf("%d", &n);
    for (int i = 0; i <= n; i++)
    sum = sum + i;
    printf("La sumatoria del numero es %d\n\n", sum);
    system("pause");
system("cls");
break;
}
case 2:
{
int fact = 1;
printf("Ha elegido factorial de un numero N\n");
printf("Ingrese el numero: ");
scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    fact = fact * i;
printf("\n");
printf("El factorial del numero es: %d\n\n", fact);
system("pause");
system("cls");
break;
}
case 3:
{
int actual = 1, anterior = 1;
    printf("Ha elegido mostrar n terminos de la sucesion de Fibonacci\n");
    printf("Ingrese cuantos terminos: ");
scanf("%i",&n);
    printf("\n");
    for(int i = 0; i < n; i++)
        {
        printf("%d\t", anterior);
        actual += anterior;
        anterior = actual - anterior;
       }
    printf("\n\n");
    system("pause");
system("cls");
break;
}
case 4:
{
int b;
float pot = 1;
printf("Ha elegido elevar un numero a una potencia\n");
printf("Ingrese el numero a elevar: ");
scanf("%d", &n);
printf("Ingrese a que potencia elevarlo: ");
scanf("%d", &b);
if (b < 0)
{
for (int i = b; i < 0; i++)
pot = pot * n;
pot = 1 / pot;
}
else
for (int i = 0; i < b; i++)
pot = pot * n;
printf("%d elevado a la %d es %f\n\n", n, b, pot);
system("pause");
system("cls");
break;
}
case 5:
{
int m, r;
printf("Ha elegido calcular el maximo comun divisor de dos numeros\n");
printf("Ingrese uno de los numeros: ");
scanf("%d", &n);
printf("Ingrese el otro numero: ");
scanf("%d", &m);
if (n < m)
{
int aux = m;
m = n;
n = aux;
}
r = n % m;
while (n%m != 0)
{
n = m;
m = r;
r = n % m;
}
printf("El maximo comun divisor de los numeros es %d\n\n", m);
system("pause");
system("cls");
break;
}
case 6:
{
int div = 2;
printf("Ha elegido identificar si un numero es primo\n");
printf("Ingrese el numero: ");
scanf("%d", &n);
while(n != div && n % div != 0)
div++;
if (n == div)
printf("El numero es primo\n\n");
else
printf("El numero NO es primo\n\n");
system("pause");
system("cls");
break;
}
case 7:
{
printf("Ha elegido conocer los divisores de un numero\n");
printf("Ingrese el numero: ");
scanf("%d", &n);
for (int i = 1; i <= n; i++)
if (n % i == 0)
printf ("%d es divisor de %d\n", i, n);
printf("\n\n");
system("pause");
system("cls");
break;
}
case 8:
{
printf("Ha elegido identificar si un anio es bisiesto\n");
printf("Ingrese el numero: ");
scanf("%d", &n);
if (n % 4 == 0 && n % 100 != 0 || n % 400 == 0)
printf("El anio es bisiesto\n\n");
else
printf("El anio NO es bisiesto\n\n");
system("pause");
system("cls");
break;
}
case 9:
{
int i;
char cad[50];
printf("Ha elegido identificar si un anio es bisiesto\n");
printf("Ingrese el numero: ");
scanf("%s", &cad);
n = strlen(cad);
for (i = 0; i < n/2; i++)
{
if (cad[i] != cad[n - 1 - i])
break;
}
if (i == n/2)
printf("La palabra es palindromo\n\n");
else
printf("La palabra no es palindromo\n\n");
system("pause");
system("cls");
break;
}
case 0:
printf("Fin del programa\n");
break;
default:
printf("Esa opcion no es valida \n\n");
   break;
}
}while(opcion != 0);

printf("\n");
system("pause");
return 0;
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)