[ Foro de C++ ]

ME DICE QUE LA FUNCION NO ESTA PERMITIDA ANTES DEL "{"

03-Nov-2018 00:03
Invitado (RICHARDOSO)
1 Respuestas

#include<iostream>
#include<conio.h>
#include<math.h>
using namespace std;

int factorial(int n);
int combinaciones(int y, int z);
int comb_recursivo(int y, int z);
int mcd(int a, int b){
if(b==0) return a;
else mcd (b,a%b);
}
int main(void){
int numero, permu = 1,n, m,pri,seg,p,cont=0,opc;
cout<<"\tBienvenido que desea realizar\n"<<endl; //desde la linea 11 a la 18 muestra en pantalla al usuario las opciones
cout<<"1. combinaciones sin repeticion"<<endl;
cout<<"2. permutaciones sin repeticion"<<endl;
cout<<"3. algoritmo de EUCLIDES"<<endl;
cout<<"4. Numeros Primos"<<endl;
cout<<"5. Salir"<<endl;
cout<<"Opcion: "<<endl;
cin>>opc; //aca lee la opcion ingresada por el usuario

system("cls"); //aca simplemente nos limpia la pantalla

switch(opc){
case 1:
cout << "Introduzca el numero de objetos del conjunto (n): " << endl;
cin >> n;
  cout << "Introduzca el numero de objetos a elegir (m): " << endl;
  cin >> m;

  cout << endl << "Las combinaciones de " << n << " objetos tomados " <<
          m << " a " << m << " son ";
          cout << comb_recursivo(n,m) << endl << endl;
  system("pause");

int factorial(int n){
  int resultado=1, i;
  if (n>1) {
       for (i=2;i<=n;i++) {
           resultado*=i;   //Esta expresion es una abreviatura de resultado=resultado*i; */
       }
  }
  return resultado;
}

int combinaciones(int y, int z){
 return (factorial(y) / (factorial(z) * factorial(y-z)));
}

int comb_recursivo(int y, int z){
 int r;
 if (y==z || z==0) r=1;
 else r=(y*comb_recursivo(y-1,z-1))/z;
 return r;
}
break;
case 2:
cout<<"Digite un numero: ";
cin>>numero;
for (int l=1;l<=numero;l++){ /*dentro de for podemos iniciar un conjunto de instrucciones  donde inicias la instruccion
luego sigue la condicion de la instruccion y al final simplemente la finalizacion de la instruccion
el "i" simplemente lo uso como un variable dentro del conjunto de instrucciones  */
permu = permu * l;
}
cout<<"\nel resultado de la permutacion es: "<<permu<<endl;
break;
case 3:

do{    /* la sentencia do while es una sentencia en la cual se ejecuta por lo menos 1 una vez
en este luego comprobara si se cumple cierta condicion se seguira ejecutando si no se acaba*/

cout<<"ingrese Primer Numero: ";
cin>>pri;
if(pri<0) cout<<"\nPOR FAVOR INGRESA UN NUMERO QUE SEA POSITIVO Y ENTERO\n";  /*aca con el IF (pri<0) donde digo que si
si mi variable pri es menor a cero  tendra que volver a ingresar el primer numero dando a entender que este tendra que ser mayor a cero*/
}while(pri<0);

do{

cout<<"ingrese Segundo Numero: ";
cin>>seg;
if(seg<0) cout<<"\nPOR FAVOR INGRESA UN NUMERO QUE SEA POSITIVO Y ENTERO\n";
}while(seg<0);

if(pri>seg)
cout<<"\nEl MCD ( "<<pri<<" , "<<seg<<" ) " <<mcd(pri,seg)<<endl<<endl;
else
if(seg<pri)
cout<<"\nEl MCD ( "<<seg<<" , "<<pri<<" ) " <<mcd(seg,pri)<<endl<<endl;

break;
case 4:
cout<<"\nIngrese un Numero: ";
cin>>p;

for(int i=1;i<=p;i++){

if(p%i==0){ //Aca solo tengo una pequeña condicional en la cual digo si //
// n divido por i no es igual a 0 quiere decir que es primo sino sera compuesto*/
cont++;
}
}
  if(cont>2){ //IF else es un conjunto de instrucciones simples en la cual si se//  
//cumple la condicion IF mostrara en pantalla  "el numero es compuesto y//
//sino se cumplira la otra condicion en la cual dice "el numero es primo"//
cout<<"\nEl Numero es Compuesto";
}
else{
cout<<"\nEl Numero es Primo";
}
break;
case 5:
break;
}
return 0;
}


03-Nov-2018 19:30
Nacho Cabanes (+37)

Tienes funciones declaradas dentro de "main", en medio del switch, en una zona del programa en la que no se pueden declarar funciones. ¿Por qué no declaras todas ellas antes de main?






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...