0% encontró este documento útil (0 votos)
14 vistas13 páginas

Prácticas Avanzadas en C: Archivos y Cadenas

El documento presenta el contenido del tercer parcial del curso de Introducción a la Programación, enfocado en temas avanzados de C, incluyendo el uso de cadenas, archivos secuenciales y aleatorios. Se incluyen prácticas que abarcan manipulación de cadenas, lectura y escritura de archivos, y gestión de datos de empleados. Cada práctica se acompaña de ejemplos de código y descripciones de su funcionamiento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas13 páginas

Prácticas Avanzadas en C: Archivos y Cadenas

El documento presenta el contenido del tercer parcial del curso de Introducción a la Programación, enfocado en temas avanzados de C, incluyendo el uso de cadenas, archivos secuenciales y aleatorios. Se incluyen prácticas que abarcan manipulación de cadenas, lectura y escritura de archivos, y gestión de datos de empleados. Cada práctica se acompaña de ejemplos de código y descripciones de su funcionamiento.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Unidad Profesional Interdisciplinaria en

Ingeniería y Tecnologías Avanzadas


IPN

INTRODUCCIÓN A LA PROGRAMACIÓN
TERCER PARCIAL

ÁLBUM: TERCER PARCIAL


PARÁMETROS POR REFERENCIA| ARCHIVOS SECUENCIALES |
ARCHIVOS ALEATORIOS

Ambríz Ríos Irvin Rafael | Int. A la Programación | 23/10/2019


ÍNDICE.

Introducción. 02

Práctica 1. Cadenas. 03

Práctica 2. Archivos secuenciales. 20

Práctica 3. Archivos aleatorios. 20

PÁGINA 1
INTRODUCCIÓN.
En este parcial del curso nos enfocamos en temas más avanzados de C utilizando todos los
conocimientos que hemos adquirido a lo largo del curso. Un ejemplo son las combinaciones
de artilugios como las cadenas en conjunto a los apuntadores. Todos estos conocimientos
fueron enfocados a programas más completos, los cuales son capaces de leer archivos o
reescribirlos, además de hacerlo en cualquier carpeta del ordenador; de esta manera, hemos
concluido los principios fundamentales de C.

El curso se ha empezado a enfocar en utilizar cadenas y reescribir archivos.

Los temas a analizar son:

• Apuntadores.
• Parámetros por referencia.
• Archivos Secuenciales - Clima.
• Archivos Aleatorios - Trabajadores.

PÁGINA 2
PRÁCTICA 1. Cadenas (strcat(), strtok(), strcmp() ).

En este programa utilizamos funciones con las opciones de manipulación de cadenas que
nos ofrece la librería string.h, con lo que podemos reescribir o reagrupar cadenas.

PROGRAMA DIAGRAMA DE FLUJO


//Programa con cadenas
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void ciclo (char palabra[],int p1, int p2);
int intercambio(char palabra[]);
int numpalabras(char nombre[]);
int main(int argc, char *argv[]) {
char
nombre1[50],nombre2[50],apellidopa[50],
apellidoma[50],
edad[3],carrera[50],nombrecom[150],
datos[53],apellidos[100],nombres[100];
int i,j,opc;
printf("\t\t\t---Programa de
manipulacion de caracteres---\n\n");
printf("Introduce tu primer nombre y
da Enter--->\n");
scanf("%s", nombre1);
printf("Introduce tu segundo nombre
y da Enter--->\n");
scanf("%s", nombre2);
printf("Introduce tu Apellido paterno
y da Enter--->\n");
scanf("%s", apellidopa);
printf("Introduce tu Apellido materno
y da Enter--->\n");
scanf("%s", apellidoma);
printf("Introduce tu Edad materno y
da Enter--->\n");
scanf("%s", edad);
printf("Introduce tu Carrera materno
y da Enter--->\n");
scanf("%s", carrera);
strcpy(nombrecom,nombre1);
strcat(nombrecom," ");
strcat(nombrecom,nombre2);
strcat(nombrecom," ");
strcat(nombrecom,apellidopa);
strcat(nombrecom," ");
strcat(nombrecom,apellidoma);
strcat(nombrecom," ");
system("cls");
printf("\nElija una opción:--->\n");
printf("\t [Link] completos
ordenados\n\t

PÁGINA 3
[Link] de letras de mi nombre
completo\n\t
[Link] las letras iguales que hay en mi
nombre(s) y apellidos\n\t [Link] el
nombre completo\n\n");
do{
scanf("%d",&opc);
if(opc<1 || opc>4){
printf("Solo se puedes
seleccionar del 1-5, buey\n");

}while(opc<1 || opc>4);
switch(opc){
case 1:
system("cls");
puts(nombrecom);
strcpy(datos,edad);
strcat(datos," ");
strcat(datos,carrera);
puts(datos);
break;
case 2:
system("cls");

j=numpalabras(nombrecom);
printf("El numero de
palabras en tu nombre es= %d",j);
break;
case 3:
system("cls");

strcpy(nombres,nombre1);
strcat(nombres," ");

strcat(nombres,nombre2);

strcpy(apellidos,apellidopa);
strcat(apellidos," ");

strcat(apellidos,apellidoma);

i=strcmp(nombres,apellidos);
printf("El numero de
letras iguales es: %d",i);
break;
case 4:
system("cls");
printf("\nTu palabra
invertida es:\n");

PÁGINA 4
intercambio(nombrecom);
puts(nombrecom);
break;
}
return 0;
}
int numpalabras(char nombre[]){
int n=0,k;
k=strlen(nombre);
for(k;k>=0;k--){
if(nombre[k]!=' ') n++;
}
return n;

}
int intercambio(char palabra[]){
int i;
int largo = strlen(palabra);
for (i=0; i < (largo/2); i++) {
ciclo(palabra, i, (largo-1)-i);
}

}
void ciclo (char palabra[],int p1, int p2){
char aux=palabra[p1];
palabra[p1]=palabra[p2];
palabra[p2]=aux;

PÁGINA 5
PRÁCTICA 2. Archivos secuenciales.

En este programa la principal característica a notar es la inclusión de los comandos “fopen”


para la lectura y escritura de archivos en algún folder específico o en el mismo. En este
programa se puede leer o escribir las condiciones climáticas de algún archivo que selecciones.

PROGRAMA DIAGRAMA DE FLUJO


#include <stdio.h>
#include <stdlib.h>
void escribir();
void leer();
int main() {
FILE *f;
int menu, opc;

do{
printf("\n\t\t\tMENU\nPor favor
seleccione una opcion:\n1. Crea un archivo o agrega
a uno ya existente.\[Link] el contenido de un
archivo existente.\[Link]\nOpcion: ");
scanf("%d", &menu);

switch (menu){

case 1:
system ("cls");
printf("\n1.
Sobreescribe \"[Link]\".\n2. Agrega a
\"[Link]\"\nOpcion: ");
scanf("%d", &opc);
if(opc==1){

f=fopen("[Link]", "w+");
escribir(f);
}else if(opc==2){

f=fopen("[Link]", "a+");
escribir(f);
}
break;

case 2:
system("cls");
leer(f);
break;

case 3:
goto final;
break;

PÁGINA 6
}
} while(menu!=3);
final:
return 0;
}

void escribir(){

FILE *f;
int fecha, idatos;
float temin, temax, viento, lluvia;

f=fopen("[Link]", "a+");
do{
system ("cls");

printf("Introduzca los datos del


registro: ");
scanf("%d", &fecha);
printf("Introduzca el valor minimo
de temperatura: ");
scanf("%f", &temin);
printf("Introduzca el valor maximo
de temperatura: ");
scanf("%f", &temax);
printf("Introduzca el valor maximo
de la velocidad del viento: ");
scanf("%f", &viento);
printf("Introduzca el valor total de
lluvia: ");
scanf("%f", &lluvia);
fprintf(f,
"%d\t\t%.1f\t\t%.1f\t\t%.1f\t\t%.1f\n", fecha, temin,
temax, viento, lluvia);

printf("\nDesea introducir mas


datos (1.S/0.N) ? ");
scanf("%d", &idatos);
}while(idatos!=0);
fclose(f);
}

void leer(){

FILE *f;
char aux;

printf("FECHA\t\tTEMP MIN\tTEMP
MAX\tVEL VIENTO\tLLUVIA\n");
f=fopen("[Link]", "r");
while((aux=fgetc(f))!=EOF){

PÁGINA 7
putchar(aux);
}
fclose(f);
}

PÁGINA 8
PRÁCTICA 3. Archivos aleatorios.

Este programa fue diseñado para la reescritura de archivos que se encuentren en .txt. Se
utilizó un ejemplo de trabajadores para recrear esta acción.

PROGRAMA DIAGRAMA DE FLUJO


#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>
//Se ingresan las horas trabajadas y el apgo por hora.
Se obtiene en un archivo aparte su pago bruto, la
cotización del IMSS y el PAgo neto (Bruto-IMSS).
//Estructura de variable "empleados"
typedef struct{
char nombre_e[30];
int pago_e;
int horas_e;
}empleados; //Nombre de variable de
entrada.
typedef struct{
char nombre_s[30];
int pagobruto_s;
int pagoneto_s;
int imss_s;
}fhynn; //Nombre de variable de salida.
FILE *fentrada, *fsalida;
empleados entrada;
fhynn salida;
void gotoxy(int x,int y){
HANDLE hCon;
hCon=
GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y = y;
SetConsoleCursorPosition(hCon,dwPos);

void menu();
void reiniciar();
void registro(empleados entrada);
void operaciones(empleados entrada, fhynn salida,
int i);
void imprimir(fhynn salida, int i);
void encabezado();

int main(int argc, char *argv[]) {


menu();
system("PAUSE");
return 0;

PÁGINA 9
}

void menu(){
int opc;
do{
system("cls");
printf("\t\t-----MENU PRINCIPAL-----\n");
printf("1.- REINICIAR.\n");
printf("2.- REGISTRAR EMPLEADOS.\n");
printf("3.- SALIDA.\n");
printf("Elige tu opcion del 1-3 :\n");
scanf("%d",&opc);
switch(opc){
case 1:
reiniciar();
break;
case 2:
registro(entrada);
break;
case 3:
break;
}
}while(opc>0 && opc<3);
}
void reiniciar(){
int op;
system("cls");
printf("INICIAR\n");
printf("Esta rutina borrar el archivo de
entrada anterior\n");
printf("Deseas borrarlo? \n [Link]\t [Link]\n");
scanf("%d",&op);
if(op==1){

fentrada=fopen("[Link]","r");
if(fentrada==NULL){
printf("No puedo borrar el
archivo porque NO existe\n");
getche();

}
else{
fclose(fentrada); //Borra
archivo.
remove("[Link]");
//Remueve el archivo de la carpeta donde se guarda.
}//Fin de la
evaluación a la existencia del programa.
}
}
void registro(empleados entrada){

PÁGINA 10
int op,i=2;
fentrada=fopen("[Link]","w");
do{
printf("\t\t---Registro de
empleados---\n");
printf("\nNombre del
empleado (Sin espacios) \n");

scanf("%s",entrada.nombre_e);
printf("\nDame su tarifa por
horas: \n");

scanf("%d",&entrada.pago_e);
printf("\nDame sus horas
trabajadas: \n");

scanf("%d",&entrada.horas_e);
operaciones(entrada,salida,i);
printf("Deseas
continuar?\n1.SÍ\[Link]:\n");
scanf("%d",&op);
i++;
}while(op==1);
fclose(fentrada);

}
void operaciones(empleados entrada, fhynn salida,
int i){
int pagoBruto,pagoNeto,IMSS;
system("cls");

pagoBruto=entrada.pago_e*entrada.horas_e;
IMSS=pagoBruto*0.048;
pagoNeto= pagoBruto-IMSS;

strcpy(salida.nombre_s,entrada.nombre_e);
salida.imss_s=IMSS;

salida.pagobruto_s=pagoBruto;
salida.pagoneto_s=pagoNeto;
imprimir(salida,i);
system("pause");

}
void imprimir(fhynn salida,int linea){
fsalida=fopen("[Link]","w");
encabezado();
gotoxy(1,linea);
printf("%s",salida.nombre_s);

PÁGINA 11
gotoxy(15,linea);
printf("%d",salida.pagobruto_s);
gotoxy(45,linea);
printf("%d",salida.imss_s);
gotoxy(55,linea);
printf("%d",salida.pagoneto_s);
fclose(fsalida);

}
void encabezado(){
gotoxy(1,1); printf("Nombre");
gotoxy(15,1); printf("Pago Bruto");
gotoxy(45,1); printf("IMSS");
gotoxy(55,1); printf("Pago Neto");
}

PÁGINA 12

También podría gustarte