elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  pasar datos de una cola dinámica a otra cola...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: pasar datos de una cola dinámica a otra cola...  (Leído 9,212 veces)
include ();

Desconectado Desconectado

Mensajes: 36


No seas envidioso, comparte lo que sabes... ;)


Ver Perfil
pasar datos de una cola dinámica a otra cola...
« en: 9 Agosto 2012, 07:41 am »

hola es posible pasar datos de una cola dinámica a otra cola dinámica, por ejemplo tengo una cola de "Procesos Listos" y simulo que estoy ejecutando el proceso entonces elimino el primer proceso de la cola "Procesos Listos" y lo paso a la cola "Procesos Ejecutados"....

necesito ideas gracias....




PD. Estoy tratando de hacer un simulador de un bloque de control de procesos de un SO en C++


En línea

Grandeza no es solo saber, Grandeza es ayudar y compartir!!!
Fire544

Desconectado Desconectado

Mensajes: 85


"Escucha el sonido del 0, 1"


Ver Perfil WWW
Re: pasar datos de una cola dinámica a otra cola...
« Respuesta #1 en: 10 Agosto 2012, 05:49 am »

hola es posible pasar datos de una cola dinámica a otra cola dinámica, por ejemplo tengo una cola de "Procesos Listos" y simulo que estoy ejecutando el proceso entonces elimino el primer proceso de la cola "Procesos Listos" y lo paso a la cola "Procesos Ejecutados"....

necesito ideas gracias....




PD. Estoy tratando de hacer un simulador de un bloque de control de procesos de un SO en C++

Hola, a ver primeramente en que S.O desarrollas dicha aplicacion, que estandar c/c++ sigues y que compilador utilizas y cuales librerias tienes disponibles para dicho desarrollo ?


En línea

"Si enseñas a pezcar a un niño lo ayudas para toda la vida, si pezcas para alimentarlo lo ayudas por un momento".
include ();

Desconectado Desconectado

Mensajes: 36


No seas envidioso, comparte lo que sabes... ;)


Ver Perfil
Re: pasar datos de una cola dinámica a otra cola...
« Respuesta #2 en: 10 Agosto 2012, 08:42 am »

ya casi lo tengo  >:D, solo dime como agarro el txt por ejemplo que venga asi:

Código:
crear proceso(1,uno,5,6)
crear proceso(2,dos,4,5)

debo de leer el txt y separar por tokens y guardar solo en este caso el:
1
uno
5
6
2
dos
4
5

en unas variables de cola dinamica, xq estaba haciendo la cola dinamica pero yo le ingresaba los datos, cuando me decia ingrese ID, nombre..etc, ahora en lugar de que yo se los ingrese que los tome del txt...

esta es la cola que estoy manejando..
Código:
struct Node* first = NULL;
   struct Node* last = NULL;

struct Node{
   int data;
   char nombre;
   int tiempo;
   int quant;
   struct Node* next;
};

struct Node* newNode(int data,char nombre, int tiempo,int quant){
   struct Node* New = (struct Node*)malloc(sizeof(struct Node));
   New->data = data;
   New->nombre = nombre;
   New->tiempo = tiempo;
   New->quant = quant;
   New->next = NULL;
   return New;
}

void agregar(struct Node** first, struct Node** last, int data, char nombre,int tiempo,int quant){
   if(*first == NULL && *last == NULL){
      *first = newNode(data,nombre,tiempo,quant);
      *last = *first;
   }
   else{
      (*last)->next = newNode(data,nombre,tiempo,quant);
      (*last) = (*last)->next;
   }
}
En línea

Grandeza no es solo saber, Grandeza es ayudar y compartir!!!
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: pasar datos de una cola dinámica a otra cola...
« Respuesta #3 en: 10 Agosto 2012, 09:03 am »

Mira se me ocurre que crees una FUNCIÓN que te extraiga dicho nodo de la lista (Ignoro tu estructura) ya sea solo el valor o la estructura plena, después crea otra función que solo ligue con otra.

Aun así te dejo este enlace de una lista doblemente enlazada.

http://c.conclase.net/edd/?cap=005

En la sección de descargas encuentras el código fuente, pero será mejor que te lees todo eso, en dado caso que no te quede claro o que prefieras textos en ingles tienes la pagina de la Universidad De Stanford (ignoro la liga por ahora).

Dulces Lunas!¡.
En línea

The Dark Shadow is my passion.
BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: pasar datos de una cola dinámica a otra cola...
« Respuesta #4 en: 10 Agosto 2012, 10:01 am »

mira tengo este codigo:
Código:
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
   struct Node* first = NULL;
   struct Node* last = NULL;
   struct Node* temporal = NULL;
   struct Node2* first2 = NULL;
   struct Node2* last2 = NULL;
   struct Node2* temporal2 = NULL;
struct Node{
   int data;
   char nombre;
   int tiempo;
   int quant;
   struct Node* next;
};

struct Node2{
   int data2;
   char nombre2;
   int tiempo2;
   int quant2;
   struct Node2* next2;
};

struct Node* newNode(int data,char nombre, int tiempo,int quant){
   struct Node* New = (struct Node*)malloc(sizeof(struct Node));
   New->data = data;
   New->nombre = nombre;
   New->tiempo = tiempo;
   New->quant = quant;
   New->next = NULL;
   return New;
}

struct Node2* newNode2(int data2,char nombre2, int tiempo2,int quant2){
   struct Node2* New = (struct Node2*)malloc(sizeof(struct Node2));
   New->data2 = data2;
   New->nombre2 = nombre2;
   New->tiempo2 = tiempo2;
   New->quant2 = quant2;
   New->next2 = NULL;
   return New;
}

void agregar(struct Node** first, struct Node** last, int data, char nombre,int tiempo,int quant){
   if(*first == NULL && *last == NULL){
      *first = newNode(data,nombre,tiempo,quant);
      *last = *first;
   }
   else{
      (*last)->next = newNode(data,nombre,tiempo,quant);
      (*last) = (*last)->next;
   }
}
void agregar2(struct Node2** first2, struct Node2** last2, int data2, char nombre2,int tiempo2,int quant2){
   if(*first2 == NULL && *last2 == NULL){
      *first2 = newNode2(data2,nombre2,tiempo2,quant2);
      *last2 = *first2;
   }
   else{
      (*last2)->next2 = newNode2(data2,nombre2,tiempo2,quant2);
      (*last2) = (*last2)->next2;
   }
}

struct Node* borrar(struct Node** first, struct Node** last){
   struct Node* temporal;
   if(*first == NULL && *last == NULL){
      printf("Cola está vacía...\n\n");
      return NULL;
   }
   else if((*first)->next == NULL && (*last)->next == NULL){
      printf("Cola contiene un único elemento...\n\n");
      temporal = *first;
      *first = NULL;
      *last = NULL;
      return temporal;
   }
   else{
      printf("Cola contiene más de un elemento...\n\n");
      temporal = *first;
      *first = (*first)->next;
      return temporal;
   }
}

void mostrar(struct Node* agre){

   //struct Node* temporal = NULL;
   printf("\n");
   //while(agre != NULL){
      printf("%d ", agre->data);
      int id=agre->data;
      char n=agre->nombre;
      int t=agre->tiempo;
      int q=agre->quant;
      cout<<agre->nombre<<" ";      
      printf("%d ", agre->tiempo);
      cout<<agre->quant<<" ";
        if(t > q){
for(int i = (time(NULL) + q); time(NULL) != i; time(NULL));
t=t-q;
cout<<t;
borrar(&first,&last);
agregar(&first, &last, id,n,t,q);
}
else{
for(int i = (time(NULL) + t); time(NULL) != i; time(NULL));
t=t-t;
cout<<t;
borrar(&first,&last);
agregar2(&first2, &last2, id,n,t,q);
}

/*if((temporal = borrar(&first, &last)) != NULL){
               printf("Dequeued value was: %d\n\n", temporal->data);
               free(temporal);
            }*/
            
 /*agre->tiempo = t;
 system("clear");
 cout<<endl<<endl;
 printf("%d ", agre->data);
 cout<<agre->nombre<<" ";
 printf("%d ", agre->tiempo);
          cout<<agre->quant<<" ";*/
 
      //agre = agre->next;
   //}
   printf("\n\n");
}

void mostrar2(struct Node* agre){
while(agre != NULL){
printf("\n");
printf("%d ", agre->data);
      cout<<agre->nombre<<" ";      
      printf("%d ", agre->tiempo);
      cout<<agre->quant<<" ";
      agre = agre->next;
  }
      printf("\n\n");
}
void mostrar3(struct Node* agre,struct Node2* agre2){
while(agre != NULL){
printf("\n");
printf("%d ", agre->data);
      cout<<agre->nombre<<" ";      
      printf("%d ", agre->tiempo);
      cout<<agre->quant<<" ";
      agre = agre->next;
  }
      printf("\n\n");
      while(agre2 != NULL){
printf("\n");
printf("%d ", agre2->data2);
      cout<<agre2->nombre2<<" ";      
      printf("%d ", agre2->tiempo2);
      cout<<agre2->quant2<<" ";
      agre2 = agre2->next2;
  }
      printf("\n\n");
}

int main(){
   //struct Node* first = NULL;
   //struct Node* last = NULL;
   //struct Node* temporal = NULL;
   int data;
   char nombre;
   int tiempo;
   int quant;
   char option = '1';
  
   while(option != 'e' && option != 'E'){
      printf("1)Agregar\n");
      printf("2)Borrar\n");
      printf("3)simular\n");
      printf("4)mostrar\n");
      printf("5)mostrar ambas\n");
      printf("e)Exit ");
      scanf("%c", &option);
      getchar();
      
      switch(option){
         case '1':
            printf("Ingrese ID (int): ");
            scanf("%d", &data);
            cout<<"Ingrese el nombre (int): ";
            cin>>nombre;
            printf("Ingrese el tiempo (int): ");
            scanf("%d", &tiempo);
            cout<<"Ingrese Quantum: ";
            cin>>quant;
            getchar();
            agregar(&first, &last, data,nombre,tiempo,quant);
            printf("\n");
         break;
        
         case '2':
            if((temporal = borrar(&first, &last)) != NULL){
               printf("Valor fue quitado de la cola: %d\n\n", temporal->data);
               free(temporal);
            }
            else printf("No hay ningún valor en la cola...\n\n");
         break;
        
         case '3':
            mostrar(first);
         break;
        
         case '4':
mostrar2(first);
break;
case '5':
mostrar3(first,first2);
break;
        
         case 'e': case 'E':break;
        
         default: printf("No es una opción...\n\n");
      }
   }
  
   return 0;
}


el ingreso de los datos lo hago manual, pero ahora ya no lo quiero hacer manual sino que los datos los obtenga apartir del txt que me van a dar..

Código:
crear proceso(1,uno,5,6)
crear proceso(2,dos,4,5)


Gracias por la ayuda

Te recomiendo usar el código del enlace que te deje anteriormente, con algunas modificaciones a la estructura y al codigo.

Por ejemplo en la estructura (organizando mejor los datos):

Código
  1.  
  2. typedef struct _nodo_ nodo;
  3. typedef struct _datos_ datos;
  4.  
  5. struct _datos_ {
  6.    long int valor1;
  7.    char* nombre;
  8.    long int valor2;
  9.    long int valor3;
  10. };
  11.  
  12. struct _nodo_ {
  13.   datos value;
  14.   nodo *siguiente;
  15.   nodo *anterior;
  16. };
  17.  
  18.  
« Última modificación: 10 Agosto 2012, 10:03 am por BlackZeroX (Astaroth) » En línea

The Dark Shadow is my passion.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Cola de impresion
Programación Visual Basic
Neobius 1 2,633 Último mensaje 26 Noviembre 2005, 01:10 am
por NYlOn
Microsoft 'pagó' a los compradores para que hicieran cola por Surface
Noticias
wolfbcn 0 2,204 Último mensaje 28 Octubre 2012, 02:07 am
por wolfbcn
Dudas con cola dinamica
Java
Nxyngs 0 1,505 Último mensaje 26 Octubre 2013, 00:59 am
por Nxyngs
[C] (Aporte) Estructura de pila y cola con memoria dinámica
Programación C/C++
class_OpenGL 2 4,194 Último mensaje 23 Agosto 2016, 04:56 am
por class_OpenGL
Ayuda con cola dinámica para calculadora de números complejos
Programación C/C++
evanderxzxtg 1 1,873 Último mensaje 20 Marzo 2019, 06:14 am
por evanderxzxtg
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines