• Sábado 4 de Mayo de 2024, 11:54

Autor Tema:  Simulador Del Ms-dos  (Leído 10906 veces)

cannabis

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Simulador Del Ms-dos
« en: Martes 5 de Diciembre de 2006, 01:27 »
0
hola
antes q nada tuve muchos problemas pa entrar aki espero q el administrador haya recibido mi mensaje

tengo un problema con un programa q me dejaron de simular el sistema operativo (ms-dos) en c++ q reconosca minimo tres comandos

espero q me ayuden plis xq no tengo ni la menor idea de empezar el programa

aunq sea como poder llamar el comando ( dir )
plis
me urge pronta ayuda


de hecho kiero simular estos comandos

dir          muestra los directorios de la unidad
md          crea un directorio
rd          elimina un directorio
time       hora del sistema
help       ayuda de comandos
vol        muestra la etiqueta y numero de serie de la unidad

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Simulador Del Ms-dos
« Respuesta #1 en: Martes 5 de Diciembre de 2006, 05:33 »
0
Mmh, no sé, será muy simple pero me parece que lo único que tienes que hacer es leer una cadena, compararla con las instrucciones que esperas, si encuentras la cadena en la lista de instrucciones ejecutas la operación en cuestión, si no está en la lista muestras un mensaje de error y ya.

Y para ejecutar las instrucciones, lo más sencillo es simplemente usar la función system y pasarle al sistema lo que quieres ejecutar, claro, si te lo permiten (si es así, no debieras tener ninguna complicación en hacer el programa).

Suerte,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

cannabis

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #2 en: Miércoles 6 de Diciembre de 2006, 01:21 »
0
si pero nose utilizar la funcion system???

me recomiendas algo???

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #3 en: Miércoles 6 de Diciembre de 2006, 14:26 »
0
Cita de: "cannabis"
si pero nose utilizar la funcion system???

me recomiendas algo???
Solo es buscar.

system( "dir" );
El pasado son solo recuerdos, el futuro son solo sueños

Geo

  • Miembro de PLATA
  • *****
  • Mensajes: 1011
  • Nacionalidad: mx
    • Ver Perfil
    • http://hsblog.mexchip.com
Re: Simulador Del Ms-dos
« Respuesta #4 en: Miércoles 6 de Diciembre de 2006, 15:38 »
0
En la parte superior del foro hay un mensaje que dice FAQ de C/C++, dentro un montón de enlaces con un montón de información.

También está Google. Esas son mis recomendaciones.

Bueno, y esta también:
http://c.conclase.net/librerias/funcion.php?fun=system

Suerte,
JJ (Geo).
La imaginación es el límite.
Hardware & Software | Mexchip

cannabis

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #5 en: Jueves 7 de Diciembre de 2006, 02:59 »
0
baje en internetr este programa espero q me ayuden pa completarlo si corre en c pero no hace nada y yo kiero crear archivos y borralos
como le hago??



#include <iostream.h>
#include <stdlib.h>
#include <string.h>


void ExecuteCommand(int i)
{
 char *strCommand[]={
  "dir",
  "time",
  "cls"
 };
 system(strCommand);
}
#pragma argsused
 
{
 char strCommand[80];

 for(;;){
  cout << "C:\\> ";
  cin.getline(strCommand,80);
  if(!strcmp(strCommand,"dir"))
     ExecuteCommand(0);
  else if(!strcmp(strCommand,"time"))
   ExecuteCommand(1);
  else if(!strcmp(strCommand,"date"))
   ExecuteCommand(2);
  else if(!strcmp(strCommand,"cls"))
   ExecuteCommand(3);
  else if(!strcmp(strCommand,"exit"))
   break;
  else
  cout << "Comando no valido" << endl;
 }
 
 system("pause");
 return 0;
}

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #6 en: Jueves 7 de Diciembre de 2006, 14:38 »
0
Código: Text
  1. #include &#60;stdio.h&#62;
  2. void ExecuteCommand(int i)
  3. {
  4. char *strCommand[]={&#34;ls&#34;,&#34;date&#34;,&#34;clear&#34;,&#34;exit&#34;};
  5. system(strCommand[i]);
  6. }
  7.  
  8. int main(void)
  9. {
  10. char strCommand[80];
  11. printf (&#34;&#036; &#34;);
  12. scanf(&#34;%s&#34;,strCommand);
  13. if(!strcmp(strCommand,&#34;ls&#34;))
  14. ExecuteCommand(0);
  15. else if(!strcmp(strCommand,&#34;date&#34;))
  16. ExecuteCommand(1);
  17. else if(!strcmp(strCommand,&#34;clear&#34;))
  18. ExecuteCommand(2);
  19. else if(!strcmp(strCommand,&#34;exit&#34;))
  20. system(&#34;exit&#34;);
  21. else
  22. printf (&#34;Comando no valido&#34;);
  23. system(&#34;pause&#34;);
  24. return 0;
  25. }
  26.  
Así te vale.
PD1. No funciona por que le falta la función principal el "main".
PD2. Estoy usando linux, por eso los comandos, solo ajustalo al Windows.
El pasado son solo recuerdos, el futuro son solo sueños

cannabis

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #7 en: Jueves 7 de Diciembre de 2006, 20:01 »
0
ok pero yo no conosco linux y no sabria q comandos o sintaxis ajustar a windows si no tengo idea cual es de uno y cual de otro como lo puedo diferenciar???

mandame la respuesta plis a mi correo
pelotona_cs@hotmail.com

cannabis

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #8 en: Jueves 7 de Diciembre de 2006, 20:06 »
0
mira esto me envio al correr el progarama


tienes
msn o aulgun correo???
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Simulador Del Ms-dos
« Respuesta #9 en: Viernes 8 de Diciembre de 2006, 01:39 »
0
Cuando veas este tipo de error seguramente es una da estas 2 opciones:
1) Escribiste mal la función que estás tratando de llamar
o
2) La función no está definida

En este caso es la opción 2

Incluye "stdlib.h"
Incluye "string.h"

 :band:
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

Mollense

  • Miembro de PLATA
  • *****
  • Mensajes: 1755
  • Nacionalidad: ar
    • Ver Perfil
    • http://solocodigo.com/
Re: Simulador Del Ms-dos
« Respuesta #10 en: Viernes 8 de Diciembre de 2006, 01:40 »
0
Perdón, en ninguno de los dos casos la función está definida. En el primero por estar mal escrita y en la segunda porque no incluyes su implementación.
"Los que renuncian son más numerosos que los que fracasan" H.F.
"No se cómo sería la III Guerra Mundial, pero la cuarta sería con piedras" A.E.
"Quién no fía no es de fiar..."


...no te quedes mirando.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #11 en: Viernes 8 de Diciembre de 2006, 01:50 »
0
Cita de: "RadicalEd"
#include <stdio.h>
void ExecuteCommand(int i)
{
char *strCommand[]={"ls","date","clear","exit"};
system(strCommand);
}

int main(void)
{
char strCommand[80];
printf ("$ ");
scanf("%s",strCommand);
if(!strcmp(strCommand,"ls"))
ExecuteCommand(0);
else if(!strcmp(strCommand,"date"))
ExecuteCommand(1);
else if(!strcmp(strCommand,"clear"))
ExecuteCommand(2);
else if(!strcmp(strCommand,"exit"))
system("exit");

else
printf ("Comando no valido");
system("pause");
return 0;
}
Exit no es un comando en si, exit es una funcion de Bash (*sh).
pause es de unistd.h y es para esperar señales... usaria sleep
 :whistling:
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

su -

  • Moderador
  • ******
  • Mensajes: 2349
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #12 en: Viernes 8 de Diciembre de 2006, 01:58 »
0
Cita de: "cannabis"
ok pero yo no conosco linux y no sabria q comandos o sintaxis ajustar a windows si no tengo idea cual es de uno y cual de otro como lo puedo diferenciar???

mandame la respuesta plis a mi correo
pelotona_cs@hotmail.com
Bueno, esto no es exacto de GNU pero va con standar BSD (la mayoria)
Aunque esta echo en Perl, la documentacion te puede guiar, te dice que es y como se usa:
http://search.cpan.org/~sdague/ppt-0.12/
Falta muchos pero...
*******PELIGRO LEE ESTO!!*******

There is no place like 127.0.0.1

Conecto luego existo, no conecto luego insisto.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #13 en: Sábado 9 de Diciembre de 2006, 14:34 »
0
Cita de: "su -"
Exit no es un comando en si, exit es una funcion de Bash (*sh).
pause es de unistd.h y es para esperar señales... usaria sleep
 :whistling:
Lo único que hice fue acomodar un poco el código del usuario, de resto no me puse a ver que librerias ni que no funcionaba solo lo compile lo corri y listo.
El pasado son solo recuerdos, el futuro son solo sueños

Last Dragon

  • Miembro MUY activo
  • ***
  • Mensajes: 109
    • Ver Perfil
    • http://www.lastdragon.net
Re: Simulador Del Ms-dos
« Respuesta #14 en: Sábado 9 de Diciembre de 2006, 17:07 »
0
Cita de: "cannabis"
baje en internetr este programa espero q me ayuden pa completarlo si corre en c pero no hace nada y yo kiero crear archivos y borralos
como le hago??



#include <iostream.h>
#include <stdlib.h>
#include <string.h>


void ExecuteCommand(int i)
{
 char *strCommand[]={
  "dir",
  "time",
  "cls"
 };
 system(strCommand);
}
#pragma argsused
 
{
 char strCommand[80];

 for(;;){
  cout << "C:\\> ";
  cin.getline(strCommand,80);
  if(!strcmp(strCommand,"dir"))
     ExecuteCommand(0);
  else if(!strcmp(strCommand,"time"))
   ExecuteCommand(1);
  else if(!strcmp(strCommand,"date"))
   ExecuteCommand(2);
  else if(!strcmp(strCommand,"cls"))
   ExecuteCommand(3);
  else if(!strcmp(strCommand,"exit"))
   break;
  else
  cout << "Comando no valido" << endl;
 }
 
 system("pause");
 return 0;
}
Debe ser una broma....

Si yo fuera el profesor, reprobaria al que me llevara un codigo similar a ese. por otro lado no creo que tu profesor quiera que simules el DOS, mas bien ha de querer que simules o programes tu propio shell, que en dos es el COMMAND.COM

Yo pienso que tu profesor en realidad quiere que programes al menos un par de funciones y que realmente leas el directorio y obviamente en ningun caso estaria permitido usar System.


dale una leida a la documentacion de dos.h del turbo c++, que seguro es donde lo estas haciendo.

para mi la calificacion reprobatoria se la daria a los que usen System
la calificacion mediana a los que programen usando dos.h
la mas alta a los que hagan llamados al sistema operativo
Servidor Personal de Last Dragon



www.lastdragon.net

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #15 en: Sábado 9 de Diciembre de 2006, 18:32 »
0
Cita de: "Last Dragon"
para mi la calificacion reprobatoria se la daria a los que usen System
la calificacion mediana a los que programen usando dos.h
la mas alta a los que hagan llamados al sistema operativo
Pobre, Pobre :devil:  :whistling:
Ahora si te va a tocar :comp:
El pasado son solo recuerdos, el futuro son solo sueños

cannabis

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #16 en: Lunes 11 de Diciembre de 2006, 04:18 »
0
ok gracias x la informacion rekerida

de hahco el enseñe el codigo al profe y si mas o menos le convencio el programa eh tratado de bscar en mil u nas formas pera corregir el error
 yo no soy muy buena programando x eso me encuentroi en este foro


de hehco solo keria impelemnatrle crear y borrar capetas x eso trato q me ayuden en mi error  :blink:

cannabis

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: Simulador Del Ms-dos
« Respuesta #17 en: Miércoles 13 de Diciembre de 2006, 02:18 »
0
como puedo hacer una salida directa  al sistema operativo  ms-dos
osea en c++ al escribir help

me  enlaze directamente al ms-dos
tengo un porgrama en pascal pero yo no se pascal asi q me gustaria q alguien me lo intrepretara

lo de negrita es lo q me interesa


Citar
(****************************************************************************)
(* PROGRAMA PRINCIPAL *)
  Begin
   Malo:=Muy_Maloso;
   checkbreak:=Malo;
   Setcbreak(Malo);

   SINCURSOR;
   TERMINAR:=FALSE;
   CADENA2:='    Taller de Sistemas Operativos   ';
   CADENA1:=' Departamento de Ciencias Computacionales ';

   (* AJUSTAMOS LOS COLORES DEL FONDO DE ACUERDO AL TIPO DE MONITOR   *)
   (* SI ES MONOCROMO, EL COLOR DE PRIMER PLANO SERA NEGRO, Y EL DE   *)
   (* SEGUNDO PLANO SERA DE GRISCLARO, EN OTRO CASO, SI EL MONITOR ES *)
   (* A COLORES, EL PRIMERO SERA AZUL Y EL SEGUNDO GRISCLARO.         *)

   IF MONOCROMO THEN
      Begin
       COLOR1:=NEGRO;COLOR2:=GRISCLARO;
      END
   ELSE
      Begin
       COLOR1:=AZUL;COLOR2:=GRISCLARO;
      End;

   FONDO(COLOR1,COLOR2,#176);

   (* EL VALOR QUE ELIJA PARA "POSICIONMENU"  SERA LA COORDENADA "Y" PARA EL *)
   (* "MENU DE BARRAS".                                                      *)

   POSICIONMENU:=1;
   AJUSTABANDA(POSICIONMENU);

  (* AL ELEGIR LOS COLORES PARA INICIAMENU, SE RESPETARAN, SIEMPRE Y CUANDO *)
  (* EL MONITOR SEA A COLORES, DE LO CONTRARIO, SE AJUSTARAN POR DEFAULT    *)
  (* AL TIPO CONVENCIONAL MONOCROMO.                                        *)

    INICIAMENU(SUPERMENU,POSICIONMENU,NEGRO,GRISCLARO,NEGRO,VERDE);
 CREARMENU(SUPERMENU,'Directorio',' SE MUESTRA TODO LO QUE SE PUEDE HACER CON UN Directorio');
   CREARSUBMENU(SUPERMENU,'Directorio','CAMBIAR DIRECTORIO',' ES POSIBLE CAMBIAR DE DIRECTORIO',#63);
   CREARSUBMENU(SUPERMENU,'Directorio','CREAR DIRECTORIO  ',' SE CREA UN DIRECTORIO IGUAL QUE MKDIR',#64);
   if windows95_o_98 then
   CREARSUBMENU(SUPERMENU,'Directorio','BORRAR DIRECTORIO ',' BORRAMOS UN DIRECTORIO CON NOMBRE LARGO',#65)
   else
   CREARSUBMENU(SUPERMENU,'Directorio','BORRAR DIRECTORIO ',' BORRAMOS UN DIRECTORIO',#65);
   if windows95_o_98 then
   CREARSUBMENU(SUPERMENU,'Directorio','SIMBOLO "MSDOS"   ',' UNA SALIDA TEMPORAL AL SIMBOLO "MSDOS"',#32)
   else
   CREARSUBMENU(SUPERMENU,'Directorio','SALIDA AL "DOS"   ',' UNA SALIDA TEMPORAL AL "DOS"',#32);

  CREARSUBMENU(SUPERMENU,'Directorio','TERMINAR PROGRAMA ',' SE FINALIZA TOTALMENTE EL PROGRAMA',#45);
 CREARMENU(SUPERMENU,'Archivo',' MANIPULADOR DE ARCHIVOS');
   CREARSUBMENU(SUPERMENU,'Archivo','COPIAR ARCHIVO',' COPIA ARCHIVOS MAS RAPIDO QUE "COPY" ',#102);
   CREARSUBMENU(SUPERMENU,'Archivo','BORRAR ARCHIVO',' BORRA TOTALMENTE UN ARCHIVO',#105);
    CREARSUBMENU(SUPERMENU,'Archivo','RENOMBRAR ARCHIVO',' INTERCAMBIA EL NOMBRE DE UN ARCHIVO POR OTRO NUEVO',#120);
   CREARMENU(SUPERMENU,'Taller de Sists.Ops.',' Programas de Teoria y Taller de Sistemas Operativos');
   Cadena:=' Es un Despachador de Procesos que usa 5 metodos ';
   CREARSUBMENU2(SUPERMENU,'Taller de Sists.Ops.','Despachador de procesos',cadena);
   Cadena:=' Primero el m s corto que se procesa ';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Despachador de procesos','Metodo SPF',cadena,#130);
   Cadena:=' Primero en llegar...primero en ser procesado ';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Despachador de procesos','Metodo FIFO',cadena,#131);
   Cadena:=' Round-Robin(Quantum) = Un Tiempo asignado a cada proceso por Rotacion';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Despachador de procesos','Metodo ROUND-ROBIN(QUANTUM)',cadena,#132);
    Cadena:=' Prioridades: A=Alta...M=Media....B=Baja=Ultimo a Ejecutar';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Despachador de procesos','Metodo PRIORIDADES',cadena,#133);
    Cadena:=' Quantum-Prioridades=Rotaci¢n por Prioridades';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Despachador de procesos','Metodo QUANTUM PRIORIDADES',cadena,#134);
   cadena:=' Despachador de Procesos(Quantum-Prioridades) Con: "Gesti¢n de Memoria"';
   CREARSUBMENU2(SUPERMENU,'Taller de Sists.Ops.','Gestor de Memoria',cadena);
   Cadena:=' Quantum_Prioridades Usando Partici¢n Din mica ';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Gestor de Memoria','Quantum-Prioridades',cadena,#30);
   cadena:=' Procesos que compiten por los recursos del sistema';
   CREARSUBMENU2(SUPERMENU,'Taller de Sists.Ops.','Productor-Consumidor',cadena);
   Cadena:=' Algoritmo: productor-consumidor haciendo uso de semaforos ';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Productor-Consumidor','Cajero Automatico',cadena,#135);
   cadena:=' Algoritmo haciendo uso de semaforos';
   CREARSUBMENU2(SUPERMENU,'Taller de Sists.Ops.','Barberia',cadena);
   Cadena:=' Problema de la Barberia equitativa (En total procesa 50 clientes) ';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Barberia','Barberia Equitativa',cadena,#136);
   cadena:=' Algoritmo libre de exclusi¢n e inanici¢n. (Hace uso de semaforos)';
   CREARSUBMENU2(SUPERMENU,'Taller de Sists.Ops.','Filosofos',cadena);
   Cadena:=' Problema de los 5 Filosofos que cenan spaghetti con tenedores ';
   CREARSUBSUBMENU(SUPERMENU,'Taller de Sists.Ops.','Filosofos','Cena de Filosofos',cadena,#137);
 CREARMENU(SUPERMENU,'Datos del Sist.',' HORA ACTUAL..FECHA ACTUAL..PROTECTOR..CAMBIAR MENSAJE PROTECTOR, ETC.');
   CREARSUBMENU(SUPERMENU,'Datos del Sist.','FECHA DEL SISTEMA',' SABER LA FECHA DEL SISTEMA',#33);
   CREARSUBMENU(SUPERMENU,'Datos del Sist.','CAMBIAR LA HORA',' CAMBIAR LA HORA DEL SISTEMA',#109);
   CREARSUBMENU(SUPERMENU,'Datos del Sist.','PROTECTOR DE MONITOR',' PROTEGE EL MONITOR DE UN POSIBLE "CALENTAMIENTO"',#107);
   CREARSUBMENU(SUPERMENU,'Datos del Sist.','MENSAJE DEL PROTECTOR',' ES CAMBIAR EL MENSAJE ACTUAL POR OTRO',#106);
   if Windows95_o_98 then
   Begin
    Cadena:=' SE ACTIVA EN MEMORIA QUEDANDO RESIDENTE(tsr) EL PROTECTOR DE MONITOR';
    CREARSUBMENU(SUPERMENU,'Datos del Sist.','ACTIVAR EN MEMORIA PROTECTOR',CADENA,#19);
   End;
 CREARMENU(SUPERMENU,'Acerca',' DATOS IMPORTANTES');
   CREARSUBMENU(SUPERMENU,'Acerca',' SoftWare ',' DATOS DEL AUTOR ',#112);

   (* AJUSTAMOS LOS COLORES DEL TITULO DE ACUERDO AL TIPO DE MONITOR   *)
   (* SI ES MONOCROMO, EL COLOR DE PRIMER PLANO SERA NEGRO, Y EL DE    *)
   (* SEGUNDO PLANO SERA DE GRISCLARO, EN OTRO CASO, SI EL MONITOR ES  *)
   (* A COLORES, EL PRIMERO SERA BLANCO Y EL SEGUNDO ROJO.             *)

   IF MONOCROMO THEN
     Begin
       COLORA:=NEGRO;COLORB:=GRISCLARO;
     END
   ELSE
     Begin
       COLORA:=BLANCO;COLORB:=ROJO;
     End;
   TITULO(20,4,COLORA,COLORB,TRUE,15,2,CADENA1,CADENA2);
   INICIARELOJ(69,1,NEGRO,GRISCLARO);
   RELOJ(TRUE);
   acerca;
   REPEAT;
    OPCION:=RATONMENU(SUPERMENU);
    DECIDIR(OPCION);
   UNTIL TERMINAR;
  END.