Red de conocimiento informático - Conocimiento de Internet de las cosas - ¿Pregunta de programación de la escuela primaria en lenguaje C para recoger manzanas rojas?

¿Pregunta de programación de la escuela primaria en lenguaje C para recoger manzanas rojas?

Ideas de programación:

1. Tanto los niños como las manzanas tienen varios atributos (como altura, número, estado, etc., y también se pueden extender a nombre, peso, etc. ). Por tanto, los niños y las manzanas deben definirse como estructuras.

2. El número de personas y manzanas se ingresa manualmente, por lo que el tamaño de la matriz es incierto. Se debe usar una matriz dinámica (si no se usa dinámica, el tamaño de la entrada del usuario debe ser limitado). ).

3. La pregunta requiere que se seleccione el número máximo de elementos, comenzando desde el hijo más corto, por lo que se debe ordenar la matriz de hijos.

4. La función recursiva implementa la lógica de recoger manzanas. Cada persona coge aleatoriamente dos manzanas que tenga a su alcance (si no hay suficientes, coge una). (Cada vez que la función recursiva encuentra una manzana que se puede recoger, hay una probabilidad de 50 de que se recoja. Si no se recoge ninguna manzana, se recogerá la última manzana de forma predeterminada).

El siguiente es el código (cls en la función de actualización de la consola solo se puede ejecutar en el sistema Windows, otros sistemas operativos se pueden eliminar o modificar):

#includelt; hgt;

#includelt;stdlib.hgt;

#includelt;time.hgt;

#includelt;malloc.hgt;

#define AFR 7/ /El número de filas de la imagen de la manzana

#define AFC 6//El número de filas de la imagen de la manzana

#define CFR 5//El número de filas de la imagen secundaria

# define CFC 6//El número de filas de las imágenes infantiles

typedef struct apple//Estructura que representa los datos de Apple

{

int Aid; // Número de manzana

int height; // La altura de la manzana

int status //0: significa que no lo tiene; sido elegido. 1: Indica que se ha extraído

char aframe[AFR][AFC]; // Indica la imagen de la manzana

}APPE;

typedef struct childern/ /Indica el número del niño

{

int cid; //El número del niño

int height //La altura del niño

int n; //El número de manzanas recogidas por el niño

char cframe[CFR][CFC] //Indica la imagen del niño

APPE **appes; ; // Matriz de punteros de estructura de manzanas seleccionados por los niños

}CHN;

int n, m //El número de manzanas y niños se establece como una variable global

APPE *setApps(); //Configurar Apple. La matriz de estructura se devuelve correctamente y NULL se devuelve en caso de error

CHN *setChns() // Configura el pequeño amigo. Lo mismo que arriba.

int orderChnByHeight(CHN *chns); //Organiza la matriz de los niños en orden ascendente de altura

int getApple(APPE *appes, CHN *chns, char (*strInfo)[ 100] ); //Recursivamente, simula que los niños eligen manzanas en secuencia.

Devolución de excepción -1

int showFrame(APPE *appes, CHN *chns, char (*strInfo)[100]);

int main()

{

int i;

char (*strInfo)[100]=NULL; //Se utiliza para mostrar el flujo de operación

APPE *appes=NULL;

CHN *chns=NULL

aplicaciones=setApps();

chns=setChns()

if(orderChnByHeight( chns )==-1)return 1;

srand(time(NULL));

strInfo=(char (*)[100])malloc(sizeof(char *) * m*100);

for(i=0;ilt;m;i)strInfo[i][0]=0;

if(!strInfo) devuelve 1;

showFrame(appes, chns, strInfo);

return 0

}

int showFrame(APPE *appes, CHN *; chns , char (*strInfo)[100])

{

static int k=1

int i, j

system("cls");

printf("\n==============El valor superior de cada grupo de imágenes es la altura y el valor inferior es el número= ===========\n");

printf("\n===============Para asegurarse de que puede obtener la mayor cantidad de manzanas, los niños están ordenados en orden ascendente============\n");

for(i=0;ilt;AFR;printf("\ n"),i )

for(j=0;jlt;n;j)

printf("s ?", apps[j].aframe[i]);

?printf("\n");

for(i=0;ilt;CFR;printf("\n"),i )

for(j=0;jlt ; m; j )

printf("s ?",chns[j].cframe[i]);

printf("\n= ======= ============================================ ======= ==========\n");

printf("Flujo de operación:\n");

for(i =0;ilt;m; i )

printf("s\n", strInfo[i]);

fflush(stdin); ("Presione cualquier tecla para continuar con el siguiente paso. . . . . .

\n");

getchar();

if(getApple(appes, chns, strInfo)==-1)return -1;

if (k)showFrame(appes, chns, strInfo), k--;

return 1

}

int getApple(APPE *appes, CHN * chns, char (*strInfo)[100])

{

static int i=0, aflag, cflag;

int j, indexSave;

p>

if(appes==NULL||chns==NULL) return -1;

if(chns[i].n==2)i; El hijo actual tiene suficiente 2, reemplácelo con el siguiente hijo

if(i==m)return 1; //Todos lo han tomado, finalice la recursión

aflag=0;

for(j=0;jlt;n;j)

if(appes[j].status==0) ​​​​{aflag=1;break;}

if(aflag= =0) return 1; //Se toman todas las manzanas, finaliza la recursión

indexSave=-1;

cflag=0;

for(j= 0; jlt; n; j )

{

if(appes[j].status==0 amp; amp; apps[j] .heightlt;=chns[i] .height)

{

cflag=1;

indexSave=j

if( rand()2)//Cada vez que se encuentra, hay una probabilidad de 50 de tomarla. Si no se seleccionan todas las manzanas disponibles, elija el último objetivo encontrado

break

}

}

if(cflag)//El proceso de un niño tomando una manzana

{

apps[indexSave]. status=1;

//Cambiar imagen inicial de Apple

sprintf(appes[indexSave].aframe[6], " ");

chns[i ].appes[chns[i].n]= amp;appes[indexSave];

chns[i].n;

if(chns[i].n== 1)

{

p>

//Cambiar la imagen inicial del niño

sprintf(chns[i].cframe[0], "cc/", 3, 1);

sprintf(strInfo [i], "El niño con el número d tomó 1 manzana (número d)\n", chns[i].cid, chns[i].appes[ 0]-gt; ayuda);

}

if(chns[i].n==2)

{

//Cambiar la imagen inicial del niño

sprintf(chns[i].cframe[ 0 ], " ccc ", 3, 1, 3);

sprintf(strInfo[i], "El niño con el número d tomó 2 manzanas (número d y número d)\n", chns [ i].cid, chns[i].appes[0]-gt; ayuda, chns[i].appes[1]-gt);

}

}

if(cflag==0 amp; amp; chns[i].n==0) sprintf(strInfo[i], "¡El niño número d no recibió la manzana y estaba muy frustrado!" \n", chns[i].cid), i;

if(cflag==0 amp; amp; chns[i].n==1) i;

return getApple(appes, chns, strInfo);

}

int orderChnByHeight(CHN *chns)

{

CHN chnTemp;

int i, j;

chnTemp.appes=(APPE **)malloc(sizeof(APPE*)*2); .appes) devuelve -1;

else

{

chnTemp.appes[0]=chnTemp.appes[1]=NULL;

if(chns)

for(i=0;ilt;m-1;i)

for(j=i 1;jlt;m;j)

if(chns[i].heightgt; chns[j].height)

chnTemp=chns[i], chns[i]=chns[j], chns[j]= chnTemp;

}

gratis(chnTemp.appes

devuelve 1; *setChns()

{

int i;

CHN *chns=NULL;

printf("Ingrese el nombre personal del niño nombre Número: ");

scanf("d",amp; m);

chns=(CHN *)malloc(sizeof(CHN)*m);

if(!chns) return NULL;

printf("Ingrese la altura de d niños (no más de 3 enteros):\n", m);

for (i=0;ilt;m;i)

{

chns[i].cid=i 1;

scanf("d" , amp ;chns[i].height);

chns[i].height=chns[i].height1000; //Excediendo la intercepción de 3 dígitos

chns[i].n=0;

chns[i].appes = (APPE **)malloc(sizeof(APPE*)*2);

if(!chns[i].appes) return NULL;

chns[i].appes [ 0]=chns[i].appes[1]=NULL;

//Establece la imagen inicial del niño

sprintf(chns[i].cframe[0], " \\ c/ ", 1);

sprintf(chns[i].cframe[1], " / \\ ");

sprintf(chns[i].cframe [2 ], "-----");

sprintf(chns[i].cframe[3], "Alto 3d", chns[i].height

<); p> sprintf(chns[i].cframe[4], "ID3d", chns[i].cid

}

return chns; >}

APPE *setApps()

{

int

APPE *appes=NULL; p> printf("Ingrese el número de manzanas:");

scanf("d", amp; n

apps=(APPE *)malloc(sizeof( APPE) *n);

if(!appes) return NULL;

printf("Ingrese la altura de d manzanas (no más de 3 dígitos enteros):\n" , n) ;

for(i=0;ilt;n;i)

{

aplicaciones[i].aid=i 1;

scanf("d",amp;appes[i].height);

apps[i].height=appes[i].height1000;//Excediendo la intercepción de 3 dígitos

apps[i].status=0;

//Establecer imagen inicial de Apple

sprintf(appes[i].aframe[0], "High 3D" , aplicaciones[i].height);

sprintf(appes[i].aframe[1], "ID3d", aplicaciones[i].aid); [i] .aframe[2], "-----");

sprintf(appes[i].aframe[3], "?c ?", '|'); p>

sprintf(appes[i].aframe[4], "?c ?", '|');

sprintf(appes[i].aframe[5], "?c); ?", '|');

sprintf(appes[i].af

rame[6], "?c ?", 3);

}

return ?appes;

}