Пример #1
0
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;
}
Пример #2
0
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;

}
Пример #3
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);
}
Пример #4
0
/***
	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 );
}
Пример #5
0
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
}
Пример #6
0
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);
    }
}
Пример #7
0
//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;

}
Пример #8
0
//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;

}
Пример #9
0
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;
}
Пример #10
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;
    
}
Пример #11
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;
}
Пример #13
0
int cmp(const void * l1,const void * l2){
	return (tam[localiza((char *)l1)] - tam[localiza((char *) l2)]);
}
Пример #14
0
/***
	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 );
}
Пример #15
0
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;
}