Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Consulta en código...

Estas en el tema de Consulta en código... en el foro de C/C++ en Foros del Web. Hola! buenos días! los vengo a molestar con lo siguiente: Necesito que me ayuden a identificar para que sirven (o mejor dicho, como es qeu ...
  #1 (permalink)  
Antiguo 27/09/2012, 08:28
 
Fecha de Ingreso: septiembre-2012
Mensajes: 11
Antigüedad: 11 años, 7 meses
Puntos: 0
Consulta en código...

Hola! buenos días! los vengo a molestar con lo siguiente:

Necesito que me ayuden a identificar para que sirven (o mejor dicho, como es qeu están usadas) las líneas que marqué en el siguiente código:

Código:
int main()
{
    //cargo_maestro();
    esc_maestro();printf("-------------------------------------------------------------------------------");
    //cargo_alta();
    esc_alta();printf("-------------------------------------------------------------------------------");

    FILE *maestro,*alta,*actualizado;
    regmaestro regm;
    regalta rega;

    maestro=fopen("maestro","rb");
    alta=fopen("alta","rb");
    actualizado=fopen("actualizado","wb");
    float comicio[20]; int i=0,n;
    fread(&regm,sizeof(regmaestro),1,maestro);
    fread(&rega,sizeof(regalta),1,alta);

    while(!feof(maestro)||!feof(alta))
    {
        if(strcmp(regm.legajo,rega.legajo)==0)
        {
            while(!feof(alta)&&!strcmp(regm.legajo,rega.legajo))
            {   regm.tot_vent+=rega.imp;
                if(rega.imp>regm.impmvm)
                {
                   regm.impmvm=rega.imp;
                   strcpy(regm.nfmvm,rega.nro_fac);
                }
                fread(&rega,sizeof(regalta),1,alta);
            }
            comicio[i++]=regm.tot_vent*0.005;
            fwrite(&regm,sizeof(regmaestro),1,actualizado);
            fread(&regm,sizeof(regmaestro),1,maestro);
        }
        else
            if(strcmp(regm.legajo,rega.legajo)<0)
            {
comicio[i++]=regm.tot_vent*0.005;
                fwrite(&regm,sizeof(regmaestro),1,actualizado);
                fread(&regm,sizeof(regmaestro),1,maestro);
            }


    }fclose(maestro); fclose(alta); fclose(actualizado);
    esc_actualizado();printf("-------------------------------------------------------------------------------");
    printf("\nLEGAJO\tCOMICION\n");
    for(n=0;n<i;n++)printf("%d\t$%5.2f\n",n+1,comicio[n]);printf("-------------------------------------------------------------------------------");

    return 0;
No entiendo por que genera esa matriz, y la usa como un array unidimensinal, ni por qué le pone [i++].

Ojalá puedan ayudarme... muchas gracias!
  #2 (permalink)  
Antiguo 28/09/2012, 00:52
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: Consulta en código...

float comicio[20]; int i=0,n;

Esta línea declara un arreglo comicio con 20 elementos de tipo float, una variable i de tipo entero con un valor inicial de cero, y una variable n de tipo entero.

comicio[i++]=regm.tot_vent*0.005;

Esta línea calcula el valor del elemento i del arreglo comicio, y acto seguido incrementa en 1 ese índice.

El operador ++ es el operador incremento, y funciona de dos maneras:

La primera (la que se ha utilizado en tu programa) se llama postincremento, así, i++ puede traducirse como "utiliza la variable i y después increméntala en 1 unidad".

La segunda se llama preincremento, ++i, que puede traducirse como "incrementa en 1 unidad la variable i y después utilízala".

Así, por ejemplo, si i vale 4, tendríamos:

x = i++; x valdrá 4 e incremento i, luego i valdrá 5
x = ++i; incremento i, que valdrá 5, y luego x valdrá 5

for(n=0;n<i;n++) printf("%d\t$%5.2f\n",n+1,comicio[n]); ...

Bucle for: Condición inicial (n=0), condición que debe cumplirse (n<i), variación de la variable que controla el bucle (n++). Comenzando por n=0, y mientras n sea menor que i, ejecuta la instrucción (o bloque de instrucciones) que sigue al for. Este bucle se ejecutará hasta que n sea igual a i-1. Una vez que llegue aquí y se ejecute el bucle, se incrementa el valor de n, que pasa a valer i, la condición deja de cumplirse y finaliza el bucle.
  #3 (permalink)  
Antiguo 28/09/2012, 07:00
 
Fecha de Ingreso: septiembre-2012
Mensajes: 11
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Consulta en código...

Cita:
Iniciado por Fw190 Ver Mensaje
float comicio[20]; int i=0,n;

Esta línea declara un arreglo comicio con 20 elementos de tipo float, una variable i de tipo entero con un valor inicial de cero, y una variable n de tipo entero.

comicio[i++]=regm.tot_vent*0.005;

Esta línea calcula el valor del elemento i del arreglo comicio, y acto seguido incrementa en 1 ese índice.

El operador ++ es el operador incremento, y funciona de dos maneras:

La primera (la que se ha utilizado en tu programa) se llama postincremento, así, i++ puede traducirse como "utiliza la variable i y después increméntala en 1 unidad".

La segunda se llama preincremento, ++i, que puede traducirse como "incrementa en 1 unidad la variable i y después utilízala".

Así, por ejemplo, si i vale 4, tendríamos:

x = i++; x valdrá 4 e incremento i, luego i valdrá 5
x = ++i; incremento i, que valdrá 5, y luego x valdrá 5

for(n=0;n<i;n++) printf("%d\t$%5.2f\n",n+1,comicio[n]); ...

Bucle for: Condición inicial (n=0), condición que debe cumplirse (n<i), variación de la variable que controla el bucle (n++). Comenzando por n=0, y mientras n sea menor que i, ejecuta la instrucción (o bloque de instrucciones) que sigue al for. Este bucle se ejecutará hasta que n sea igual a i-1. Una vez que llegue aquí y se ejecute el bucle, se incrementa el valor de n, que pasa a valer i, la condición deja de cumplirse y finaliza el bucle.
Gracias! esto me ayudó mucho! ahora voy entendiendo más.

Etiquetas: int
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:33.