Ayuda.Error= a function-definition is not allowed here before '{' token

Iniciado por Deathclaw, 9 Abril 2015, 21:29 PM

0 Miembros y 1 Visitante están viendo este tema.

Deathclaw

Hola, les explico mi problema: estaba programando unos algoritmos de planificación en C++ para un proyecto de la Universidad, ya había escrito 2 algoritmos cuando me informan que debo tener ambos algoritmos en un solo trabajo (hasta ese momento tenia ambos códigos en archivos diferentes), el problema es que tenia escrito uno de los algoritmos de forma modular y se me ocurrió hacer lo mismo para unir ambos códigos junto con un menú, pues bien ahora me aparece el error en cuestión en una de las lineas, lo extraño es que la función del error tiene ambos corchetes al comienzo y al final. Espero me ayuden, les dejo el codigo (el error aparece en la linea 44 contando los espacios en blanco desde el primer #include, justo debajo del void process::nuevo(void):

Código (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
float esperafifo=0, respuestafifo=0, esperasjf=0, respuestasjf=0, espera=0, respuesta=0;

int menu();
void fifo();
void sjf();

void comparacion();

main()
{
int opc;
do{
opc=menu();
system("cls");
switch (opc)
{ case 1: fifo(); break;
case 2: sjf(); break;
case 3: comparacion();  break;
}
}while (opc!=0);
}

void fifo()
{
class process
{
float tiemporafaga, tiempoespera, tiemporespuesta, tiempollegada, tiempofinal, tiemporetnorm, tiempofinal2;
class process *next, *ptr, *ptr2;
int max;
public:
process(){tiemporafaga=tiempoespera=tiemporespuesta=tiempollegada=tiempofinal=tiemporetnorm=tiempofinal2=0;};
void nuevo(void);
void fcfs(void);
}*front=NULL, *rear=NULL;

void process::nuevo(void)
{
float temp;
   cout << " *Algoritmo de planificacion FIFO*" << endl;
cout << "Ingrese el numero de procesos a planificar: ";
cin >> max; cout << endl;
system ("cls");

class process *new_process;
for (int i=1; i<=max; i++)
{
new_process=new process;
do
{
do{
cout << "Ingrese tiempo de llegada del proceso: " << i << "=";
cin >> new_process->tiempollegada;
system("cls");
if ((new_process->tiempollegada)>=50)
{
system ("cls");
cout << "Tiempo de llegada invalido" << endl;
}
}while ((new_process->tiempollegada)>=50);
do{
cout << "Ingrese el tiempo de rafaga del proceso: " << i << "=";
cin >> new_process->tiemporafaga;
system("cls");
if ((new_process->tiemporafaga)>=50)
{
system("cls");
cout << "Tiempo de rafaga invalido" << endl;
}
}while ((new_process->tiemporafaga)>=50);
}while (new_process<=0);
if (front==NULL)
{
front=new_process;
ptr=front;
}
else
rear->next=new_process;
rear=new_process;
}
}

void process::fcfs(void)
{
float tiempotempfinal=0, tiempotemp=0, respuesta=0, tiempotemprespnorm=0, tiempoespera=0;
int suma=0, suma2=0;
system("cls");
cout << "Proceso Tiempo de Rafaga Tiempo de Llegada" << endl;
for (int i=1; i<=max; i++)
{
cout << i <<" "<< (ptr->tiemporafaga) <<" "<<(ptr->tiempollegada) << endl;
ptr=ptr->next;
}ptr=front;
cout << "Tiempo Final Tiempo de Respuesta Tiempo de Espera" << endl;
for (int i=1; i<=max; i++)
{
(ptr->tiempofinal)=tiempotempfinal +(ptr->tiempofinal)+(ptr->tiemporafaga);
tiempofinal = ptr->tiempofinal;
(ptr->tiemporespuesta)= (ptr->tiempofinal)-(ptr->tiempollegada);
respuesta = respuesta + (ptr->tiemporespuesta);
for (int i=1; i<=max; i++)
{
suma+=(ptr->tiemporafaga);
suma2+=(ptr->tiempollegada);
(ptr->tiempoespera)=suma-suma2;
}
//(ptr->tiemporetnorm)=(ptr->tiemporespuesta)/(ptr->tiemporafaga);
//tiempotemprespnorm=tiempotemprespnorm+(ptr->tiemporetnorm);
cout << (ptr->tiempofinal)<<" "<<(ptr->tiemporespuesta)<<" "<<(ptr->tiempoespera)<<endl;
ptr=ptr->next;
}
cout << "El tiempo de respuesta promedio es: " << respuesta/max<<endl;
cout << "El tiempo de espera promedio es: " << tiempotemprespnorm/max<<endl;
system ("pause");
return;
}

main(void)
{
process p;
p.nuevo();
p.fcfs();
system ("PAUSE");
}
}

void sjf()
{
int np, sre, ses, i, b, c;
float a, pre, pes, s, nM;
float Tll[50], TS[50], TScop[50], TCo[50], TFi[50], TRe[50], TEs[50];
{
cout<<"                       *Algoritmo de Planificacion SJF*       " << endl;
cout<<"Ingrese el numero de procesos a planificar: ";
cin>>np; cout<<endl;
system("cls");
a=0; sre=0; ses=0;
for (i=0;i<np;i++)
{
do
{
cout<<"Ingrese el Tiempo de Llegada del proceso "<<i+1<<": ";
cin>>Tll[i]; cout<<endl;
system("cls");
if (Tll[i]>=50)
{
system("cls");
cout <<"Tiempo de llegada invalido" << endl;
}
}while (Tll[i]>=50);
do
{
cout<<"Ingrese el Tiempo de Rafaga del proceso "<<i+1<<": ";
cin>>TS[i]; cout<<endl;
system("cls");
if (TS[i]>=50)
{
system("cls");
cout <<"Tiempo de rafaga invalido" << endl;
}
}while (TS[i]>=50);
}
nM=TS[0];
for (i=1;i<np;i++)
{
if (TS[i]>nM)
nM=TS[i];
}
TCo[0]=0;
TFi[0]=TS[0];
for (i=0;i<np;i++)
{
TScop[i]=TS[i];
}
s=0; c=0;
do
{
b=1;
for (i=1;i<np;i++)
{
if (TScop[b]>TScop[i])
{
a=TScop[i];
b=i;
}
}
TCo[b]=TFi[c];
TFi[b]=TCo[b]+TS[b];
TScop[b]=nM+1;
c=b;
s=s+1;
}while(s<(np-1));
for (i=0;i<np;i++)
{
TRe[i]=TFi[i]-Tll[i];
sre=sre+TRe[i];
TEs[i]=TCo[i]-Tll[i];
ses=ses+TEs[i];
}
pre=sre/np;
pes=ses/np;
cout<<endl;
cout<<"Proceso T.Llegada T.Rafaga T.Comienzo T.Finalizacion T.Respuesta T.Espera"<<endl;
for (i=0;i<np;i++)
{
cout<<" "<<i<<"          "<<Tll[i]<<"          "<<TS[i]<<"         "<<TCo[i]<<"          "<<TFi[i]<<"          "<<TRe[i]<<"          "<<TEs[i]<<endl;
}
cout<<"Promedio de Tiempo de Respuesta: "<<pre<<endl;
cout<<"Promedio de Tiempo de Espera: "<<pes<<endl;
getch();
system("pause");
return;
}
}

void comparcaion()
{

}

int menu()
{
int opc;
cout << " MENU DE OPCIONES" << endl;
cout << "---------------------------------------------------------------" << endl;
cout << "Oprima un numero para elegir una de las siguientes opciones:"
cout << "1.-Algoritmo fifo" << endl;
cout << "2.-Algoritmo SJF"<< endl;
cout << "3.-Algoritmo ****" << endl;
cout << "4.-comparar resultados" << endl;
cout << "---------------------------------------------------------------" << endl;
cout << "Escoja su opcion= " << endl;
cin >> opc;
return opc;
}  


El código no esta terminado si se dan cuenta. También me gustaría saber si hay alguna forma de escribir un sub-proceso en modular dentro del proceso principal también en modular que es masomenos lo que intente hacer. Gracias y espero me ayuden.

DarK_FirefoX


ivancea96

Es preferible que copies literalmente el texto del error.

Entre otros errores que puedas tener: tienes 2 main().


Edito: ¿Qué es void fifo(){? Al parecer no está terminado.

Deathclaw

Cita de: ivancea96 en  9 Abril 2015, 21:37 PM
Es preferible que copies literalmente el texto del error.

Entre otros errores que puedas tener: tienes 2 main().


Edito: ¿Qué es void fifo(){? Al parecer no está terminado.

el void fifo() es el metodo que declare para incluir uno de los algoritmos dentro del programa, ese es el que ya estaba en modular y por eso hay dos main() lo que quiero saber es alguna manera de poder tener ambos main() o de diferenciar el del metdo fifo() del pricipal.