• Jueves 14 de Noviembre de 2024, 23:07

Mostrar Mensajes

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


Temas - JuanMi

Páginas: [1]
1
C/C++ / Re: ¿Dónde está el error en esta función?
« en: Viernes 13 de Junio de 2003, 22:35 »
Esta función implementa el borrado de personas en una hipotética agenda.
Nunca aparace la primera persona, con lo que borra la que no es. ¿Donde está
el error?
Gracias anticipadas.


****************************************************************************
*
*                          FUNCION BORRAR
*
****************************************************************************
****
*/

int borrar (int*r)
{
   int i,del;
   int opcion;
   int mayuscula;

   *r=cuenta_personas;

   if (*r==0)
   {
    clrscr();
    gotoxy(28,12);
  cprintf("LA AGENDA ESTA VACIA");
      getch();
    return 1;
   }
   clrscr();
   gotoxy(14,12);
 cprintf("INTRODUCIR EL NUMERO DE PERSONA QUE DESEAS BORRAR : ");
   textcolor(RED);
   textbackground(WHITE);
   scanf("%d",&del);

     for(i=del;i<*r;i++)
     {

            cprintf("nn                            255255255 A T E N C
I O N !!!                             ");
            textcolor(30);
            textbackground(BLACK);
          cprintf("nr       Se va a borrar la persona con indice %d: 256
%s %s %s 257
",i,datos[i-1].nombre,datos[i-1].primer_apellido,datos[i-1].segundo_apellido
);
            gotoxy(19,18);
            textcolor(WHITE);
            textbackground(BLACK);
            cprintf("n250Est240 seguro de querer continuar? (S/N): ");
      do
      {
               opcion=getchar();
         mayuscula=toupper(opcion);
         if (mayuscula=='S')
         {
          strcpy(datos.nombre,datos[i+1].nombre);
         strcpy(datos.primer_apellido,datos[i+1].primer_apellido);
         strcpy(datos.segundo_apellido,datos[i+1].segundo_apellido);
         strcpy(datos.direccion,datos[i+1].direccion);
         strcpy(datos.telefono,datos[i+1].telefono);
         strcpy(datos.movil,datos[i+1].movil);
                  *r=*r-1;
                  cuenta_personas=cuenta_personas-1;
                  gotoxy(20,19);
                  textbackground(GREEN);
                  cprintf("nSe ha borrado la persona con indice %d",i);
                  gotoxy(1,25);

        cprintf("250Deseas actualizar el archivo de disco? (S/N): ");
        do
        {
         opcion=toupper(getch());
          }
        while((opcion!='S')&&(opcion!='N'));
        putchar(opcion);
        if (opcion=='S')
         backup();
        gotoxy(1,25);
        textcolor(WHITE);
                  delline();
                  gotoxy(1,25);
        cprintf("Por favor, pulse una tecla para continuar ...");
                  getch();

        return 0;
       }
               else
             {
          if (mayuscula=='N')
            {
             return 0;
            }
       }
          }
            while ((mayuscula!='S')&&(mayuscula!='N'));
         }

2
C/C++ / Re: Siginificado de: if(datos[i].nombre[0])
« en: Viernes 13 de Junio de 2003, 22:32 »
Pues lo dicho, en el contexto de la siguiente función, qué significado tiene
la expresión:  if(datos.nombre[0]), sobre todo el cero entre corchetes.
¿A qué sería equivalente?
Gracias anticipadas;
Juan

/***************************************************************************
***
*                MOSTRAR LISTADO EN FICHERO DE TEXTO
*
****************************************************************************
***/
void listar_a_texto(void)
{
 int i;
   FILE*destino;
   char fichero[80];
   gotoxy(15,18);
   textcolor(WHITE);
   cprintf("Introduce la ruta del archivo destino: n");
   fflush(stdin);
   gotoxy(54,18);
   gets(fichero);
   if ((destino=fopen(fichero,"w"))==NULL)
   {
      gotoxy(20,20);
    cprintf("No se pudo abrir el archivo");
      gotoxy(1,25);
      cprintf("Presione una tecla para continuar ...");
      getch();
   }
   else
   {
      gotoxy(25,22);
      textcolor(YELLOW);
      textbackground(RED);
      cprintf("*** Archivo de salida generado ***");
      gotoxy(1,25);
      system("pause");
    fprintf(destino,"NOMBRE       APELLIDO 1   APELLIDO 2    DIRECCION
TFNO.FIJO TFNO.MOVILn");




fprintf(destino,"------------ ------------ ------------- -------------------
 --------- ----------n");
    for (i=0;i<cuenta_personas;i++)
      {
       if(datos.nombre[0])
      {
            fprintf(destino,"%-12s %-12s %-13s %-19s %-9s %-9sn",
datos.nombre,datos.primer_apellido,datos.segundo_apellido,datos.
direccion,datos.telefono,datos.movil);
         }

     }
   }
   fclose(destino);

}

Páginas: [1]