Red de conocimiento informático - Conocimiento de la instalación - Estoy buscando código en lenguaje C con 500-600 líneas. También puedes copiar el código de otra persona.

Estoy buscando código en lenguaje C con 500-600 líneas. También puedes copiar el código de otra persona.

Es difícil encontrar un código de 500 líneas...

Sólo hay uno con más de 300 líneas, sobre el problema matemático de un empresario cruzando el río

#include lt ;stdio.hgt;

#include lt;stdlib.hgt;

#define maxloop 100 //Número máximo de capas, ajusta automáticamente el valor para diferentes métodos de extensión

#define pristnum 3

#define esclavonum 3

struct SPQ

{

int sr , pr; //barco El número de comerciantes y sirvientes que hacen un viaje de ida y vuelta a la margen derecha del río

int sl, pl //El número de comerciantes y sirvientes que hacen un viaje de ida y vuelta a la margen izquierda del río

int ssr, spr ; //El número de personas en el barco al regresar (al ir de izquierda a derecha)

int sst, spt / /El número de personas en el barco al ir (al ir de derecha a izquierda)

int loop; //El número de capas donde se encuentra este nodo

struct SPQ *upnode; , *nextnode; // La dirección del nodo principal de este nodo y el siguiente nodo en la misma capa

}spq

int loopnum; expansions

int opennum; //Registra el número de nodos expandidos

int unopenednum;// Registra el número de nodos a expandir

int resultnum;

struct SPQ *abierto;

struct SPQ *oend;

struct SPQ * sin abrir

struct SPQ *uend; >

struct SPQ *resultado;

void start();

void releasemem()

void showresult(); p>void addtoopened(struct SPQ *ntx);

int search();

void goon(

int stretch(struct SPQ* ntx)

void recorder();

void main()

{

int flag //Marca si la expansión fue exitosa;

for( ; ; )

{

iniciar();

bandera = buscar ();

if(flag == 1)

{

recorder();

releasemem();

showresult(); /p>

goon();

}

else

{

printf("No se puede encontrar una solución que cumple las condiciones");

liberación

mem();

goon();

}

}

}

void iniciar()

{

int x;

elección de caracteres

uend = sin abrir = (struct SPQ*)malloc(sizeof(spq) );

if(uend==NULL)

{

printf("\n¡No hay suficiente memoria!\n");

salir(0);

}

nodo abierto = 1;

número abierto = 0; ; //Guarda la dirección del nodo principal en una lista vinculada

unopened -gt; nextnode = unopened

unopened sr = esclavonum; > sin abrir -gt; pr = pristnum;

sin abrir -gt;

sin abrir -gt; sst = 0;

sin abrir -gt; spt = 0;

sin abrir -gt; ssr = 0;

sin abrir -gt; /p >

sin abrir -gt; loop = 0;

printf("Título: Supongamos que n empresarios y m sirvientes llegan al río y planean tomar un bote desde la orilla derecha a la orilla izquierda .\ n");

printf("El barco tiene una capacidad de carga para dos personas. Si en algún momento el número de sirvientes excede el número de comerciantes, el número de sirvientes\n");

printf(" El empresario será asesinado.

¿Cómo pueden usar este barco para transportar a todos de forma segura a través del río?\n");

printf("\nLos valores predeterminados de n y m son 3\n");

for(;;)

{

printf("\n¿Quieres modificarlo? (Y/N)");

scanf ("s",amp;choice);

Choice=toupper(choice);

if(choice=='Y')

{

p>

printf("\nIngrese el número de comerciantes");

for(;;)

{

scanf("d", amp;x);

if(xgt;0)

{

sin abrir -gt; pr = x;

break;

}

else printf("\n¡El valor de entrada debe ser mayor que 0!\nVuelva a ingresar");

}

printf("\nPor favor ingrese el número de servidores");

for(;;)

{

scanf( "d",amp;x);

if(xgt; 0)

{

sin abrir -gt = x; p> break;

}

else printf("\n¡El valor de entrada debe ser mayor que 0!\nVuelva a ingresar"); /p>

romper;

}

if(choice=='N')romper;

}

}

int search()

{

int flag;

struct SPQ *ntx //Proporciona un puntero al nodo; ser expandido

for(; ; )

{

ntx = sin abrir //Extrae el frontal de la lista vinculada que se expandirá

if(ntx-gt; loop == maxloop )

return 0;

addtoopened(ntx); //Agrega ntx a la lista enlazada extendida y elimina este nodo de la lista enlazada extendida

flag = stretch(ntx); //Extiende ntx y devuelve -1, 0, 1

if(flag == 1)

devolver 1;

}

}

int estiramiento(struct SPQ *ntx)

{

int fsr, fpr; //Número de personas en la margen derecha

int fsl, fpl; //Número de personas en la margen izquierda

int sst, spt; de personas en el barco al salir

int ssr , spr; //El número de personas en el barco al regresar

struct SPQ *newnode;

for (st = 0; s

st lt; = 2; sst) //Discute diferentes posibilidades y determina si cumplen con las condiciones

{

fsr = ntx -gt;

fpr = ntx -gt; pr;

fsl = ntx -gt;

fpl = ntx -gt; ; = fsr) & (( 2 - sst) lt; = fpr))//Cumplir con el límite de personas

{

spt = 2 - sst;

fsr = fsr - sst;

fpr = fpr - spt;

if((fpr == 0) amp; amp; (fsr == 0))/ / Búsqueda exitosa

{

newnode = (struct SPQ*) malloc (sizeof(spq));

if (newnode==NULL)

{

printf("\n¡No hay suficiente memoria!\n");

exit(0);

}

newnode -gt; upnode = ntx; //Guarda la dirección del nodo principal en una lista vinculada

newnode -gt; nextnode = NULL;

newnode -gt; = 0;

nuevonodo -gt; pr = 0;

nuevonodo -gt; abierto -gt;

nuevonodo -gt; sst = sst;

nuevonodo -gt; spt = spt; ;

p>

newnode -gt; spr = 0;

newnode -gt; loop = ntx -gt;

nextnode; = nuevonodo;

p>

oend = nuevonodo;

número abierto

retorno

}

else if ((fpr - fsr ) * fpr gt; = 0) //Para determinar si el número de comerciantes debe ser mayor o igual al número de servidores

{

fsl = fsl sst;

fpl = fpl spt;

for (ssr = 0; ssr lt; = 1; ssr) //regresar

{

int ffsl, ffpl;

if ((ssr lt; = fsl) amp; amp; ((1 - ssr) lt; = fpl))

{

spr = 1 - ssr;

ffsl = fsl - ssr;

ffpl = fpl - spr

si (( ffpl - ffsl) * ffpl gt; = 0)

{ //Si se cumplen las condiciones, asigna memoria y paga el valor

int ffsr, ffpr;

ffsr = fsr ssr;

ffpr = fpr spr;

newnode = (struct SPQ*) malloc (sizeof(spq));

if( newnode== NULL)

{

printf("\n¡No hay suficiente memoria!\n");

exit(0);

}

newnode -gt; upnode = ntx; //Guarda la dirección del nodo principal en una lista vinculada

newnode -gt;

nuevonodo - gt; pr = ffpr;

nuevonodo -gt; sl = ffsl;

nuevonodo -gt; gt; sst = sst ;

nuevonodo -gt; spt = spt;

nuevonodo -gt; ssr = ssr;

nuevonodo -gt; ;

nuevonodo -gt; bucle = ntx -gt; bucle 1;

uend -gt; siguientenodo = nuevonodo; >

número sin abrir

}

}

}

}

}

}

return 0;

}

void addtoopened(struct SPQ *ntx)

{

sin abrir = sin abrir -gt; nextnode;

unopenednum--;

if (openednum == 0 )

oend = abierto = ntx; p>

oend -gt; nextnode = ntx;

oend = ntx;

opennum

}

grabador vacío ()

{

int i , bucle

estructura SPQ *ne;

wnode;

estructura SPQ *ntx;

loop = oend -gt; loop;

ntx = oend;

resultnum = 0 ;

for( i = 0 ; i lt; = bucle ; i )

{

nuevonodo = (struct SPQ*) malloc (sizeof(spq) );

if(newnode==NULL)

{

printf("\n¡No hay suficiente memoria!\n");

salir(0);

}

nuevonodo -gt; sr = ntx -gt;

nuevonodo -gt; pr;

nuevonodo -gt; sl = ntx -gt;

nuevonodo -gt; ; sst = ntx -gt; sst;

nuevonodo -gt; spt = ntx -gt;

nuevonodo -gt; >

nuevonodo -gt; spr = ntx -gt;

nuevonodo -gt; siguientenodo

ntx = ntx -gt;

if(i == 0)

resultado = nuevonodo;

nuevonodo -gt; siguientenodo = resultado;

resultado = nuevonodo;

resultnum;

}

}

void releasemem()

{

int i ;

estructura SPQ* nodefree;

for ( i = 1 ; i lt; opennum ; i )

{

nodefree = abierto;

abierto = abierto -gt; nextnode;

libre(nodolibre

}

para ( i = 0 ; i lt; sin abrirnum; i)

{

nodolibre = sin abrir;

sin abrir = sin abrir -gt

gratis( nodefree);

}

}

void showresult()

{

int i;

p>

int fsr, fpr; //El número de personas en la margen derecha

int fsl, fpl //El número de personas en la margen izquierda

estructura SPQ* nodofree;

p>

printf("d

empresario", resultado -gt; pr);

printf ("d sirvientes", resultado -gt; sr);

printf ("d empresarios", resultado -gt ; pl

printf ("d sirvientes", resultado -gt; sl

for ( i = 1 ; i lt; resultnum ; i )

{

nodolibre = resultado;

resultado = resultado -gt; nextnode;

libre(nodolibre);

printf ("\ n\n\tEl número de personas en la margen izquierda y el número de personas en la margen derecha en la dirección\n");

printf("Round d\n", i);

fpl = resultado -gt; pl - resultado -gt; spt resultado -gt;

fpr = resultado -gt; resultado -gt; p> fsl = resultado -gt ; sl - resultado -gt; sst resultado -gt;

fsr = resultado -gt; resultado -gt;

printf ("Empresario 8d8d\tlt; -\t8d\n", fpl, resultado -gt; spt, fpr

printf("sirviente 8d8d\tlt; -\t8d\n", fsl, resultado); -gt; sst, fsr) ;

printf("Empresario 8d8d\t-gt;\t8d\n", resultado -gt; pl, resultado -gt; spr, resultado -gt; pr - resultado -gt; spr);

printf("Servidor 8d8d\t-gt;\t8d\n", resultado -gt; sl, resultado -gt; ssr, resultado -gt; sr - resultado -gt ; ssr);

}

printf("\nTodos los comerciantes y sirvientes han llegado al otro lado"); p>

}

void goon()

{

elección de caracteres;

for(;;)

{

printf("¿Continuar? (S/N)\n");

scanf ("s", amp; elección);

elección=toupper(elección);

if (choice=='Y')romper;

if (choice=='N')salir(0);

}

}