Created
March 17, 2009 03:51
-
-
Save fitoria/80272 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//factorial.cpp | |
//compilar: g++ factorial.cpp -o factorial | |
#include<iostream> | |
using namespace std; | |
double factorial(double numero); | |
double fac = 0; | |
int main(int arg, char* argc[]) | |
{ | |
double numero; | |
cout << "Introduzca un numero: " ; | |
cin >> numero; | |
cout << "\nEl Factorial es: "<< factorial(numero) << endl; | |
return 0; | |
} | |
double factorial(double numero) | |
{ | |
fac += numero * (numero - 1); | |
if(numero==1) | |
return fac; | |
else | |
factorial(numero -1); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Programa para simular los estados del procesador */ | |
#include<iostream> | |
#include<vector> | |
using namespace std; | |
enum estados{NULO, NUEVO, LISTO, EJECUCION, BLOQUEADO, TERMINADO}; | |
typedef struct{ | |
int estado; | |
char nombre; | |
}proceso; | |
int main(int arg, char* argc[]) | |
{ | |
vector<proceso> procesos; //TODO: inicializar esta variable con la lista de procesos. | |
cout << "Tenemos " << procesos.size() << " procesos en cola" << endl; | |
while(procesos.size() > 0) | |
{ | |
int i = 0; | |
int nuevoEstado; | |
for(i = 0; i <= procesos.size(); i++) | |
{ | |
//por cada proceso preguntar el cambio de estado | |
cout << "\nproceso: " << procesos[i].nombre | |
<< " || estado: " << procesos[i].estado << endl; | |
cout << "\n Introdusca el nuevo estado: " << endl; | |
switch (procesos[i].estado){ | |
case NULO: | |
cout << "\nEl proceso cambia de estado nulo a nuevo. " << endl; | |
nuevoEstado = NUEVO; | |
break; | |
case NUEVO: | |
cout << "\nEl proceso cambia de estado nuevo a listo. " << endl; | |
nuevoEstado = LISTO; | |
break; | |
case LISTO: | |
cout << "\n3 - Ejecucion" << endl; | |
cout << "\n5 - Terminado" << endl; | |
cin >> nuevoEstado; | |
if(!nuevoEstado || nuevoEstado != 3 || nuevoEstado != 5) | |
cout << "\nERROR! Estado Incorrecto."; | |
break; | |
case EJECUCION: | |
cout << "\n2 - Listo" << endl; | |
cout << "\n4 - Bloqueado" << endl; | |
cout << "\n5 - Terminado" << endl; | |
cin >> nuevoEstado; | |
if(!nuevoEstado || nuevoEstado != 3 || nuevoEstado != 4 || nuevoEstado != 5) | |
cout << "\nERROR! Estado Incorrecto."; | |
break; | |
case BLOQUEADO: | |
cout << "\nEl proceso cambia de estado nuevo a listo. " << endl; | |
nuevoEstado = LISTO; | |
break; | |
} | |
if(nuevoEstado) | |
procesos[i].estado = nuevoEstado; | |
//sacamos el proceso si tiene estado terminado. | |
if (procesos[i].estado == TERMINADO){ | |
cout << "Borrando proceso por tener estado terminado" << endl; | |
procesos.erase(procesos.begin() + i); | |
} | |
} | |
} | |
} | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Simulación de particion fija. | |
* Adolfo Jurgen Fitoria Escobar. | |
* Gustavo Jimenez | |
* Eduardo Rosales | |
* Nilson Castellón. | |
* Octavio Flores V. | |
* Bajo licencia WTFPL. | |
* compilar con: g++ particion_fija.cpp -o particion_fija | |
* correr: ./particion_fija | |
*/ | |
#include<iostream> | |
#include<vector> | |
int slots[] = {100, 200, 300, 400, 500}; | |
struct proc{ | |
char nombre; | |
int tamano; | |
int slot; | |
}; | |
using namespace std; | |
typedef proc proceso; | |
int main(int arg, char* argc[]) | |
{ | |
int i = 0, j = 0, k = 0; | |
proceso procesos[5]; // inicializar esta variable para correr. | |
for(i=0; i <= sizeof(procesos); i++) | |
{ | |
for (j = 0; j<= sizeof(slots); j++) | |
{ | |
for(k=0; k<=i; k++){ | |
if (!procesos[k].slot){ | |
if (procesos[i].tamano <= slots[j]) | |
{ | |
cout << "\nentra un proceso al slot: " << j | |
<< " proceso: " << procesos[i].nombre << endl; | |
procesos[i].slot = j; | |
} | |
} | |
} | |
} | |
} | |
cout << "\nAsignaciones: \n" << endl; | |
for(i = 0; i<=sizeof(procesos); i++) | |
{ | |
cout << "\nproceso: " << procesos[i].nombre << " tamano: " << | |
procesos[i].tamano << " slot: " << procesos[i].slot << endl; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Programa para simular el contador de procesos. | |
* Adolfo Jurgen Fitoria Escobar. | |
* Gustavo Jimenez | |
* Eduardo Rosales | |
* Nilson Castellón | |
* Octavio Flores. | |
* bajo licencia WTFPL mas info en http://sam.zoy.org/wtfpl/ | |
*/ | |
#include<iostream> | |
#include<ctime> | |
#include<cstdlib> | |
#include<vector> | |
using namespace std; | |
//Estructura para el proceso | |
struct proc{ | |
unsigned int indice; | |
unsigned int contador; | |
unsigned int base; | |
char nombre[]; | |
}; | |
typedef proc proceso; | |
void ordenar(vector<proceso> procesos); | |
int generadorNumero(); | |
int main(int arg, char* argv[]) | |
{ | |
int ipc=0, i; | |
cout << "\nSimulacion de IPC\n" << endl; | |
ipc = generadorNumero(); | |
ordenar(&procesos); | |
while (procesos.size() > 0) | |
{ | |
for(i = 0; i <= procesos.size(); i++) | |
{ | |
cout << "\n" << i << " contador:" << procesos[i].contador << | |
"ipc: " << ipc << endl; | |
if (procesos[i].contador == ipc){ | |
cout << "\nsacando proceso: " << procesos[i].nombre << endl; | |
//sacar proceso del vector | |
procesos.erase(procesos.begin() + i); | |
} | |
} | |
} | |
return 0; | |
} | |
void ordenar(vector<proceso> procesos) | |
{ | |
int tam = procesos.size(), i, j; | |
proceso temp, temp2; | |
for (i = (tam - 1); i>=0; i--) | |
{ | |
for(j=1; j<= (tam-1); j++) | |
{ | |
if(procesos[j-1].base > procesos[j].base) | |
{ | |
temp = procesos[j-1]; | |
procesos[j-1] = procesos[j]; | |
procesos[j] = temp; | |
} | |
} | |
} | |
} | |
int generadorNumero() | |
{ | |
srand(time(0)); | |
return (rand() % 10) + 1; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment