TP02 D 2014

Páginas: 7 (1555 palabras) Publicado: 11 de marzo de 2015
UNIVERSIDAD TECNOLÓGICA NACIONAL
Facultad Regional Tucumán Departamento:
SISTEMAS
Cátedra: Algoritmos y Estructura de Datos
Ciclo 2014 / 2015

TRABAJO PRÁCTICO
Nº 02
D

DATOS DEL GRUPO DE ALUMNOS
División:

Profesor:
Auxiliar o JTP:

Legajo o DNI

Fecha de Entrega
_/
/
Apellido y Nombre

UNIDAD Nº 2: Cuarta Parte, Manejo de Archivos Binarios.

Problema Resuelto

01) Crear un archivo binario(Multiplo.Dat) e ingresar una serie indeterminada de números
entero, guardando en el archivo, solo aquellos valores que sean múltiplos de 3. Se deberá
mostrar, luego del ingreso, los valores guardados y cantidad de valores que no se
guardaron.
Resolución:
#include
#include //Librería necesaria para el uso de exit( ), system( ) usados en este ejemplo.
main()
{
//Defines e inicializalas variables a utilizar.

FILE *ArchMultiplo;
//Declara una Variable puntero tipo archivo.
int NroIng = 0;
int CantNumNoGuardado = 0; //Contador para la cantidad de valores que no se guardaron.
char OpcSalida = 'N';
//Variable para controlar el ingreso de datos.
//Crea un archivo binario, si existe el archivo borrara su contenido.
ArchMultiplo = fopen("multiplo.dat", "w+b"); //Crea el archivo, olimpia el archivo.
//Valida la creación del archivo, si no se creó correctamente se aborta el programa.

if (ArchMultiplo == NULL)
{
printf("\n SE PRODUJO UN ERROR AL INTENTAR CREAR EL ARCHIVO");
exit(1);
//Aborta la ejecución del programa, termina. Devuelve 1 indicando que se produjo un error
}
do
{
printf("\nIngrese un Nro : ");
scanf("%d",&NroIng);
/*Verifica si el valor ingresado es múltiplode 3.*/

if ( NroIng%3 == 0)
fwrite(&NroIng, sizeof(NroIng), 1, ArchMultiplo); //Graba en el archivo el Valor Ingresado por ser múltiplo de 3.
else
CantNumNoGuardado = CantNumNoGuardado + 1; //Contabiliza los valores no guardado.
//Consulta al operador para continuar o no con el ingreso.

printf("\n\t Continua: (S)i - (N)o, Ingrese Opcion: ");
_flushall();
scanf("%c",&OpcSalida);
}while((OpcSalida == 'S') || (OpcSalida == 's')); //Fin de la carga de valores.
system("CLS"); //Limpia la pantalla

printf("\n\n\t\t\t LISTADO DEL ARCHIVO\n\n");
rewind(ArchMultiplo); //Posiciona el puntero del archivo en el primer valor del archivo.
fread(&NroIng, sizeof(NroIng), 1, ArchMultiplo); //lee el primer valor del archivo.
/*Lista el archivo utilizando otra estructura repetitiva, la misma controla elfinal del archivo.*/
while ( !feof(ArchMultiplo) ) //Determina si no hay fin de archivo.

{
printf("%d - ", NroIng);
fread(&NroIng,sizeof(NroIng), 1 , ArchMultiplo);
} //Fin del listado.
//Al completarse el procesamiento del archivo se lo cierra.

fclose(ArchMultiplo);
//Muestra la cantidad de valores no Guardados.

printf("\n\n\nLa cantidad de valores no Guardados es: %d \n",CantNumNoGuardado);//El sistema espera que se pulse una tecla, antes de salir.

system("pause");
} //Fin del programa.

02) Se Leen N pares de valores positivos de tipo entero, Por cada par ingresado, se desea
guardar la suma de los valores en un archivo binario (suma.dat) y en otro archivo
(cociente.dat) la división del segundo valor en el primer valor. Tener en cuenta que no
puede haber división en cero, en caso deexistir mostrar una mensaje aclaratorio. Terminado
el ingreso hacer un listado por pantalla de los dos archivos. Se deberá crear un menú
indicando la acción a realizar.

#include
#include //Librería necesaria para el exit(), system().
main()
{
//Defines e inicializa las variables a utilizar
FILE *ArchSuma;
//Define una Variable puntero de tipo archivo.
FILE *ArchCociente;//Define una Variable puntero de tipo archivo.

int ParesValores = 0, Suma=0;
float Cociente=0.0;
int OpcMenu = 0, ContPares;
int Valor1 = 0, Valor2 = 0; //Para almacenar los valores de entrada.
//Crea el archivo binario para almacenar la Suma.

ArchSuma = fopen("suma.dat", "w+b");
if (ArchSuma == NULL){
printf("\n SE PRODUJO UN ERROR AL INTENTAR CREAR EL ARCHIVO SUMA");
exit(1);
}
//Crea el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • D A De La Tradici N 2014
  • 6to D 2014
  • 2014 EXPO 11 COPs D E
  • tp02
  • D A De La Bandera 2014
  • 8777 D 2014
  • Bedoya D Az 2014
  • 1ET TP02 Poligonos T3 2014 1

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS