Red de conocimiento informático - Conocimiento de Internet de las cosas - Tareas a pequeña escala

Tareas a pequeña escala

¿Por qué la gente siempre pregunta sobre la tarea?

Te daré una lista vinculada que escribí, con todas las funciones. Puedes cambiarlo tú mismo.

# include & ltiostream.h & gt

# include & ltstring.h & gt

# include & ltstdlib.h & gt

Lista de cursos{

Público:

Chuanhuo;

Estado de la cadena;

valor int;

int num

int pos

Lista * siguiente

};

Líder de clase{

Público:

Lista * siguiente

int ListLength

};

cadena CUR_FILE("Sin título");

bool print list(Cabeza * p);

bool BuildTXT(Cabeza*, cadena);

void PrintTXT(nombre de archivo de cadena){

opción de cadena= " si existe";

opción =opción+nombre de archivo+"tipo"+nombre de archivo;

Sistema (opción);

} //printxt

bool InitList(Head * & amp;p){

Si (! (p = nuevo encabezado)) devuelve falso

En caso contrario {

p- >; longitud de la lista = 0;

p->; siguiente = NULL

Devuelve verdadero

}

}//InitList

Booleano (head * & ampp) {

lista * LP = p-& gt

int I = 0;

mientras(lp){

LP-& gt; pos = I;

LP = LP-& gt; siguiente;

i++;

}

Devuelve verdadero

}//Número

bool Crear lista (encabezado * y ampp, lista * y apéndice){

Lista* lp, temp

cout & lt<"Por favor ingrese:\nNombre\tEstado\tValor\tNúmero\n" ;

Si (!(p->; next=lp=new List)) devuelve false

CIN>>LP->Producto>>LP-> ;estado>& gtLP->valor>& gtLP->num

mientras(LP-> número&&LP->valor){

if (! (LP-& gt; siguiente=nueva lista)) devuelve falso

else p-& gt;longitud de la lista++;

temp = lp

LP = LP ->Siguiente;

CIN>>LP->Artículo>>LP->Estado>>LP->Valor>>LP->num

}

Eliminar LP;

end = temp

temp->; next = NULL

si (!Number(p)) devuelve falso

devuelve verdadero

}//CreateList

Inserción booleana (head * & ampp, int position) {

Lista* lp, end

>Cabeza * temperatura;

if(posición <0 | |posición>p->ListLength) devuelve falso

InitList(temp);

if(!posición ){

CreateList(temp, end);

p->;longitud de la lista += temporal-& gt;longitud de la lista;

end->siguiente = p->siguiente;

p->siguiente = temp->siguiente;

}

En caso contrario {

LP = p-& gt; siguiente;

mientras (posición) {

LP = LP-& gt;

}

CreateList(temp, end);

p->;Longitud de la lista += temporal ->Longitud de la lista;

end->;siguiente = LP->Siguiente;

LP->siguiente = temp->Siguiente

}

Eliminar temp

Si (!Number(p)) devuelve falso

if(CUR _ FILE)CUR _ FILE+ = ' * ';

Devuelve verdadero

}//Insertar

Booleano eliminar(head * & ampp, int posición, int cantidad) {

List* lp, cut;

int estado = posición;

if(posición+cantidad>p->;longitud de la lista||posición<0||cantidad& lt0) devuelve falso

p->; p>

for(LP = p-& gt; siguiente; posición; corte=lp, posición -, LP = LP->Siguiente);

for(LP&&Cantidad-, LP = LP->Siguiente);

if (estado )cortar->siguiente = lp

si no p->siguiente = lp

si (! Número(p)) devuelve falso

if (CUR _ FILE[strlen(CUR _ FILE)-1]!= ' * ' strcat(CUR _ FILE, " * ");

Devolver verdadero

}//Eliminar

modificación booleana (head *& ampp, int position) {

lista * LP = p-& gt; siguiente;

if(posición & lt 0 | p>Posición-;

}

si (4! =scanf("%s %s %d%d ",LP->Artículo,LP->Estado.

LP->valor&LP->num)) return false

if(CUR_FILE[strlen(CUR_FILE)-1]!= ' * ' strcat(CUR_FILE, " * ");

Devuelve verdadero

}//Modificado por SJ//Power

/* int con _ op(const char * condition, int & ampi){

Cambiar (condición [i]){

Caso "=":

I+= 2;

Devolver 1;

Caso ">":

if(condición[i+1]!='='){

i++;

return 2;

}

En caso contrario{

I+= 2;

Devuelve 3;

}

Caso ' & lt':

if(condición[i+1]!='='){

i++;

p>

Retorno 4;

}

En caso contrario {

I+= 2;

Devuelve 5;

}

Caso '!':

I+= 2;

Devuelve 6;

Valor predeterminado:

p>

Devuelve 0;

}

}//Se usa para buscar */

bool add node(Head * & amp; p, list Node){

Lista * lp

if (!(lp=(List*)malloc(sizeof(List)))) devuelve falso

else p- >longitud de la lista++;

*(LP)=nodo;

LP->siguiente = p->Siguiente;

p ->; Devuelve verdadero

}//Agregar nodo de búsqueda

bool Find(Head* p, int op){

char com[30];

Indentador * temperatura;

Lista * lp

int t;

InitList( temp);

Si (!p ) devuelve falso

Cambiar (op){

Caso 1:

printf(" name input >>);

scanf ("%s ", com);

for(LP = p-& gt; siguiente; LP; LP = LP-& gt; siguiente)

if (! strcmp(com,LP->goods)) addnode(temp,*LP);

Break;

Caso 2:

printf(" entrada de estado >>);

scanf("%s ", com);

for(LP = p-& gt; siguiente; LP; LP = LP-& > siguiente > Caso 3:

printf(" valor de entrada >>);

scanf("%d ",&t);

for(LP = p- >LP; LP = LP->Siguiente)

if(t = = LP->valor) addnode(temp, *LP

);

Pausa;

Caso 4:

printf(" cantidad de entrada & gt;>);

scanf("% d ", &t);

for(LP = p-> siguiente; LP; LP = LP-> siguiente)

if(t = = LP -> num ) addnode(temp, *LP);

Break;

Predeterminado: devolver falso

} //Desarrollado por SJ

Si (!Number(p)) devuelve false

printf("Búsqueda completa...Acción (1.PrintResults2.BuildResultTXT)>>);

scanf("%d ", &t);

switch(t){

Caso 1:

printf(" \ n resultado:\ n " );

print list(temp);

getchar();

printf("Presione Enter para continuar...");

And(!getchar( ));

Pausa;

Caso 2:

if(CUR _ FILE[strlen(CUR _ FILE)- 1]= = ' * ') devuelve falso

strcpy(com, CUR_FILE);

com[strlen(com)-4]= 0;

strcat(com, "_result.txt ");

BuildTXT(temp, com); break;

Valor predeterminado: devolver falso

}

Gratis (temporal)

Devuelve verdadero

}//Buscar

disposición booleana (head * & ampp, int op) {

int i, j, k, n = p-& gt; longitud de la lista;

Lista* temp, LP

Lista t;

p>

Si (!(temp =(List *)malloc(sizeof(List)* n))) devuelve false

for(i=0, LP = p-> Siguiente ;LP;LP = LP-> ;Siguiente,i++){

temp[I]= * LP;

}

Interruptor (op) {

Caso 1 :

for(I = 0;i<n-1;i++){

k = I;

for(j = I+1; j & ltn ; j++)

if(strcmp(temp[j]). Mercancías, temperatura [k]. bienes)<0)k = j;

if (k!= I){ t = temp[k]= temp[I]; p>

}

Pausa;

Caso 2:

for(I = 0;i<n-1;i++){

k = I;

for(j = I+1; j & ltn; j++)

if(strcmp(temp[j]).estado,temperatura [k] .

estado)<0)k = j;

if (k!= I){ t = temp[k]= temp[I]; p>

}//Desarrollado por SJ (Ureys)

Break;

Caso 3:

for(I = 0;i& ltn -1 ; i++){

k = I;

for(j = I+1; j & ltn; j++)

if(temp[j ]. valor<temperatura[k].valor)k = j;

if (k!= I){ t = temp[k]; temp[k] = temp[I]; }

}

Pausa;

Caso 4:

for(I = 0; i<n- 1; i++){

k = I;

for(j = I+1; j & ltn; j++)

if(temp[j] .num & lttemperatura[k] num)k = j;

si (k!= I){ t = temp[k]; temp[k]= temp[I]; >

}

Pausa;

Valor predeterminado: devolver falso

}

para (i=0, LP = p -> siguiente; LP; LP = LP-> siguiente, i++){

strcpy(LP-> carga, temperatura[i] .producto);

strcpy( LP->estado,temperatura[i].estado);

LP->num=temp[i]. num

LP-& gt; valor=temp[i].

valor;

}

Gratis (temporal)

Devuelve verdadero

}//Disposición

Booleano; store(encabezado*&p, const char*nombre de archivo){

ARCHIVO *fp

lista *LP = p-> siguiente;

if (!( fp=fopen(nombre de archivo, "wb")) devuelve falso

strcpy(archivo actual, nombre de archivo);

if(CUR _ FILE[strlen(CUR _ FILE)-1 ]= = ' * ')CUR _ FILE[strlen(CUR _ FILE)-1]= NULL

mientras(lp){

fwrite(lp, sizeof (Lista) , 1, FP);

LP = LP-& gt;Siguiente;

}

Devuelve verdadero

}//Guardar

carga booleana(head*&p, const char*nombre de archivo){

ARCHIVO * fp

Lista * lp

Si (! (fp=fopen(nombre de archivo, " rb ")) devuelve falso

strcpy(archivo actual, nombre de archivo);

If (!(p- >;next = LP =( Lista *)malloc(sizeof(List))) devuelve false

Si (1!=fread(lp,sizeof(List),1,fp)) devuelve false

If ( 1!=fread(lp,sizeof(List),1,fp)) devuelve false

p>

mientras(LP->; siguiente){

Si (!(LP- & gt; next=(Lista*)malloc(sizeof(List)))) devuelve false

If (1!= fread(LP-& gt; next, sizeof(List), 1, fp) ) devuelve falso

LP = LP-& gt; siguiente;

p>

}

p->;longitud de lista = LP->pos+1 ;

Devuelve verdadero

}//Cargando

Lista de impresión booleana (Cabeza* p){

int I;

for(I = 36-strlen(CUR_FILE)/2;I;I -)printf(" ");

printf("%s\n ",CUR_FILE);

for(I = 0;i<80;i++)printf( " = ");

printf(" Nombre\t\t\tEstado\t\tValor\t\tCantidad\ n ") ;

for(I = 0 ;i<80;i++)printf("-");

for(Lista * LP = p->Siguiente;LP;LP = LP- >Siguiente){

printf(" % d %-24s %-24s %-16d % d \ n ",LP->pos,LP->Artículo,LP->Estado, LP-> ;valor,LP->num);

}

for(I = 0;i<80;i++)printf(" = ");

printf("Longitud total=%d\n ", p-& gt; longitud de la lista);

Devuelve verdadero

}//Imprimir lista

bool BuildTXT(Head* p, char* txtname){

int I;

<

p>//char txt nombre[50];

FILE * fp

/* if(CUR _ FILE[strlen(CUR _ FILE)-1]= = ' * ' ) devuelve falso

strcpy(txtname, CUR_FILE);

txt name[strlen(txt name)-3]= 0;

strcat(txtname , " txt"); */

Si (!(fp=fopen(txtname, "w")) devuelve falso

for(I = 36-strlen(txt name) /2 ; yo; yo - ) fprintf(fp, " ");

fprintf(fp, " %s\n ", nombre de texto); ;i++) fprintf(fp, "=");

fprintf(fp, "\n");

fprintf(fp, "Nombre\t\t \tEstado\t \tValor\t\tCantidad\n");

for(I = 0;i<80;i++) fprintf(fp, "-");

fprintf(fp, "\ n");

for(List * LP = p-> siguiente; LP; LP = LP-> siguiente){

fprintf(fp, " %d %- 24s%-24s%-16d%d\n ",LP->pos,LP->Artículo,LP->Estado,LP->valor,LP->num);

}

for(I = 0;i<80;i++) fprintf(fp, " = ");

p>

fprintf(fp, "\n") ;

fprintf(fp, "longitud total=%d\n", p->longitud de la lista);

fclose(FP);

printf ("¡¡¡Listo!!! Lista& gt& gt%s\n ", txt nombre);

getchar();

printf("Presiona Enter para continuar...");

Y (!getchar());

Devuelve verdadero

}// BuildTXT

comando int (Head * & ampp, Lista * & ampend) {

char com[50], op;

int posición, cantidad;

ARCHIVO * temp

scanf("%s ", com);

if (! Procter & Gamble.

&*com! = 'l' & amp& amp*com! = ' L ' & amp& amp*com! = 'n' & amp& amp*com! ='N '

& amp& amp*com! = 'e' & amp& amp*com! ='E'){

return-2;

}

Cambiar (*com){

Caso "b":

Caso "B":

if(CUR_FILE[strlen(CUR_FILE)-1]= = ' * ') devuelve falso

strcpy (com, CUR_FILE );

com[strlen(com)-3]= 0;

strcat(com, "txt");

if(!BuildTXT(p , com)) return 10;

return-4

}

Caso "n":

Caso 'N':

if(p){

return-3;

}

if(!InitList(p )) devuelve 1 <; /p>

Si (!CreateList(p, end)) devuelve 1;

return-4 //Nuevo (crear)

}

Caso "d":

Caso "D":

printf(" Eliminar & gt; (posición, cantidad)>>);

Si ( 2!=scanf("%d%d ", & posición & cantidad)) devuelve 2;

If (!Delete(p, posición, cantidad)) devuelve 2 ;

return-4; //Eliminar

}

Caso 'I':

Caso 'I':

printf(" Insertar & gt; (posición)>>);

Si (1!=scanf("%d ", & ampposition)) devuelve 3;

if (!Insert(p, posición)) return 3;

return-4; //Insertar

}

Caso "l":

p>

Caso "L":

printf(" Cargar & gt; (nombre de archivo):\nLista de archivos:\n ");

Sistema("Si existe *. dirección lnl *. lnl/w");

printf("nombre del archivo de entrada>");

scanf("%s", com);

p>

strcat(com.

lnl");

Si (!InitList(p)) devuelve 4;

Si (!Load(p, com)) devuelve 4;

return -4; //Cargando

}

Caso 'm':

Caso 'M':

printf(" Modificar & gt; (posición)>>);

Si (1!=scanf("%d ", & ampposition)) devuelve 5;

Si (!Modify(p, posición) )) return 5;

return-4; //Modificar

}

Caso "h":

Caso "H" :

Si (!PrintTXT("help.shw ")) devuelve 6;

getchar();

printf("\nPresione Enter para continuar. ..");

getchar();

return-4; //Ayuda

}

Caso "f":

Caso ' F ':

printf(" Buscar & gt; (1.Nombre2.Estado3.Valor4.Monto)>>);

Si ( 1! =scanf("%d ", & amp posición)) devuelve 7

Si (!Find(p, posición)) devuelve 7

return-4;/ /Buscar

}

Caso:

Caso:{

printf(" Guardar & gt; (nombre de archivo)>>) ;

scanf("%s ",com);

strcat(com.lnl");

if (!Save(p,com)) Return 8;

return-4; //Guardar

}

Caso "a":

Caso "A":

printf(" Organizar & gt; (1.Nombre2.Estado3.Valor4.Cantidad)>>);

if (1!=scanf("%d ",& ampposición) ) devuelve 9;

Si (!Arrange(p, posición)) devuelve 9

return-4;

Caso "e":

Caso "E":

if(CUR _ FILE[strlen(CUR _ FILE)-1]= = ' * '){

printf("¡Advertencia! ! ! ¡Archivo no guardado! & gt& gt¿Estás seguro de que quieres salir? (sí/no)>);

getchar();

scanf("%c ", & ampop);

if(op==' Y'||op=='y ') devuelve -1;

En caso contrario, devuelve -4;

}

return-1;

Valor predeterminado: devuelve 0;

}//El comando legal devuelve -4

}//Comando

Error no válido (estado int){

Cambiar (estado){

Caso 4: Devolución; //Estado legal

caso -3:printf("Error: ¡¡¡La lista ya existe!!! Guardar , de lo contrario, se perderán los datos.\n>>);Return;

Caso 2: printf("Es ilegal hacer esto antes de 'nueva/cargar' una lista.\n>> );Return;

//-1 se utiliza para salir.

Caso 0: printf("Comando ilegal. Consulte la ayuda para obtener información.

\ n & gt>); Return;

Caso 1: printf ("Error al crear una nueva lista. Puede que no haya suficiente memoria. \ n & gt>); Return;

Caso 2: printf("Error de eliminación.\n>>); Retorno;

Caso 3: printf("Error de inserción.\n>>); Retorno;

Caso 4:

printf("Error al abrir este archivo. Verifique el nombre del archivo\ n & gt>);

printf("¡Presione Enter para volver a intentarlo!");

getchar();

And (!getchar());

Salir (0);

Caso 5: printf("Posición ilegal o una se produjo un error de entrada durante la modificación\ n & gt>); Retorno;

Caso 7: printf ("No se puede encontrar el elemento. \ n & gt>); Return;

Caso 8: printf ("No se puede guardar. Puede que no haya suficiente memoria. \ n & gt>) ; Return;

Caso 9: printf("No se pudo organizar la lista.\n & gt>); Return;

Caso 10: printf("No has guardado la lista /¡No se puede generar el archivo TXT!\ n & gt>);

Valor predeterminado: printf ("¡Error del sistema! Vuelva a abrir el programa); Salir (0);

}

}//Error

Apertura vacía(){

imprimir txt(" apertura . shw ");

printf(" \ n \ t\t\tPresione Enter para continuar");

And(!getchar());

System("cls");

}// Abrir

void main(){

int status;

Apertura();

print txt(" ayuda . shw " );

printf(" \ n ");

Lista * e = NULL

Encabezado * p = NULL

printf( ">>);

Y ((status=Command(p,e))!=-1){

if(status = =-2 | estado = = 4 | estado = = 1){

Error (estado);

Continuar;

}

Sistema("cls ");

Imprimir lista(p);

printf(" & gt;>);

Error (estado) ;

}

}//principal