Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - xservice

#1
Programación C/C++ / Problemas con programa c++
16 Febrero 2014, 02:58 AM
Necesito un poco de ayuda tengo el siguiente programa que un AFD(Automata Finito Deterministico) que verifica si una cadena es valida.

Se introduce la información desde la terminal.pero necesito que la cargue la información desde un fichero, excepto la validacion de cadenas esas si tienen que ser introducidas desde la terminal.

Mi manejo de programas cargando información desde ficheros es nula, por eso necesito su ayuda, si alguien sabe como hacerlo se lo agradecería.

#include <cstdlib>
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

int main(int argc, char *argv[])
{
    int n, na,ne,qi,nq,nqf,opc;
    string palabra;
   
    cout<<"Ingrese el numero de simbolos del Alfabeto: ";
    cin>>na;
   
    char alfabeto[na];
   
    for(int i=0;i<na;i++){
        cout<<"Ingrese el simbolo "<<i+1<<" : ";
        cin>>alfabeto[i];
    }
   
    cout<<"Ingrese el numero de estados: ";
    cin>>nq;
   
    cout<<"Ingrese el numero del estado inicial: ";
    cin>>qi;
   
    cout<<"Ingrese el numero de estados finales: ";
    cin>>nqf;
   
    int qf[nqf];
   
    for(int i=0;i<nqf;i++){
        cout<<"Ingrese el "<<i+1<<" estado final: ";
        cin>>qf[i];
    }
   
    int transiciones[nq][na];
   
    for(int i=0;i<nq;i++){
        for(int j=0;j<na;j++){
            cout<<"d(q"<<i<<","<<alfabeto[j]<<"):";
            cin>>transiciones[i][j];
        }
    }
    // Validacion de Cadenas
inicio:
    cout<<"Ingrese una cadena:\n";
    cin>>palabra;
   
    n = palabra.length();
    int ea = qi;
    bool band=true;
   
    for(int i=0;i<n;i++){
        for(int j=0;j<na;j++){
            if(palabra[i]==alfabeto[j]){
                cout<<"d(q"<<ea<<","<<palabra[i]<<")= ";
                ea = transiciones[ea][j];
                cout<<"q"<<ea<<endl;
                if (ea==-1){
                    cout<<"Palabra rechazada"<<endl;
                    goto inicio;
                }
            }
        }
    }
   
    for(int i=0;i<nqf;i++){
        if(ea==qf[i]){
            cout<<"Palabra aceptada.\n"<<endl;
            cout<<"1.Ingresar Otra Palabra\n2.Salir\n"<<endl;
            cin>>opc;
            if(opc==1){
                goto inicio;
            }
            else{
                goto fin;
            }
    }
            cout<<"Palabra rechazada\n"<<endl;
        cout<<"1.Ingresar Otra Palabra\n2.Salir\n"<<endl;
            cin>>opc;
        if(opc==1){
             goto inicio;
        }

        else{
            goto fin;
        }
   
        }
fin: return 0;
}
#2
Hola a todos, pues bien tengo un pequeño con un problema con tuberias  lo que sucede es que tengo el siguiente código y necesito modificarlo para que determine cual es el tamaño de la tubería en el sistema, alguna sugerencia? , espero y me puedan ayudar, de antemano muchas gracias
                                                               

Código (cpp) [Seleccionar]
# include <sys/types.h>
# include <unistd.h>
# include <stdlib.h>
# include <stdio.h>
# include <string.h>
int main ()
{
       int bytes_enviados, bytes_leidos, i, descriptor_archivo [2];
       char buffer [BUFSIZ + 1];
       pid_t pid;

       if (pipe(descriptor_archivo) == 0){
               pid = fork ();
               if (pid == -1) {
                       perror ("Error al ejecutar fork");
                       exit (-1);
               }
               if ( pid == 0) { //Proceso hijo
                       for(i = 1; i < 27; i++){
                               memset(buffer, '\0', sizeof(buffer));
                               bytes_leidos = read(descriptor_archivo[0], buffer, BUFSIZ);
                               printf("El proceso hijo ha leido %d bytes y el contenido es : %s\n", bytes_leidos, buffer);
                       }
                       exit (0);
               }
               else { //Proceso Padre
                       for( i = 65; i < 91; i++){
                               bytes_enviados = write(descriptor_archivo[1], (char*) &i, sizeof(char));
                               printf("El proceso padre ha enviado por la tuberia %d bytes \n", bytes_enviados);
                               sleep(1);
                       }
               }
       }
       exit (0);
}