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 - AlbertoBSD

#1361
estas buscando cont veces en el mismo elemento lista[cont] cuando deberia de ser lista, ademas no estas incrementando el valor de i en cada busqueda

int agenda::buscar_contacto()
{
    char aux[30];
    int i=0,encontrado = -1;
    contacto x;
  cout<<"Introduce el contacto a buscar:";
  cin>>aux;
  cout<<"cont vale:"<<cont;

  while(encontrado ==-1 &&i<cont)
  {
      if(strcmp(aux,lista[i].nombre)==0)
      {
          cout<<"Contacto encontrado";
          encontrado = i;
      }
      i++;
  }
  return encontrado; // Retornamos el valor de la posicion en el arreglo donde esta nuestro valor buscado
}



Saludos!
#1362
Jajajaja

COn tu sistema actual de datos la lista de 60 contactos es algo tedioso.

Primero tienes que localizar el contacto a eliminar ya sea por nombre o numero...

Eso es un sistema de busqueda.

Ahora una vez localizado y situandode en el registro X.... tienes que ve ver si hay mas elementos adelante de la lista. si es el ultimo no hay problema solo borras los datos y el contador lo decrementas en 1, pero si hay mas elementos tines que recorrelos de uno en uno o solo intercambiándolo con el ultimo pero pues es cosa de que decidas como hacerlo.

Es mas facil con apuntadores pero si no los has manejado la cosa se complica un poco.

Mi estimado ya me dormir espero y puedas terminar tu programa a tiempo y también que lo puedas hacer solo.

Un saludo!




#1363
PHP / Re: php tickets
7 Junio 2016, 05:35 AM
A que te refieres con tickets?

A un sistema de incidencias donde los usuarios reportan un problema y se les asigna un ticket?

O a un puesto de venta y te genere un ticket para imprimir?

#1364
Ese "cont" no esta iniciaizado aun, esa sección de memoria tiene pura basura....

NEcesitas solo guardar los contactos del 0 al cont-1 de hecho en tu instrucccion solo guardas 1 contacto no inicializado..

Cambia tu codigo por:

void agenda::guardar_contacto()
{
FILE *arch;
int i = 0;
arch=fopen("agenda.txt","w");
while(i < cont) {
fprintf(arch,"%s",lista[i].nombre);
fprintf(arch,"%s",lista[i].direccion);
fprintf(arch,"%i",lista[i].numero);
i++;
}
fclose(arch);
}


Saludos!!
#1365
El unico método que se me ocurre es que si el sistema en cuestion actualiza la hora via red cada que prende, podríamos enviarle en cada actualización X cantidad de minutos o horas adicionales desde un servidor pirata.... de ahi en mas solo se me ocurre instalar un programa con privilegios admin que cada minuto agrege X cantidad de segundos adicionales acorde al propósito de acelerarlo.

Saludos
#1366
¿Como estas guardado los datos?

Tu funcion: void agenda::guardar_contacto()
{
    FILE *arch;

    arch=fopen("agenda.txt","r");

    fclose(arch);

}


No hace nada solo abre y cierra el archivo.

Saluds
#1367
Tu variable contador es el numero del proximo en la lista:

    int cont;

Entonces miestras no leas mas de 60 contactos desde el archivo, existira espacio suficiente para 60 menos los leidos.

En tu funcion:

void contacto::pedirdatos()
{

    cout<<"Introduce nombre:";
    cin>>nombre;
    cout<<"Direccion:";
    cin>>direccion;
    cout<<"Telefono:";
    cin>>numero;
}


deberia de quedar como

void contacto::pedirdatos()
{

    cout<<"Introduce nombre:";
    cin>>lista[cont].nombre;
    cout<<"Direccion:";
    cin>>lista[cont].direccion;
    cout<<"Telefono:";
    cin>>lista[cont].numero;
    cont++;

}


O algo parecido.

Saludos
#1368
Cita de: Angel774 en  7 Junio 2016, 02:22 AM


      fscanf(arch,"%[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 ]",&(lista[cont]));



En mi vida habia visto un formato de cadena asi para leer

Citar"%[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 ]"


Deberia de ser algo como :


 while(!feof(arch))
 {

      fscanf(arch,"%s",&lista[cont].nombre);
      fscanf(arch,"%s",&lista[cont].direccion);
      fscanf(arch,"%i",&lista[cont].numero);
      fgetc(arch);
      cont++;
 }


Aunque creo, no estoy seguro de como procesar lel retorno de linea correctamente con fscanf tengo mucho sin usarlo frecentemente, incluso te recomendaria fgets para las cadenas y el numero, posteriormente preocesas el buffer temporal del numero con atoi...

Aunque nuevamente insisto ¿Es totalmente necesario que sea fscanf?

Repito es mas eficiente leer una estructura con fread...

Saludos
#1369
Necesariamente tiene que ser fscanf?
Para guardar estructuras lo ideal es fwrite y fread, tambien se puede hacer con fscanf solo que ahi necesitas leer dato por dato.
Y si quieres modificar un dato en especifico tendras que escribir y reescribir el archivo en cada modificacion. Cosa que con fwrite no necesitas..

No he tenido chance de ralalizar un vídeo con fscanf pero en teoria tienes que leer linea por linea como su fuera la entrada estandar...


fscanf(stdin,"%s",nombre);

es lo mismo que

scanf("%s",nombre);

Si sabés usar el segundo sabras usar el primero solo cambias stdin por tu filedescriptor...

Trata de crear primero la funcion guardar los guardas con fprintf un dato por linea y ya que crees el archivo lo tratas de leer.

Saludos
#1370
Interesantes noticias no las habia escuchado..

Estas en modo paranoico por lo que veo.

Segun veo el parecer ese procesador no esta afectado por la falla, la nota solo dice que son afectaros peoceaadores anteriores al 2010...

Y por la ram no hay problema.

¿Fuiste victima de un ataque anteriormente?