TEMARIO 1

Anuncio
INFORMATICA II – MUESTRA DE PARCIALES
TEMARIO 1
Ejercicio 1
Se tienen dos funciones de librería (archivo de cabecera math.h) que son
double log(double x) y double log10(double x), la primera devuelve el logaritmo natural y
la segunda el logaritmo en base 10 de un valor x.
Construir un programa en C que:
ingrese un valor x y la base del logaritmo.
Si el valor ingresado es “e” mostrar el logaritmo natural del número utilizando la
función log.
Si el valor ingresado es “10” mostrar el logaritmo en base 10 del número usando la
función log10.
Cualquier otro valor de la base se deberá utilizar la fórmula:
=
Utilizar cualquiera de las funciones de librería asignándole la función a una variable de
puntero a función llamada logaritmo.
Verificar que los valores ingresados sean compatibles matemáticamente (logaritmos
positivos, etc.)
Ejercicio 2
Hacer un programa en C o C++ que ingrese cuatro valores de tipo char sin signo. Guardar
los mismos en un entero sin signo uno a continuación de otro.
Ejercicio 3
Se tiene la clase complejos dada en clase.
class complejo
{
private:
double re, im;
public:
complejo(){re = im = 0.00;}
complejo( double r, double i ){re = r; im
= i;}
double & real(void){return re;}
double & imag(void){return im;}
double modulo(void);
double argumento(void);
complejo conjugado(void);complejo
operator+(complejo c );
complejo operator-(complejo c );
complejo operator*(complejo c );
complejo operator*(double d){return
complejo(re*d, im*d);}
complejo operator/(complejo c );
bool operator==(complejo c);
};
Se pide:
Implementar la sobrecarga de la función == que devuelva verdadero si los módulos de dos
números complejos son iguales.
Sobrecargar el operador ~ de modo que devuelva el conjugado del complejo.
Hacer los siguientes programas en C++
a. Llenar un vector con seis números complejos.
Mostrar los complejos que resultan de multiplicar el término cero por el uno y dividirlo
por el conjugado de dos, y el que resulta de multiplicar el tres por el cuatro y dividirlo
por el conjugado del cinco.
b. Ingresar dos números complejos a y b y mostrar los siguientes resultados:
n = a b (cos(α + β ) + jsen(α + β )) y n = a * b donde a y b son los módulos y α y β los
argumentos de los complejos.
Tema 4
Se tiene un archivo existente llamado uno.dat que no se sabe el contenido. Copiar byte a
byte los datos de uno.dat al archivo dos.dat creado a tal efecto.
TEMARIO 2
Ejercicio 1
Se tiene el siguiente programa en C++:
#include <iostream.h>
struct pieza
{
char nombre[30];
double precio;
};
void listar(void * a, int n);
void guardararchivo(char* nombre, bool crear );
void main()
{
pieza * p;
const int cant;
p = new pieza[cant];
//llenar el vector con datos
listar(/*poner parámetros adecuados*/);
guardararchivo("prueba.dat", false);
delete[]p;
}
void listar(void * a, int n)
{
//hacer el programa que liste nombre y
precio
}
void guardararchivo(char* nombre, bool crear )
{
//hacer el guardado de datos en el archivo
//crear indica si se crea un archivo nuevo
}
Ejercicio 2
Se tiene un vector de datos de tipo entero sin signo. Se pide hacer un programa en C o C++
que realice lo siguiente:
a.
b.
c.
d.
e.
Llenar el vector con números aleatorios comprendidos entre 0 y 0xffffffff.
Contar cuántos doble ceros hay el vector. (0012 dos ceros seguidos de un uno).
Contar cuantos 1002 hay en el vector.
Contar cuántos 1 hay en el vector.
llamar a una función que transforme los términos positivos del vector (bit más
significativo igual a cero) en sus complementos a dos.
Ejercicio 3
Se tiene la siguiente clase que sirve para manejar cadenas de caracteres:
class cadena
{
private:
char * c;
void reasignar( int n );
public:
~cadena();//destructor
cadena(); //constructor por defecto
cadena( unsigned int v );//aloca memoria en cantidad
cadena( char * v );//sobrecarga para iniciar con una cadena
cadena( int v ); //sobrecarga para convertir un entero en cadena
cadena( double f );//sobrecarga para convertir un doble en cadena
cadena( cadena &v);//constructor copia
cadena operator = (cadena v );//asignacion
cadena operator = (char * v );
cadena operator + (cadena v ); //concatenador
cadena operator + (char * v );
cadena operator + (char v );
char & operator[](int n ){return c[n]; }
cadena operator += (cadena v );
//comparaciones
bool operator == ( cadena v );
bool operator == ( char * v );
bool operator > ( cadena v ){return strcmp(c, v.pchr()) > 0; }
bool operator > ( char * v ){return strcmp(c, v) > 0; }
bool operator < ( cadena v ){return strcmp(c, v.pchr()) < 0; }
bool operator < ( char * v ){return strcmp(c, v) < 0; }
const char * pchr(void){return c;}
int largo(void){return strlen(c);}
};
Hacer un programa en C++ que empleando la clase cadena:
a. Llenar un vector de 10 elementos de la clase.
b. Mostrar las cadenas que se repiten.
c. Concatenar las cadenas ubicadas en la posición 1, 3, 5,6 y 8 y mostrarlas.
Nota. Como práctica tratar desarrollar la clase utilizando las funciones de librería dadas
por <string.h>.
Descargar