Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - palacio29

#1
Buenas Noches

Tengo un problema. Estoy copiando un código de un login form. El problema de este código es que asigna para todos los elementos button y los inputs un estilo particular. El problema es que tengo otros botones en mi css y que no quiero que me los cambie.
He intentado varias formas como poner una clase a los botones y los inputs nuevos, pero de alguna manera no me esta funcionando..
En definitiva el código que asigna a todo la misma clase es el siguiente.

Código (css) [Seleccionar]
/* Full-width input fields */
input[type=text], input[type=password] {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

/* Set a style for all buttons */
button {
  background-color: #4CAF50;
  color: white;
  padding: 14px 20px;
  border: none;
  cursor: pointer;
  width: 100%;
}

button:hover {
  opacity: 0.8;
}


He intentado hacer lo siguiente, poner una clase a el elemento button

Código (css) [Seleccionar]
<button class="botoncito" onclick="document.getElementById('id01').style.display='block'" style="width:auto;">Login</button>

y luego en el css poner

Código (css) [Seleccionar]
.botoncito button {
  background-color: #4CAF50;
  color: white;
  padding: 14px 20px;
  border: none;
  cursor: pointer;
  width: 100%;
}


Pero no sirve. Soy nuevo en esto, y lo que es que evite que ese estilo se propague por todo los botones e inputs de mi pagina.
#2
Buenos Dias

Tengo el siguiente problema.
Quiero leer un archivo de texto con el siguiente contenido:

Lopez,95128428,Chile
Lee,148284,China
Wondrio,95182,Brasil
Goku,591281,Japon

El primer contenido es el apellido, luego el DNI y por ultimo el pais.

Luego esto tengo que meterlo en una estructura y luego pasar cada uno de los datos de esa estructura a una lista.
Pude solucionar la mayoria de los problemas que tenia dividiendo la carga del archivo en funciones mas chicas y con eso se me hizo un poco más legible y el resultado es el esperado, pero el problema es que no se como hacer para hacer un ciclo while que me lea todas las lineas, ya que no puedo modificar el archivo y de la forma que hice la captura de datos, no encuentro forma

#include <stdio.h>
#include <stdlib.h>

struct s_datos
{
    char*apellido;
    int dni;
    char*pais;
};
typedef struct s_datos t_dato;

struct s_nodo
{
    t_dato dato;
    struct s_nodo*sig;
};
typedef struct s_nodo*t_nodo;

char* sacoapellido(FILE*arch);
int sacodocumento(FILE*arch);
char*sacopais(FILE*arch);
void agregar(t_nodo*,t_dato);
void imprimir(t_nodo);

int main()
{
    t_nodo lista=NULL;
    t_dato aux;
    char*txt=NULL;
    char*txt2=NULL;
    int r,i=0,doc;

    FILE*arch=NULL;
    arch=fopen("personas.txt","r");
    txt=sacoapellido(arch);
    doc=sacodocumento(arch);
    txt2=sacopais(arch);

    aux.apellido=txt;
    aux.dni=doc;
    aux.pais=txt2;

    agregar(&lista,aux);
    txt=sacoapellido(arch);
    doc=sacodocumento(arch);
    txt2=sacopais(arch);
    aux.apellido=txt;
    aux.dni=doc;
    aux.pais=txt2;
    agregar(&lista,aux);
   // printf("\nLos datos son: Apellido : %s - DNI: %d  - Pais: %s",aux.apellido,aux.dni,aux.pais);
    imprimir(lista);


}
char*sacoapellido(FILE*arch)
{
    int i=0,r;
    char*aux=NULL;
    aux=malloc(sizeof(char));
    r=fgetc(arch);
    while(r!=',')
    {
        *(aux+i)=r;
        i++;
        aux=realloc(aux,(i+1)*sizeof(char));
        r=fgetc(arch);
    }
    *(aux+i)='\0';
    return aux;
}
int sacodocumento(FILE*arch)
{
    int documento;
    fscanf(arch,"%d,",&documento);
    return documento;

}
char*sacopais(FILE*arch)
{
    int i=0,r;
    char*aux=NULL;
    aux=malloc(sizeof(char));
    r=fgetc(arch);
    while(r!='\n' && r!=EOF)
    {
        *(aux+i)=r;
        i++;
        aux=realloc(aux,(i+1)*sizeof(char));
        r=fgetc(arch);
    }
    *(aux+i)='\0';
    return aux;
}
void agregar(t_nodo*nodo,t_dato dato)
{
    if(*nodo==NULL)
    {
        *nodo=(t_nodo)malloc(sizeof(struct s_nodo));
        (*nodo)->dato=dato;
        (*nodo)->sig=NULL;
    }
    else
    {
        agregar(&(*nodo)->sig,dato);
    }
}
void imprimir(t_nodo lista)
{
    while(lista!=NULL)
    {
        printf("Apellido: %s - DNI: %d - Pais: %s\n",lista->dato.apellido,lista->dato.dni,lista->dato.pais);
        lista=lista->sig;
    }
}
#3
Buenos Dias
Tengo un problema intentando pasar datos de un archivo a una lista.
El archivo tiene el siguiente formato: %s,%d,%s (Nombre,DNI,Apellido).
La cuestion es que al utilizar la función imprimir, solo me imprime el apellido del ultimo nodo de la lista, mientras que los demas valores los imprime bien
Lo raro es que en la función agregar tambíen imprimo para ver que es lo que estoy pasando a los nodos y esta todo bien, asi que no se que puede estar pasando.

#include <stdio.h>
#include <stdlib.h>
struct s_datos
{
    char*apellido;
    int dni;
    char*pais;

};
typedef struct s_datos t_dato;

struct s_nodo
{
    t_dato dato;
    struct s_nodo*sig;
};
typedef struct s_nodo*t_nodo;
void cargalista(t_nodo*);
void agregar(t_nodo*,t_dato);
void imprimir(t_nodo);
int main()
{
    t_nodo lista=NULL;
    cargalista(&lista);
    imprimir(lista);
    return 0;
}
void cargalista(t_nodo*lista)
{
    FILE*arch=NULL;
    t_dato datito;
    int i=0,r;
    char*aux;
    aux=malloc(sizeof(char));
    arch=fopen("personas.txt","r");
    r=fgetc(arch);
    while(r!=EOF)
    {
        while(r!=',')
        {
            *(aux+i)=r;
            i++;
            aux=realloc(aux,(i+1)*sizeof(char));
            r=fgetc(arch);
        }
        *(aux+i)='\0';
        datito.apellido=aux;
        char*txt2=NULL;
        txt2=malloc(sizeof(char));
        i=0;
        r=fscanf(arch,"%d,",&datito.dni);
        r=fgetc(arch);
        while(r!='\n' && r!=EOF)
        {
            *(txt2+i)=r;
            i++;
            txt2=realloc(txt2,(i+1)*sizeof(char));
            r=fgetc(arch);
        }
        *(txt2+i)='\0';
        datito.pais=txt2;
        i=0;
        r=fgetc(arch);
        printf("\nApellido: %s - DNI: %d - Pais : %s",datito.apellido,datito.dni,datito.pais);
        agregar(lista,datito);
    }

}
void agregar(t_nodo*nodo,t_dato datito)
{
    if(*nodo==NULL)
    {
        *nodo=(t_nodo)malloc(sizeof(struct s_nodo));
        (*nodo)->dato=datito;
        (*nodo)->sig=NULL;
    }
    else
    {
        agregar(&(*nodo)->sig,datito);

    }
}
void imprimir(t_nodo lista)
{
    printf("\nFuncion Imprimir\n");
    if(lista!=NULL)
    {
        printf("\nApellido: %s - DNI: %d - Pais: %s",lista->dato.apellido,lista->dato.dni,lista->dato.pais);
        imprimir(lista->sig);
    }


}
}
#4
Buenos Dias.
Queria consultar como podia hacer para eliminar todos los elementos repetidos de una lista.
En este caso lo que hice fue crear una lista que contenga a una estructura y lo que tengo que hacer es que elimine todos los nodos cuyo apellido sea "Lopez".
Lo intento hacer y elimina algunos elementos pero no todos,  el problema esta en la función eliminar pero no se como modificarla para que elimine todos y no algunos.

#include <stdio.h>
#include <stdlib.h>
struct s_datos
{
    char*nombre;
    char*apellido;
    int dni;
};
typedef struct s_datos t_dato;
struct s_nodo
{
    t_dato dato;
    struct s_nodo*sig;
};
typedef struct s_nodo*t_nodo;
void agregar(t_nodo*,t_dato);
void imprimir(t_nodo);
void eliminar(t_nodo*,char*);
t_dato cargarstruct();
char*cargatexto();
int main()
{
    t_nodo lista=NULL;
    agregar(&lista,cargarstruct());
    agregar(&lista,cargarstruct());
    agregar(&lista,cargarstruct());
    agregar(&lista,cargarstruct());
    agregar(&lista,cargarstruct());
    imprimir(lista);
    eliminar(&lista,"Lopez");
    printf("\nLista con eliminados\n");
    imprimir(lista);

    return 0;
}
t_dato cargarstruct()
{
    t_dato datito;
    ///CARGAR ESTRUCTURA
    printf("\nIngrese Nombre:\n");
    datito.nombre=cargatexto();
    printf("\nIngrese Apellido:\n");
    datito.apellido=cargatexto();
    printf("\nIngrese DNI:\n");
    scanf("%d",&datito.dni);
    return datito;
}
void agregar(t_nodo*nodo,t_dato datito)
{
    if(*nodo==NULL)
    {
        *nodo=(t_nodo)malloc (sizeof(struct s_nodo));
        (*nodo)->dato=datito;
        (*nodo)->sig=NULL;
    }
    else
    {
        agregar(&(*nodo)->sig,datito);
    }
}
void imprimir(t_nodo lista)
{
    if(lista!=NULL)
    {
        printf("\nNombre: %s - Apellido: %s - DNI: %d",lista->dato.nombre,lista->dato.apellido,lista->dato.dni);
        imprimir(lista->sig);
    }
}
void eliminar(t_nodo*nodo,char*texto)
{
    t_nodo aux=NULL;
    if(*nodo==NULL)
    {
        return;
    }
    else if((strcmp((*nodo)->dato.apellido,texto))==0)
    {
        aux=(*nodo);
        *nodo=(*nodo)->sig;
        free(aux);
        eliminar(&(*nodo)->sig,texto);
    }
    else
    {
          eliminar(&(*nodo)->sig,texto);
    }
}
char*cargatexto()
{
    char letra;
    int i=0;
    char*txt=NULL;
    txt=malloc(sizeof(char));
    letra=getche();
    while(letra!='\r')
    {
        *(txt+i)=letra;
        i++;
        txt=realloc(txt,(i+1)*sizeof(char));
        letra=getche();
    }
    *(txt+i)='\0';
    return txt;

}


Muchas gracias.
#5
Buenos Dias

Tengo que hacer un DIV creado dinamicamente, para eso pongo un createtextnode y luego uso el appendchild y sale todo bien, el tema es que estoy agregando nombres, apellidos, dni y yo necesito que haya más de un espacio de separación entre las variables que vaya a agregar.
Con BR puedo hacer el salto de linea pero si quiero agregar un &nbsp se rompe el codigo y si pongo más espacios en un string tampoco funciona, solo toma 1.
Como puedo arreglarlo?
#6
Hola.
Tengo un problema con una función en javascript.
La idea es que al apretar un botón se muestre un elemento que en el css estaba como display:none.
En el anterior tema que cree gracias a ustedes,  logre hacer esto a través de un ejemplo muy sencillo.
Pero cuando paso a mi proyecto, al apretar el botón lo que hace es apenas aparece lo que estaba oculto, es como que la pagina hace un F5 y borra todo y vuelve al estado original, es inmediato casi, pero se ve que hace eso. ¿Que puede estar causando este comportamiento?.

La función javascript es la siguiente:

Código (javascript) [Seleccionar]
<script>
function continuar()
{
alert("Hola esto funciona, osea entra en la funcion");
var div = document.getElementsByClassName("nuevaconsulta")[0];
div.style.display="block";
}
</script>


La clase nuevaconsulta tiene adentro un display: none; y es la clase que le puse al DIV que tiene que aparecer por pantalla.

#7
Muchisimas gracias, estaba usando el sublime, pero no se que paso.
#8
Hola.
Tengo un problema. Lo que necesito hacer es un boton que al darle click, haga aparecer o desaparecer un DIV o algun elemento en particular. Algo que parece simple, pero me esta dando problemas (soy nuevo en esto).
En mi proyecto no esta funcionando, asi que traje un ejemplo y si me pueden hacer el favor de decirme en que estoy fallando porque no le encuentro la vuelta.

Este es el codigo, es un HTML que consta de un titulo y quiero que modifique su estilo

Código (html4strict) [Seleccionar]
<html>
<head>
<link type="text/css" href="estilo.css" rel="stylesheet"></link>

</head>
<body>
<H1 class="titulo">Hola</H1>
<button onclick="continuar()">Borrar el titulo</button>
</body>

<script>
function continuar()
{
alert("Hola esto funciona, osea entra en la funcion");
var div = document.getElementByClass("titulo");
div.style.display="none";
}
</script>
</html>


El CSS lo unico que tiene es la clase titulo que tiene la linea: display:block;
#9
Muchisimas gracias, al final entendi ;-),
Tremenda suerte la mia que con tantas direcciones de memoria justo tienen que salir todas juntitas.
Lo que yo estaba haciendo era poner una linea de mas para que en la impresion lea hasta que encuentre un /0 en el primer elemento,pero mi arreglo no tenia 3 posiciones, sino 2, y ahi era el problema.
Te copio el ultimo codigo para hacerlo mejor.
Sos un crack! ;-)
#10
Modifique esta funcion y le agregue en la linea 8 el i<2.
Lo que no entiendo es porque funciona mal si en el while en la linea 10, como los nombres no son tan largos, lo primero que va a encontrar es el \n y la linea 21 por mas que la saque queda igual.
Es re loco esto, nunca me paso
Por cierto, lo del fgets funciona perfecto en el ejercicio, pero como que me hinchan mucho que use el fgetc lo tengo que hacer asi.
O que forma de hacer el fgetc recomendas para que no me pase esto?


auxiliares(char aux[2][C])
{
    int i=0,j=0;
    char letra;
    FILE*arch=NULL;
    arch=fopen("actualizaciones.txt","r");
    letra=fgetc(arch);
    while(letra!=EOF && i<2)
    {
        while(letra!='\n' && j<C)
        {
            aux[i][j]=letra;
            j++;
            letra=fgetc(arch);
        }
        aux[i][j]='\0';
        i++;
        j=0;
        letra=fgetc(arch);
    }
    aux[i][j]='\0';
}