Anterior Crear su blog Siguiente Señalar un abuso Puntuar :  
Tribuna libre
Mi foto
Programa en C y C++
Publicado el 23/11/2009 a la(s) 18:06
Por jcca007
Humor : Alegre
Supongo que ya habran notado que en algunos ejemplos no aparece el nombre de la libreria que se esta utilizando, la verdad no se a que se deba porque el error es solo en algunos ejemplos, pero la libreria a utiizar basicamente es "stdio.h", y si no, chequen los ejemplos del mismo tema, es la misma que se usa.

Voy a corregir el problema, y una disculpa por los inconvenientes Suerte.

Publicado el 23/11/2009 a la(s) 17:59
Por jcca007
Humor : Alegre
Y por ultimo les dejo este ejemplo que es el mas extenso de todos:

Ejemplo N° 42

 

/*El programa lee datos de un archivo con el siguiente formato:

 

N°deTrabajador        DiasTrabajados      SalarioPordia

 

Se debe generar un archivo de salida que contenga el salario a pagar

a cada trabajador, el cual se calculara como el numero de dias trabajados

por el salario por dia. A esta cantidad se le debe restar el 2% del salario

base por concepto de cuota sindical. Si el trabajador tiene un salario por

dia mayor a $80, se debera pagar un impuesto de 7.6% sobre su salrio base,

en caso contrario no sepagara nada.

 

Una ves que se alla calculado el salario por cada trabajador, se debera

generar un archivo de salida que contenga el siguiente formato:

 

N° de Trabajador      Salrio a Pagar

 

Adicionalmete a este archivo debera aparecer el promedio de los salarios

ademas del salario mas alto y el mas bajo.*/

 

//-----Librerias

#include<stdio.h>

//-----Variables Globales

char columna1[20],columna2[20],columna3[20];

float *dias_t,*salario_x_dia,*salario_a_pagar;

int *n_t;

float a,b,suma_parcial=0,promedio,mayor,menor;

FILE *arc,*arc2;

int i,j,k,q,n;

//-----Prototipos de Funciones

void lectura(void);

void proceso(void);

void salida(void);

//-----Programa Principal

int main(void)

{

         printf("Cuantos trabajadores son?:\n");

         scanf("%d",&n);

         lectura();

         proceso();

         salida();

         system("pause");

         return 0;

}

//-----Funcion de Lectura

void lectura(void)

{

         arc=fopen("trabajadores.txt","r");

         n_t=(int *)calloc(n,sizeof(int));

         dias_t=(float *)calloc(n,sizeof(float));

         salario_x_dia=(float *)calloc(n,sizeof(float));

         fscanf(arc,"%s %s %s",&columna1,&columna2,&columna3);

         for(i=0;i<n;i++)

                   fscanf(arc,"%d %f %f\n",&n_t[i],&dias_t[i],&salario_x_dia[i]);

         fclose(arc);

}

//-----Funcion de Proceso

void proceso(void)

{

         salario_a_pagar=(float *)calloc(n,sizeof(float));

         for(j=0;j<n;j++)

         {

                   if(salario_x_dia[j]>80)

                   {

                            a=dias_t[j]*salario_x_dia[j];

                            b=(a*9.6)/100;

                            salario_a_pagar[j]=a-b;

                   }

                   else   

                   {

                            a=dias_t[j]*salario_x_dia[j];

                            b=(a*2)/100;

                            salario_a_pagar[j]=a-b;

                   }                

                   suma_parcial=suma_parcial+salario_a_pagar[j];

         }

         mayor=salario_a_pagar[0];

         menor=salario_a_pagar[0];

         for(k=1;k<n;k++)

                   {

                            if(salario_a_pagar[k]>mayor)

                                      mayor=salario_a_pagar[k];

                            if(salario_a_pagar[k]<menor)

                                      menor=salario_a_pagar[k];

                   }

         promedio=suma_parcial/n;

}

//-----Funcion de Salida

void salida(void)

{

         arc2=fopen("Salarios.txt","w");

         fprintf(arc2,"Numero de Trabajador\t Salario a Pagar\n");

         for(j=0;j<n;j++)

         {

                   fprintf(arc2,"%d\t\t\t %f\n",n_t[j],salario_a_pagar[j]);

                   printf("%d %f \n",n_t[j],salario_a_pagar[j]);

         }

         fprintf(arc2,"\n\nSuma Parcial De los Salarios:%f\n\n",suma_parcial);

         printf("Suma Parcial de los Salarios:%f\n",suma_parcial);

         fprintf(arc2,"Promedio de los Salarios:%f\n\n",promedio);

         printf("Promedio de los Salarios:%f\n",promedio);

         fprintf(arc2,"El mayor salario es:%f\n\n",mayor);

         printf("El Salario Mayor es:%f\n",mayor);

         fprintf(arc2,"El menor salario es:%f\n",menor);

         printf("El Salario Menor es:%f\n",menor);

         printf("\n\n\tPuedes Revisar el archivo que se ha creado con estos datos\n");

         fclose(arc2);

}

 

Con este ultimo ejemplo, ten cuidado con el formato del archivo de donde lee los datos, (trabajadores.txt), colócalo correctamente por que si no es probable que te arroje un renglón con ceros(0.0  0.0).

 

Por ultimo decir que si lo notas, el flujo al tratar archivos siempre es el mismo, es decir:

 

1.- Abrimos archivo a tratar, ya sea para lectura o escritura.

2.- Trabajamos con ese archivo, ya sea, leyendo datos o escribiéndole datos.

3..- Cerramos el archivo.

 

Siempre es así, así que no es tan difícil como dicen por ahí.

A practicar con estos programas básicos y mucha suerte.

Publicado el 23/11/2009 a la(s) 17:57
Por jcca007
Humor : Alegre
Aqui la segunda parte de ejemplos:

Ejemplo N° 41

 

/*Para este programa se tiene un archivo con 10 datos,se deben leer los datos del

  archivo y almacenarlos en un arreglo y por ultimo calcular el promedio de los

  datos.*/

 

//-----Librerias

#include <stdio.h>

//-----Variables Globales

float a[10],suma=0,promedio;

FILE *arc;

int i,j;

//-----Prototipos de Funciones

void lectura(void);

void proceso(void);

void salida(void);

//-----Funciones

//-----Funcion de Lectura

void lectura(void)

{

    arc=fopen("datos1.dat","r");

    for(i=0;i<10;i++)

    {

       fscanf(arc,"%f",&a[i]);

    }

    fclose(arc);

}

//-----Funcion de Proceso

void proceso(void)

{

   for(j=0;j<10;j++)

   {

      suma=suma+a[j];

   }

   promedio=suma/10;

}

//-----Funcion de Salida

void salida(void)

{

   printf("El promedio de los datos leidos es: %f\n",promedio);

}

//-----Programa Principal

int main()

{

      lectura();

      proceso();

      salida();

 

      system("PAUSE");

      return 0;

}

Publicado el 23/11/2009 a la(s) 17:53
Por jcca007
Humor : Alegre

Ahora veamos los ejemplos, los dividire en tres articulos ya que estan algo extensos:

 

Ejemplo Nº 38

Multiplicamos, Sumamos, y Restamos 2 matrices de 2X2, en dos archivos llamados A.txt y B.txt.

 

//------Librerias a utilizar

#include

//------Variables a utilizar

float A[3][3],B[3][3],C1[3][3],C2[3][3],C3[3][3];

//------Prototipos de Funciones

void lectura(void);

void proceso(void);

void salida(void);

//------Rutinas de las Funciones

//------La de lectura

void lectura()

{

     int i,j;

     FILE *fp,*fp2;

     //----Abrimos los archivos

     fp=fopen("A.txt","r");

     fp2=fopen("B.txt","r");

     for(i=0;i<3;i++)

     {

         for(j=0;j<3;j++)

         {

              fscanf(fp,"%f",&A[i][j]);

              fscanf(fp2,"%f",&B[i][j]);

         }

     }

     fclose(fp);

     fclose(fp2);

}

//------------------

//------La de proceso

void proceso()

{

     int i,j,k;

     float suma;

     for(i=0;i<3;i++)

     {

         for(j=0;j<3;j++)

         {

             C1[i][j]=A[i][j]+B[i][j];

             C2[i][j]=A[i][j]-B[i][j];

         }

     }

     for(i=0;i<3;i++)

     {

         for(j=0;j<3;j++)

         {

             suma=0;

             for(k=0;k<3;k++)

             {

                 suma=suma+A[i][k]+B[i][k];

             }

             C3[i][j]=suma;

         }

     }

}

//------------------

//------La de Salida

void salida()

{

   FILE *fp,*fp2,*fp3;

   int i,j;

   //-----Abrimos los archivos para escribirlos

   fp=fopen("A_mas_B.txt","w");

   fp2=fopen("A_menos_B.txt","w");

   fp3=fopen("A_por_B.txt","w");

   for(i=0;i<3;i++)

   {

       for(j=0;j<3;j++)

       {

           fprintf(fp,"%f",C1[i][j]);

           fprintf(fp2,"%f",C2[i][j]);

           fprintf(fp3,"%f",C3[i][j]);

       }

       fprintf(fp,"\n");

       fprintf(fp2,"\n");

       fprintf(fp3,"\n");

   }

   fclose(fp);

   fclose(fp2);

   fclose(fp3);

}

//------------------------

//------Programa principal

int main()

{

      lectura();

      proceso();

      salida();

      system("PAUSE");

      return 0;

}

 

 

Ejemplo Nº 39

 

/*Programa para evaluar la funcion: y=x^2-x-6, en el intervalo de [-3,3]

  donde los resultados se pondran en un archivo, el cual constara de 2 columnas,

  la 1ra contendra los valores de la variable independiente "x", y la segunda

  los valores de "y".*/

//-----Librerias

#include

//-----Variables Globales

FILE *fp;

float x,y;

 

int main()

{

      fp=fopen("salida.txt","w");

      x=-3;

      do

      {

          y=(x*x)-x-6;

          fprintf(fp,"%f\t %f\n",x,y);

          x=x+0.1;

      }while(x<=3);

 

     fclose(fp);

 

     system("PAUSE");

     return 0;

}

 

 

Ejemplo Nº 40

 

/*Este programa lee n, números enteros introducidos por el usuario, los

  almacena en un arreglo dinámico y posteriormente los guarda en un archivo

  llamado "resultado.dat"*/

 

 

//-----Librerias

#include

//-----Variables Globales

int *arreglo;

int i,n,j;

FILE *arc;

 

int main()

{

      printf("Cuantos datos deseas almacenar???\n");

      scanf("%d",&n);

      printf("Introducelos porfavor,sin olvidar el ENTER despues de cada uno\n");

      arreglo=(int *)calloc(n,sizeof(int));

      for(i=0;i

      {

         scanf("%d",&arreglo[i]);

      }

      arc=fopen("resultado.dat","w");

      for(j=0;j

      {

         fprintf(arc,"%d\n",arreglo[j]);

      }

      fclose(arc);

 

      system("PAUSE");

      return 0;

}

 

Publicado el 23/11/2009 a la(s) 17:50
Por jcca007
Humor : Alegre

Bueno ahora veremos como podemos manejar archivos de una manera sencilla con C, cabe mencionar que este tema tiene muchas capacidades y aquí veremos solamente algunas de ellas, espero les sirvan.

 

Para el manejo de archivos se requieren de alguna instrucciones básicas y algunos detalles importantes, que son las siguientes:

 

Primero los detalles.

 

1.- Se requiere declarar un puntero de tipo FILE. (este es el detalle importante)

 

2.- Cuando se abre un archivo se debe especificar si va a ser para lectura(“r”) o         escritura(“w”).

 

3.- Los nombres de archivo deben ir completos, es decir con su extensión incluida. Por ejemplo si el archivo se hace en el bloc de notas podemos decirle que su extensión sea .txt o la que queramos.

 

4.- El formato del archivo es muy importante, debes cuidarlo mucho por que si no, puede generarte errores de lectura y entonces no haría el proceso correctamente.

 

5.- Cuando vas a leer datos de un archivo este ya debe estar creado en el mismo directorio del ejecutable, si no, pues simplemente no podrá leer datos de algo que no existe.

 

6.- Cuando se escribe un archivo es distinto, si no existe, se crea, y si ya esta presente se sobrescribe.

 

7.- Cuando logres compilar correctamente tu código, pruébalo directamente con el ejecutable generado, ya que detecte algunos problemas al tratar de correrlo desde el entorno de Dev C++, para que no te extrañe. (voy a checar a ver si es la versión del Dev C++ y luego les comento).

 

Ahora las instrucciones o funciones que nos ayudan con los archivos.

 

a.- fopen, esta abre el archivo que le digamos, y puede hacerlo para lectura o escritura.

 

    Su sintaxis es la siguiente:

         puntero=fopen(“nombre_del_archivo.txt”,”r”);  Aquí vamos a abrir para lectura

         puntero=fopen(“nombre_del_archivo.txt”,”w”);  Aquí vamos a abrir para escritura

 

         donde puntero es de tipo FILE, no lo olvides, tampoco olvides declararlo previamente

 

b.- fscanf, es para captura de datos desde el archivo.

   

    Su sintaxis es la siguiente:

         fscanf(puntero,”%d”,&variable);

 

donde “%d” es solo el identificador de tipo, recuérdalo, así que puede ser de otro tipo, y variable es adonde quieres direccionar el dato leído ó capturado, recuerda que si es un numero debes usar &, y claro puntero es el que declaraste de tipo FILE previamente.

 

c.- fprintf, es para escribir en el archivo.

(NOTA: debes asegurarte que el archivo este abierto para escritura antes de usar esta función.)

 

    Su sintaxis es la siguiente

         fprintf(puntero,”%d”,variable);

 

donde, igual que en la anterior, puntero es el mismo que declaraste anteriormente y de tipo FILE, luego va el identificador del tipo de variable que vas a escribirle al archivo, y por ultimo variable, que es la que quieres poner en el archivo.

d.- fclose, para cerrar el archivo, es decir, es la contraria a fopen.

(NOTA: esta siempre va al final de cada proceso que realices, y no debes olvidarla).

 

    Su sintaxis es la siguiente:

         fclose(puntero);

 

         donde, puntero es el declarado anteriormente de tipo FILE.

 

 

Básicamente son las 4 funciones que necesitas para abrir archivos, leerlos, escribirlos, y cerrarlos y siempre cuidando los detalles.

Páginas : 1 2 3 4 5
Mi calendario
< Nov. 2009  
L M M J V S D
      1
2345678
9101112131415
16171819202122
23242526272829
30      
Tráfico
2 conectados
8763 visitantes
Agregadores RSS
bloglines
google
netvibes
newsburst
newsgator
pluck
yahoo
Mi bloc personal.
Listo por fin pude subir lo de manejo de archivos, lo dividi en tres partes por que es algo extenso en cuanto a los ejemplos, espero les sirva.