Practica4-EntradaSal..

Anuncio
Facultad de Ciencias Exactas, Ingeniería y Agrimensura
Departamento de Sistemas e Informática
Escuela de Electrónica
Informática II
Práctica Nº 4 – Entrada / Salida
Problema 1: (C++)
Escriba un programa que se invoque desde la línea de comandos con un argumento.
Dicho argumento deberá ser numérico y validado convenientemente. El programa
deberá pedir el ingreso de tantas cadenas de texto (Strings) como indique el citado
argumento y luego listar por pantalla las mismas.
Problema 2: (*) (C++)
Diseñar una “base de datos” de los empleados de una compañía y un sistema que
permita ingresar los datos por teclado, visualizarlos por pantalla, obtener el valor de
los datos miembros y cambiar los mismos según los siguientes lineamientos:
 Crear un arreglo de objetos del tipo Empleado y llenarlo luego con los datos
correspondientes a 10 empleados ingresados por teclado.
 Hacer un menú que tenga las siguientes opciones:
a) Calcular el sueldo mínimo (del arreglo de empleados) y la cantidad de
veces que ocurre dicho sueldo en el arreglo
b) Dado un sueldo (que el usuario ingresará por teclado) retornar la primera
ocurrencia del mismo en el arreglo (su índice) o en el caso de que ningún
empleado del arreglo tenga un sueldo igual al ingresado, mostrar un -1
c) Calcular el sueldo promedio de los empleados, mostrar en pantalla este
valor y los datos del empleado cuyo sueldo esté más cerca de este
promedio
d) Salir
Informática II – Práctica nº 4: E/S
Pág. 1
Problema 3: (C++)
Escribir un programa que lea desde un archivo matrices y escriba en otro las
matrices transpuestas. El nombre del archivo de entrada y el de salida se especifican
como argumentos por línea de comando, y el formato de los archivos es el siguiente:
************
elementos de la primera fila separados por espacio (carácter “ “)
elementos de la segunda fila “
.
.
.
elementos de la última fila
“
************
Un ejemplo:
************
12 0.25 -10 87 1.2
3 128 -17 -6 12
57 42 -1 7 15
41 -5 -87 -0.2 6
65 -7 4 0 0
************
Problema 4: (C++)
Dada la siguiente clase abstracta:
class Figura{
public:
double area();
virtual int esMenorQue(Figura &obj) = 0;
}
a) Definir las clases Rectángulo, Círculo y Triángulo derivadas de Figura.
Implementar en estas clases todos las funciones y variables necesarias para
ello, siempre al nivel más alto posible de la jerarquía de clases. Es posible
modificar la clase Figura, siempre que siga siendo abstracta.
b) La función miembro esMenorQue(Figura &obj) permite ordenar
Rectángulos, Círculos y Triángulos por su área.
c) Crear un programa realice lo siguiente:
 Permita que el usuario cree una cantidad arbitraria de objetos círculos,
triángulos y rectángulos, solicitando la entrada por teclado de los
valores necesarios para crear estas instancias.
Informática II – Práctica nº 4: E/S
Pág. 2
 Muestre un mensaje por pantalla indicando cuál es la figura (tipo y
área) de menor área.
Problema 5: (C++)
Escriba un programa que busque en un archivo de texto, la primera ocurrencia de un
carácter particular e imprima por pantalla el número de línea y posición dentro de la
misma de dicha ocurrencia. El programa debe tomar dos argumentos de la línea de
comando, el primero de ellos es el nombre del archivo de texto y el segundo de ellos
es el carácter buscado.
El programa deberá mostrar por pantalla un mensaje de error en caso que se
introduzca un número incorrecto de argumentos por línea de comando o si el
segundo argumento es una cadena de longitud mayor a un carácter.
Problema 6: (C++)
Similar al problema anterior pero buscando ahora una cadena e indicando la
cantidad de veces que esta cadena aparece en el archivo y las posición de cada
ocurrencia.
Problema 7: (C++)
Escribir un programa que muestre la siguiente pantalla, tome la entrada que tipea el
usuario, la valide -es decir, que introduzca cadenas de caracteres en los nombres y
números en las edades, por ejemplo- y luego guarde la pantalla completa en un
archivo llamado pantalla.txt. El programa debe hacerse en dos versiones:
a) Utilizando printf() y scanf() exclusivamente
b) Utilizando “>>” y “<<” exclusivamente
Datos del Ingresante
--------------------------Apellido:
Fecha de nacimiento:
Localidad:
País:
Fecha de Ingreso:
Edad:
Legajo:
Nombres:
Dirección:
Provincia:
Nacionalidad:
Carrera:
DNI:
Problema 8: (C++)
Informática II – Práctica nº 4: E/S
Pág. 3
Dado el siguiente programa, analizarlo, correrlo y realizar un programa para leer el
archivo que produjo, y muestre por pantalla los tres números ingresados:
#include <iostream>
#include <fstream>
using namespace std;
void main(){
double
promedio = 0.0;
int
numero1, numero2, numero3;
ofstream miArchivo;
miArchivo.open("promedio.txt");
cout << "Ingrese el primer número: ";
cin >> numero1;
cout << "Ingrese el segundo número: ";
cin >> numero2;
cout << "Ingrese el tercer número: ";
cin >> numero3;
miArchivo << "El promedio de ";
miArchivo << numero1 << ", ";
miArchivo << numero2 << " y ";
miArchivo << numero3 <<" es: ";
promedio = (numero1 + numero2 + numero3) / 3;
miArchivo << promedio;
miArchivo.close();
}
Problema 9: (C++)
Un archivo de texto contiene datos de personas con su fecha de nacimiento en el
siguiente formato:
Pérez, Juan
04/05/1987
Galeano, Ignacio Ramón
12/08/1999
...
Hacer un programa que liste por pantalla los nombre y su edad exacta (Años-mesesdías)
Informática II – Práctica nº 4: E/S
Pág. 4
Problema 10: (C++)
Crear una aplicación para procesar información acerca de una lista de libros. De
cada libro interesa almacenar información acerca de su título y nombre del autor.
a) Escriba una clase Libro que pueda ser usada para crear objetos que
representen libros. La clase debe tener un constructor que tome dos argumentos
de tipo char* para inicializar el título y autor del libro. Debe incluir funciones de
acceso y actualización para título y autor y una función toString() para
mostrar información sobre el libro en forma textual.
b)
Escriba el código de una clase ListaLibros que use un array para almacenar
una lista de objetos Libro. La clase debe tener un constructor que inicialice una
lista de libros vacía, una función para añadir un nuevo objeto Libro a la lista y
una función toString() que produzca información textual de la lista (cada libro
debe listarse en una línea separada). Puede suponer que el número máximo de
libros es 100.
c) Se requiere poder leer información sobre libros que se encuentra en un archivo
de texto. En tal archivo cada libro está representado por dos líneas de texto, la
primera donde figura el título y la segunda donde figura el autor del mismo. La
primera línea del archivo contiene un entero que representa el número de libros
listados en el archivo, por ejemplo:
2
Rayuela
Cortázar, Julio
Ficciones
Borges, Jorge luis
Escriba en la clase ListaLibros una función cargarDe() que tome como
argumento una cadena que representa el nombre del archivo desde donde leerá
datos de libros y los añadirá en ListaLibros.
d)
Escriba en la clase ListaLibros una función grabarA(). Esta función debe
tomar como argumento una cadena que será el nombre de un archivo donde
escribirá todos los datos de los libros de ListaLibros. El archivo tendrá el
formato indicado más arriba, y los datos deben agregarse a los ya existentes en
el archivo.
e) Si el archivo tiene ahora el formato siguiente, ¿qué y cómo debería cambiar en
su programa?
2
Rayuela:Cortázar, Julio
Informática II – Práctica nº 4: E/S
Pág. 5
Ficciones:Borges, Jorge luis
Problema 11: (C++)
Analice que sucede si en el programa del ejercicio 8 se suplanta la línea
miArchivo.open("promedio.txt");
por esta:
miArchivo.open("promedio.txt", ios::binary);
Problema 12: (C++)
Modifique el problema 10 creando agregando a la clase ListaLibros una función
miembro que permita obtener los datos de un Libro específico dado su título, con la
siguiente forma:
Libro * ListaLibros::buscarLibro(char *nombre_archivo, char *
titulo)
Problema 13: (C++)
Dadas las siguientes definiciones de clases, escribir la implementación con lo
MINIMO necesario a fin de darle funcionalidad, sin agregar ni cambiar propiedades.
Luego escribir un "main()" para leer el archivo "personas.dat", que contiene los
datos de dos hombres y dos mujeres, cargar los datos en un arreglo y mostrar en
pantalla nombre, peso real y estado según la OMS de cada persona del arreglo.
Para resolver el problema, tener en cuenta que:
a) El peso teórico se calcula como:
 Mujeres: 50 kg para los primeros 1.5 m de altura más 2.5 kg
por cada 2.5 cm adicionales, mas 0.65 Kg por un hijo ó 1.3
Kg por 2 hijos o mas.
 Hombres: 53 kg para los primeros 1.5 m de altura más 3 kg
para cada 2.5 cm adicionales, mas 10% si el hombre es
corpulento.
b) El Indice de Masa Corporal (IMC) se calcula dividiendo los kilogramos
de peso por el cuadrado de la estatura en metros
c) La clasificación según IMC acorde a la OMS:
Informática II – Práctica nº 4: E/S
Pág. 6





< 18,5: Peso Bajo (Indica delgadez, desnutricion o algún
problema de salud)
hasta 24,9 (hombres) o 23,9 (mujeres). Peso normal (Está
catalogado como saludable)
hasta 29.9 hombres ó 28.9 mujeres: Sobrepeso (u Obesidad
leve)
hasta 40 hombres ó 37 mujeres: Obesidad grado 2.
> 40 hombres ó > 37 mujeres: Obesidad severa o grado 3.
Código:
class Persona
{
public:
Persona(void);
~Persona(void);
Persona(char *nom, double altura, double p);
char * nombre();
double peso_teorico();
double IMC();
char * estado_segun_OMS();
private:
char []nombre;
double estatura;
double peso;
//...
};
class Mujer : public Persona
{
public:
Mujer(void);
~Mujer(void);
Mujer( char *nom, double altura, double p, int num_hijos);
private:
int nroHijos;
};
class Hombre : public Persona
{
public:
Hombre(void);
~Hombre(void);
Hombre(char *nom, double altura, double p, bool corpu);
Informática II – Práctica nº 4: E/S
Pág. 7
private:
bool corpulento;
};
Problema 14: (C++)
En cada linea de un archivo de nombre “datos.txt” se encuentran los datos de una
función evaluada en los puntos dados en forma de pares x;f(x). Por ejemplo:
0,25 ;12,0
0,45 ; 24,5
0,75 ; 30,0
1,05 ; 40,3
2,00 ; 55,0
3 ; 83,0
...
Leer el archivo y calcular el polinomio de interpolación de Lagrange evaluándolo en
puntos ingresados por teclado.
Informática II – Práctica nº 4: E/S
Pág. 8
Descargar