ÁLBUM DE CÓDIGOS. 3°er PARCIAL. Programación estructurada. Maestra: SERRANO FRAGOSO MARISELA. Grupo: 1TM1. Carrera: TELEMÁTICA VALDOVINOS VARGAS OMAR ENRIQUE. INDICE DE PROGRAMAS: APUNTADORES PARAMETROS POR REFERENCIAS ESCTRUCTURAS: Estáticas Dinámicas. LLAMADO POR FUNCION FILE: Secuenciales Aleatorios APUNTADORES #include <stdio.h> #include <stdlib.h> typedef struct{ char fabricante[20]; int cantidad; float preciounitario; }registro_piezas; main(){ registro_piezas *ptr_reg; float valor_total; ptr_reg=(registro_piezas*)malloc(sizeof(registro_piezas)); //asignar memoria al puntero de la estructura printf ("Nombre del fabricante\n"); gets(ptr_reg->fabricante); printf ("Cantidad\n"); scanf("%d", &ptr_reg->cantidad); printf ("Precio unitario\n"); scanf("%f", &ptr_reg->preciounitario); valor_total=(ptr_reg->cantidad)*(ptr_reg->preciounitario); puts(ptr_reg->fabricante); printf ("%d", valor_total); return 0; } APUNTADORES PARAMETRO POR REFERENCIAS #include <stdio.h> #include <stdlib.h> void IncrementarVal(int x); void IncrementarRef(int &x); int main(int argc, char *argv[]) { int a; a=5; printf("%d", a); IncrementarVal(a); printf("%d", a); IncrementarRef(a); printf("%d", a); IncrementarVal(a); printf("%d", a); IncrementarRef(a); printf("%d", a); system("PAUSE"); return 0; } void IncrementarVal(int x) { x=x+1;//Perdon } void IncrementarRef(int &x) { x=x+1;//Perdon } Estructuras #include <stdio.h> #include <stdlib.h> void vaciar(); typedef struct { char *nombre; int edad; }Trabajadores; Trabajadores *trabajador; int main(int argc, char *argv[]) { FILE *fpointer; int i; int contador; fpointer=fopen("datos.txt", "r"); if (fpointer==NULL){ printf("El archivo no se pudo abrir.\n"); exit (1); } char text[50]; while(!feof(fpointer)){ fgets(text, 50, fpointer); contador++; } rewind(fpointer);//me regresa el cursor al inicio de mi archivo trabajador=(Trabajadores*)malloc(cont*sizeof(Trabajadores)); if (trabajador==NULL){ printf ("No se puede reservar la memoria. \n"); exit (1); } for(i=0;!feof(fpointer);i++){ vaciar(text); } return 0; } void vaciar(char texto[]){ int i; for(i=0;i<50;i++){ texto[i]='\0' } } FILE #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <conio.h> // Calcula el promedio de alumnos,programa que usa archivos // Estructura del archivo de entrada typedef struct{ long int matricula_e; char nombre_e[30]; int primer_p_e; int segundo_p_e; }calificacion; // nombre del registro de salida // Estructura del archivo de salida typedef struct{ long int matricula_s; char nombre_s[30]; int primer_p_s; int segundo_p_s; int promedio_s; }promedio; // nombre del registro de salida //Puntero al archivo de entrada y de salida FILE *fentrada, * fsalida; calificacion entrada; // variable tipo registro del archivo de entrada promedio salida; // variable tipo registro del archivo de salida void menu(); void iniciar(); void altas(calificacion entrada); void reporte(calificacion entrada, promedio salida); void imprime(promedio salida); void encabezado() //Definir función gotoxy() para compiladores ANSI C void gotoxy(short x,short y) { COORD coord; coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } int main(int argc, char *argv[]) { //Invoca a la funcion menu menu(); system("PAUSE"); return 0; } //Fin de la funcion main() void menu(){ int opcion; do{ system("cls"); printf("MENU PRINCIPAL\n"); printf("1.- INICIAR\n"); printf("2.- ALTAS\n"); printf("3.- REPORTE\n"); printf("4.- SALIDA\n"); printf("cual opcion deseas? :"); scanf("%d",&opcion); switch(opcion){ case 1: //borrar el archivo de entrada anterior iniciar(); break; case 2: //altas de registros altas(entrada); break; case 3: //da el resultado del proceso reporte(entrada, salida); break; }//fin del switch }while(opcion>0 && opcion<4); }//fin funcion menu() void iniciar(){ int op; printf("I N I C I A R\n"); printf("Esta rutina borra el archivo de entrada anterior\n"); printf("Deceas borrarlo? 1.-Si; 2.-No :"); scanf("%d",&op); if(op==1){ //abrir archivo de entrada fentrada=fopen("calificacion.txt","r"); if(fentrada==NULL){ printf("No se puede borrar el archivo porque NO existe \n"); getche(); } else { fclose(fentrada); //borrar archivo remove("calificacion.txt"); }//fin del if(fentrada==NULL) }//fin del if(op==1) }//fin de la funcion iniciar() void altas(calificacion entrada){ int op; //abrir archivo de entrada fentrada=fopen("calificacion.txt","a+"); if(fentrada==NULL){ printf("El archivo de entrada NO existe ; favor de revisar su proceso \n"); }//fin if if(fentrada!=NULL){ do{ printf("A L T A S \n"); printf("Dame la matricula:"); scanf("%ld",&entrada.matricula_e); printf("Dame el nombre:"); scanf(" %[^\n]",entrada.nombre_e); printf("dame la calificacion del primer parcial:"); scanf("%d",&entrada.primer_p_e); printf("dame la calificacion del segundo parcial:"); scanf("%d",&entrada.segundo_p_e); //escribe en el archivo de entrada fwrite(&entrada,sizeof(calificacion),1,fentrada); printf("Deseas continuar? 1.-Si; 2.-No: "); scanf("%d",&op); }while (op==1); } //fin de if(fentrada!=NULL) fclose(fentrada); }//fin de la funcion altas void reporte(calificacion entrada, promedio salida){ int promedio_w; system("cls"); fentrada=fopen("calificacion.txt","r"); //abrir archivo de entrada fsalida=fopen("promedio.txt","w"); //abrir archivo de entrada if(fentrada==NULL){ printf("El archivo de entrada NO existe; favor de revisar su proceso \n"); }//fin if if(fentrada!=NULL){ //leer archuvi de entrada fread(&entrada,sizeof(calificacion),1,fentrada); do{ promedio_w=(entrada.primer_p_e+entrada.segundo_p_e)/2; //pasar los valores de las variables de entrada y trabajo a las variables de salida salida.matricula_s=entrada.matricula_e; strcpy(salida.nombre_s,entrada.nombre_e); salida.primer_p_s=entrada.primer_p_e; salida.segundo_p_s=entrada.segundo_p_e; salida.promedio_s=promedio_w; //escribir en el archivo de salida fwrite(&salida,sizeof(promedio),1,fsalida); //leer archivo de entrada fread(&entrada,sizeof(calificacion),1,fentrada); }while(!feof(fentrada)); fclose(fentrada); fclose(fsalida); imprime(salida); }// fin del if(fentrada!=NULL) system("pause"); }//fin de la funcion reporte() void imprime(promedio salida){ int linea; fsalida=fopen("promedio.txt","r"); //abrir archivo de entrada if(fsalida==NULL){ printf("No se pudo abrir el archivo; favor de revisar su proceso \n"); }//fin if //poner encabezados encabezado(); linea=2; //leer archivo de salida fread(&salida,sizeof(promedio),1,fsalida); do{ gotoxy(1,linea); printf("%ld",salida.matricula_s); gotoxy(15,linea); printf("%s",salida.nombre_s); gotoxy(48,linea); printf("%d",salida.primer_p_s); gotoxy(58,linea); printf("%d",salida.segundo_p_s); gotoxy(68,linea); printf("%d",salida.promedio_s); linea++; //leer archivo de salida fread(&salida,sizeof(promedio),1,fsalida); }while(!feof(fsalida)); fclose(fsalida); }//fin de la funcion imprime void encabezado(){ gotoxy(1,1); printf("Matricula"); gotoxy(15,1); printf("Nombre"); gotoxy(45,1); printf("Examen 1:"); gotoxy(55,1); printf("Examen 2:"); gotoxy(65,1); printf("Promedio\n"); }