ELIMINAR nodo *eliminar(nodo *primero) { nodo *localiza(nodo*, char[]); nodo *marca; nodo *temp; char objetivo [20]; printf ("dato a borrar"); scanf (" %[^\n]",objetivo); if (strcmp(primero->elem, objetivo)==0) { temp=primero->sig; free(primero); primero=temp; } else { marca=localiza(primero,objetivo); if(marca==NULL) printf("no se encuentra"); else { temp=marca->sig->sig; free (marca->sig); marca->sig=temp; } } return primero; }
int main(){ int v[20],i,n=21; //Laco para popular o vetor com potencias de 2; for(i=0;i<20;i++){ if (i==0) { v[i]=1; }else{ v[i]=2*v[i-1]; } } while (n>20 || n<0){ printf("Digite o numero n que representa a quantidade de elementos a serem \nconsiderados do vetor: (n<20):"); scanf("%d",&n); } printf("\n\nDigite o valor a ser procurado:"); int x; scanf("%d",&x); int resposta = localiza(v,n,x); if (resposta==-1){ printf("\n\nValor nao encontrado entre os primeiros %d numeros do vetor!\n",n); }else { printf("\n\nValor %d encontrado no indice %d do vetor\n",x,resposta); } system("pause"); return 0; }
//INSERTAR nodo *insertar (nodo*primero) { nodo *localiza (nodo*,char[]); nodo *nuevoregistro; nodo *marca;//puntero al nodo anterior char nuevodato [20]; char objetivo [20]; printf ("\nNuevo dato:"); scanf (" %[^\n]",nuevodato); printf ("Colocar adelante de (escribir FIN si es el ultimo):"); scanf (" %[^\n]",objetivo); if (strcmp (primero->elem,objetivo)==0) { //es el primero de la lista nuevoregistro=(nodo*)malloc(sizeof(nodo)); strcpy (nuevoregistro->elem,nuevodato); nuevoregistro->sig=primero; primero=nuevoregistro; } else { marca=localiza (primero,objetivo); if (marca==NULL) printf ("\nNo se encuentra"); else { nuevoregistro=(nodo*)malloc(sizeof(nodo)); strcpy (nuevoregistro->elem,nuevodato); nuevoregistro->sig=marca->sig; marca->sig=nuevoregistro; } } return (primero); }
/*** Seta o tipo da copia. Pode ser: cl - Copia cliente sr - Copia de servidor mn - Copia monousuario rt - Copia Runtime rd - Servidor preparado para modo rede Importante: O tipo deve ser com letras minúsculas Retorna: PE_OK ou PE_ERROR ***/ int SetType( char *szFileName, char *szType ) { FILE *fp; if( !ValidType( szType ) ){ // O tipo passado inexiste return( PE_ERROR ); } /* procura a estrutura str_pers */ if( (fp = localiza( szFileName, str_pers )) == NULL ) { return( PE_ERROR ); } if( fseek( fp, lPosicao, 0 ) == -1 ) { fclose( fp ); return( PE_ERROR ); } // Nao decriptografo pois a informacao do tipo nao esta em // area criptografada. strcpy( TIPO( str_pers ), szType ); if( fwrite( (char *) str_pers, sizeof str_pers, 1, fp ) != 1 ) { fclose( fp ); return( PE_ERROR ); } fclose( fp ); return( PE_OK ); }
nodo *localiza(nodo *lista, long int dni_obj) { if(lista->sig == NULL) //caso base return NULL; else if(lista->dni == dni_obj) return lista; else return localiza(lista->sig, dni_obj); //avanzo }
int localiza(int *v, int n, int x){ n--; if (n == -1){ return -1; }else if (v[n]==x){ return n; }else{ return localiza(v,n,x); } }
//LOCALIZA nodo *localiza (nodo *registro,char objetivo[]) { if (strcmp(registro->sig->elem,objetivo)==0) return registro; else if (registro->sig->sig!=NULL) return localiza (registro->sig,objetivo); else return NULL; }
//LOCALIZA nodo *localiza (nodo *registro,char objetivo[]) //regresa el puntero al nodo anterior al objetivo { if (strcmp(registro->sig->elem,objetivo)==0) return registro; else if (registro->sig->sig!=NULL) return localiza (registro->sig,objetivo); else return NULL; }
int main() { nodo *prin; prin = (nodo*)malloc(sizeof(nodo)); crear(prin); mostrar(prin); long int dni_obj; printf("\n\nIngrese un DNI que este buscando: "); scanf("%ld", &dni_obj); nodo *marca; marca = localiza(prin, dni_obj); printf("\nEl DNI buscado"); if(marca == NULL) printf(" NO"); printf(" fue encontrado"); printf("\nEl dni encontrado es: %ld, nombre: %s", marca->dni, marca->nombre); return 0; }
int main(const int argc, const char **argv){ if(argc <= 2){ printf("Quantidade invalida de parametros."); return 1; } // ------------------------------------- // ORDENA // ------------------------------------- int TAM = argc-1; int vetor[TAM]; // atribui a entrado ao vetor printf("Numeros de entrada: "); for(int i = 0; i < TAM; i++){ vetor[i] = atoi(argv[i+1]); printf("%d ", vetor[i]); } printf("\n"); // ordena o vetor do maior para o menor for(int j = 0; j < TAM-1; j++){ for(int i = 0; i < TAM-j-1; i++){ if(vetor[i] < vetor[i+1]){ int aux = vetor[i+1]; vetor[i+1] = vetor[i]; vetor[i] = aux; } } } // exibe o vetor printf("Vetor ordenado: "); for(int i = 0; i < TAM; i++){ printf("%d ", vetor[i]); } // ------------------------------------- // LOCALIZA // ------------------------------------- printf("\nValor a buscar: "); int val; char input[16]; // le o valor digitado pelo usuario fgets(input,16,stdin); int strTam = strlen(input)-1; for(int i = 0; i < strTam; i++){ if(!isdigit(input[i]) && input[i] != '-' && input[i] != '+'){ printf("Caracter invalido.\n"); return 1; } } val = atoi(input); int pos = localiza(val, vetor, TAM); if(pos < 0){ printf("Valor nao encontrado.\n"); }else{ printf("Valor encontrado primeiramente na posicao: [%d] = %d\n", pos, vetor[pos]); } return 0; }
void main(){ int op,n,resp; system("clear"); printf("|_____________Estrutura de dados_____________|\n"); printf("| TDA - PILHA |\n"); printf("|Alunos: |\n"); printf("| Alessandro Silva |\n"); printf("| Alexandre Leite |\n"); printf("| Edgard Pitombo |\n"); printf("| Roberto R. |\n"); printf("| |\n"); printf("|Professor: Danilo silva |\n"); printf("| 06/11/2014|\n"); printf("|____________________________________________|\n\n"); printf("_--__--__--__--__--__--__--__--__--__--__--__-\n\n"); while(op!=9){ printf("\n"); printf("|__________________MENU______________________|\n"); printf("| |\n"); printf("| 1)ADICIONAR elemento na pilha. |\n"); printf("| 2)REMOVER elemento do topo da pilha. |\n"); printf("| 3)Exibir TODOS os elementos da pilha. |\n"); printf("| 4)Exibir o elemento do TOPO da pilha. |\n"); printf("| 5)Exibir QUANTIDADE de elementos da pilha. |\n"); printf("| 6)LOCALIZAR um elemento na pilha. |\n"); printf("| 9)Para SAIR. |\n"); printf("|____________________________________________|\n"); printf("\nDigite uma opção: "); scanf("%d",&op); if(op!=9){ switch(op){ case 1: printf("Digite um valor inteiro:"); scanf("%d",&n); if(push(n)==1){ printf("Valor inserido na pilha."); display(); }else{ printf("Falha ao armazenar valor na pilha."); } break; case 2: resp=pop(); if(resp!=0){ printf("\nO elemento removido foi: %d \n", resp); display(); }else{ printf("A pilha está vazia!"); } break; case 3: display(); break; case 4: printf("\nO elemento do topo da pilha é: %d\n",topelement()); display(); break; case 5: printf("\nPilha possui %d elementos\n", stack_count()); display(); break; case 6: printf("Digite o elemento que deseja procurar: "); scanf("%d",&n); localiza(n); display(); break; } } } }
int main (){ tipo_elem x; struct Nodo * pun; struct encabezado * E; int n, i,opc; inicializa (&E); do{ clrscr(); printf ("...........Menu............\n"); printf ("1-Inserta.....\n"); printf ("2-Suprime.....\n"); printf ("3-Localiza....\n"); printf ("4-Imprime.....\n"); printf ("5-Vacia.......\n"); printf ("6-Anula.......\n"); printf ("7-Salir.......\n"); printf ("Elige una opcion:....\n"); scanf ("%d", &opc); switch(opc){ case 1: printf ("\nDame numero a insertar.....\n"); scanf("%d",& x); inserta(x,E); break; case 2: printf ("\nDame numero a suprimir.....\n"); scanf ("%d",& x); suprimir(localiza(x,E)); break; case 3: printf ("\nDame numero a localizar.....\n"); scanf ("%d",& x); pun=localiza(x,E); if(pun==NULL) printf("Numero no encontrado"); else printf("%p\n",pun); getch(); break; case 4: clrscr(); imprime(E); getch(); break; case 5: if(vacia(E)) printf("SI"); else printf("NO"); getch(); break; case 6: anula(E); printf("La lista fue anulada"); getch(); break; } } while(opc!=7); getch(); return 0; }
int cmp(const void * l1,const void * l2){ return (tam[localiza((char *)l1)] - tam[localiza((char *) l2)]); }
/*** Personaliza um arquivo dado. Parametros: FileName: Nome do arquivo a personalizar Name: Nome do usuario Company: Nome da compania Serial: Serial Number ActKey: Chave de ativacao Inportante: · O número serial deve estar na forma 11.222222.3333.444444 com pontos separando os campos. Ele deve sempre ter o strlen() <= 32. . O campo 1 eh de tamanho fixo. Os demais sao de tamanho variavel ate o limite maximo de 32 caracteres. · 11 = tipo da cópia · 222222 = Data. Se começar com número > 0 é data absoluta. Se começar (ATENCAO) com 0 é time bomb e se começar com letra indica cópia não demo. · 3333 = Número de terminais · 444444 = Um número serial Retorna: PE_DATA: Chave com data absoluta ja expirou PE_TYPE: Tipo nao bate PE_ACTKEY: Chave de ativacao nao bate PE_SERIAL: Numero de serie com formacao ou tamanho errado PE_PARAM: Parametros invalidos PE_TIMEBOMB: Tentando personalizar copia time-bomb de novo. Deve Re-instalar PE_LOCALIZA: Nao achou marca no arquivo PE_POSERROR: Falhou no seek PE_WRITEERROR: Falhou ao tentar escrever no arquivo PE_OK: Ok ***/ int Personalize( char *szFileName, char *szName, char *szCompany, char*szSerial, char *szActKey ) { char data_hoje[MAXDATAINST+1]; time_t time_aux; FILE *fp; int check = 0; char data[MAXDATA+1]; char szBufAux[MAXDATA+1]; struct tm *dma; long tloc; if( szFileName == NULL || szName == NULL || szCompany == NULL || szSerial == NULL || szActKey == NULL ){ return( PE_PARAM ); } if( strlen( szSerial ) > MAXSIZESERIAL ){ return( PE_SERIAL ); } if( !ValidKey( szSerial, szActKey ) ){ return( PE_ACTKEY ); } // Calculo os deslocamentos variaveis em relacao ao serial passado if( CalculaDeslocamentos( szSerial ) != PE_OK ){ return( PE_SERIAL ); } // Verifico se eh uma data absoluta e se ja expirou. if( isdigit( szSerial[DESLOCDATA] ) && szSerial[DESLOCDATA]>'0' ){ /* Eh uma copia demo com data absoluta. VAMOS VERIFICAR!!! */ time( &tloc ); dma = localtime( &tloc ); sprintf( szBufAux, "%04.2d%02.2d", dma->tm_year + 1900, dma->tm_mon + 1 ); // MAXDATA deve ser 6 ; yyyymm. Assim mesmo nos protegemos procurando o '.' istrncpychar( data, szSerial+DESLOCDATA, MAXDATA, '.' ); if( strncmp( szBufAux, data, MAXDATA ) > 0 ) { return( PE_DATA ); } } /* procura a estrutura str_pers */ if( (fp = localiza( szFileName, str_pers )) == NULL ) { return( PE_LOCALIZA ); } // Verifico TIPO da copia antes de decriptografar pois esta em // area nao criptografada. if( strncmp( TIPO( str_pers ), szSerial+DESLOCTIPO, MAXTIPO ) != 0 ){ return( PE_TYPE ); } if( PERS( str_pers ) == PE_PERS ) { /* Jah passou o "person" por aqui antes. * decriptografo a estrutura, para nao perder as * demais informacoes nela contidas: data_instalacao, num_serie, etc. */ Decriptografa( DATAINST(str_pers), CHECKSUM( str_pers ) ); iIsDecrypt = TRUE; } if( szSerial[DESLOCDATA] == '0' ){ // Eh um numero de serie time-bomb if( PERS( str_pers ) == PE_PERS ){ /* Tentando fazer person de time bomb sobre uma copia * previamente personalizada. Nao deixo!!!! Que o filho * da mae re-instale o produto. */ fclose( fp ); return( PE_TIMEBOMB ); } } // Posiciono no inicio da marca para gravar estrutura de // personalizacao if( fseek( fp, lPosicao, 0 ) == -1 ) { fclose( fp ); return( PE_POSERROR ); } // Monto a estrutura de personalizacao time_aux = time( &time_aux ); strftime( data_hoje, sizeof( data_hoje ), "%Y%m%d", localtime( &time_aux ) ); istrncpy( DATAINST( str_pers ), data_hoje, MAXDATAINST ); istrncpy( NOME( str_pers ), szName, MAXNOME ); istrncpy( NAMECOMPANY( str_pers ), szCompany, MAXCOMPANY ); istrncpy( SERIE( str_pers ), szSerial, MAXSIZESERIAL ); // O tipo da copia ja vem pre-gravado e nao preciso colocar. /* indica que o produto estah personalizado */ PERS( str_pers ) = PE_PERS; check = Criptografa( DATAINST( str_pers ), CHECKSUM( str_pers ) ); CHECKSUM( str_pers )[ 0 ] = ( check & 0xFF00 ) >> 8; CHECKSUM( str_pers )[ 1 ] = ( check & 0x00FF ); if( fwrite( (char *) str_pers, sizeof str_pers, 1, fp ) != 1 ) { fclose( fp ); return( PE_WRITEERROR ); } fclose( fp ); return( PE_OK ); }
int main (){ tipo_elem x; posicion E; posicion pun; int n, i,opc; inicializa (&E); do{ ("sys"); printf ("...........Menu............\n"); printf ("1-Inserta.....\n"); printf ("2-Suprime.....\n"); printf ("3-Localiza....\n"); printf ("4-Imprime.....\n"); printf ("5-Vacia.......\n"); printf ("6-Anula.......\n"); printf ("7-Salir.......\n"); printf ("Elige una opcion:....\n"); scanf ("%d", &opc); switch(opc){ case 1: printf ("\nDame numero a insertar.....\n"); scanf("%d",& x); inserta(x,(&E.cont+1),&E); break; case 2: printf ("\nDame numero a suprimir.....\n"); scanf ("%d",& x); suprimir(localiza(x,E),&E); break; case 3: printf ("\nDame numero a localizar.....\n"); scanf ("%d",& x); pun=localiza(x,E); if(pun==NULL) printf("Numero no encontrado"); else printf("%p\n",pun); getch(); break; case 4: imprimir(E); getch(); break; case 5: if(vacia(E)) printf("SI"); else printf("NO"); getch(); break; case 6: anula(&E); printf("La lista fue anulada"); getch(); break; default: printf("Opcion No Valida"); } } while(opc!=7); return 0; }