AYUDA!!! con programa en c

Iniciado por Emily, 1 Marzo 2018, 09:31 AM

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

Emily

El programa tiene que simular un cruce vehicular
de un lado voy a tener una fila de caracteres y del otro una fila de números
el usuario tiene que ingresar cuantos nodos va a tener cada una
y voy a tener un semáforo que solo de 1 y 0, si me sale 1 voy a dejar pasar el primer nodo que se ingreso a la fila de caracteres y si sale 0 voy a dejar pasar un nodo de la fila de los numeros
esos nodos que pasen me van a generar una nueva fila

este es mi programa pero ya me atore en la parte del semáforo, por favor alguien que me ayude

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

void insertar_filasFC();
void imprimir_filasFC();
void insertar_filasFN();
void imprimir_filasFN();
void insertar_filasF();
void eliminar_Nodo();
void eliminar_Nodo1();

typedef struct nodo
{
  char FC_filas;//donde se guarda la fila de los caracteres
  char FN_filas;//donde se guarda la fila de los numeros
  char F_filas;//donde se guarda la fila resultante
  struct nodo *sig;//puntero siguiente
}nodo;

nodo *primero1=NULL,*ultimo1=NULL,*primero2=NULL,*ultimo2=NULL,*primero=NULL,*ultimo=NULL,*inicio2=NULL,*inicio=NULL,*inicio1=NULL;

int main()
{
    int FC,FN,i,n,k;
    int semaforo=rand()%2;
    char letra='A',j='1';
    printf("Ingresar el numero de nodos para la fila de los caracteres\n");
    scanf("%d",&FC);
    printf("Ingresar el numero de nodos para la fila de los numeros\n");
    scanf("%d",&FN);
    if(FC<27||FN<10){
        printf("Fila de los Caracteres\n");
        for(i=1; i<=FC; i++){
            //printf("%c  ",letra);
            insertar_filasFC(letra);
            letra++;
        }
        imprimir_filasFC();
        printf("\nFila de los Numeros\n");
        for(i=1; i<=FN; i++){
            insertar_filasFN(j);
            j++;
            //printf("%d  ",j);
        }
        imprimir_filasFN();
        insertar_filasFC(*ultimo1);
        insertar_filasFN(*ultimo1);
        do{
            if (semaforo==1){
                insertar_filasFC(*primero);
                insertar_filasF(primero);
                eliminar_Nodo(primero);
            }else{
                if (semaforo==0){
                    insertar_filasFN(*primero1);
                    insertar_filasF(primero1);
                    eliminar_Nodo1(primero1);
                }
            }
            while(ultimo==NULL || ultimo1==NULL){

            }
        }while(ultimo!=NULL && ultimo1!=NULL);
    }else{
        printf("ERROR");
        system("pause");
        system("cls");
        return main();
    }
    //printf("%d",semaforo);
    return 0;
}

void insertar_filasF(char *dato){
    primero2=(nodo*)malloc(sizeof(nodo));
    primero2-> F_filas=dato;
    primero2->sig=NULL;
    if(ultimo2==NULL)
        ultimo2=inicio2=primero2;
    else{
        ultimo2->sig=primero2;
        ultimo2=primero2;
    }
}

void insertar_filasFC(char *letras){
    primero=(nodo*)malloc(sizeof(nodo));
    primero-> FC_filas=letras;
    primero->sig=NULL;
    if(ultimo==NULL)
        ultimo=inicio=primero;
    else{
        ultimo->sig=primero;
        ultimo=primero;
    }
}

void imprimir_filasFC(){
    primero=inicio;
    while(primero!=NULL){
        printf("%c  ",primero->FC_filas);
        primero=primero->sig;
    }
}

void insertar_filasFN(char *i){
    primero1=(nodo*)malloc(sizeof(nodo));
    primero1->FN_filas=i;
    primero1->sig=NULL;
    if(ultimo1==NULL)
        ultimo1=inicio1=primero1;
    else{
        ultimo1->sig=primero1;
        ultimo1=primero1;
    }
}

void imprimir_filasFN(){
    primero1=inicio1;
    while(primero1!=NULL){
        printf("%c  ",primero1->FN_filas);
        primero1=primero1->sig;
    }
}

void eliminar_Nodo(char dato){
    inicio=primero;
    if(primero==NULL){
        primero=inicio->sig;
        free(inicio);
    }
    return primero;
}

void eliminar_Nodo1(char dato){
    inicio1=primero1;
    if(primero1==NULL){
        primero1=inicio1->sig;
        free(inicio1);
    }
    return primero;
}

MAFUS