Primer Parcial Resuelto - Catedras de Informática I y II

Anuncio
INFORMATICA II – PRIMER PARCIAL
Tema 1
Se tiene un archivo denominado “cheques.dat” donde cada registro fue guardado mediante la siguiente
estructura:
struct cheque
{
int nro;
char banco[35];
double importe;
char fecha[8];
};
Se sabe que el archivo contiene miles de cheques guardados y se quiere recuperar y mostrar los registros del
archivo que van del 1000 al 1500.
Se pide:
Levantar los datos guardados a una estructura como la indicada que deberá ser alocada en la memoria
dinámica y mostrarlos en la pantalla.
#include <stdio.h>
#include <memory.h>
struct cheque
{
int nro;
char banco[35];
double importe;
char fecha[8];
}
main()
{
FILE * f;
struct *cheque chk;
int n = 1000;
f = fopen("cheques.dat", "rb");
if( f != NULL )
{
}
}
chk = (cheque *)malloc( sizeof(cheque) );
fseek(f, (n-1) * sizeof(cheque), SEEK_SET);
while( n < 1500 && !feof(f) )
{
fread( chk, sizeof(cheque), 1, f );
printf( "Numero %d\nBanco %s\nImporte %lf\nFecha %s\n\n",
chk->nro, chk->banco, chk->importe, chk->fecha);
n++;
}
fclose(f);
free(chk);
Ejercicio 2
Hacer un ejercicio en C o C++ que realice lo siguiente:
a.
b.
c.
d.
Entrar un número sin signo
Mostrar su valor en formato hexadecimal y, mediante operaciones binarias en forma binaria.
Hallar el complemento binario a 2.
Mostrar su valor en formato hexadecimal y, mediante operaciones binarias en forma binaria.
#include <stdio.h>
void mostrarbinario(unsigned int x )
{
unsigned int y = 1;
int i;
y <<= (sizeof(unsigned int) * 8 - 1) ;
for( i = 0; i < sizeof(unsigned int) * 8; i++ )
{
if( y & x )
{
printf("1");
}
else
{
printf("0");
}
y>>=1;
}
printf("\n");
}
main()
{
unsigned int x, z;
printf("Ingrese valor ");
scanf("%u", &x );
printf("%x\n", x );
mostrarbinario(x);
z = ~x + 1;
printf("%x\n", z );
mostrarbinario(z);
}
Ejercicio 3
Definir una clase que represente un vector matemático (módulo, dirección y sentido) definido por dos puntos
utilizando objetos de la clase punto abajo indicada (NO DESARROLLAR LA CLASE PUNTO)
class punto
{
public:
double x,y;
|v|
punto(){x=y=0;}
double distancia(punto p);
b
double distancia();//distancia al orígen
};
El vector tiene como extremo el punto a y como origen el punto b.
La clase a construir tendrá como:
a
Atributos.
Dos objetos punto y estarán encapsulados.
Métodos:
Método para modificar y visualizar las coordenadas de los puntos.
Módulo: Definido como la distancia entre los puntos a y b .
Argumento: El ángulo que forma el vector con el eje de las x.
Producto escalar de dos vectores mediante la sobrecarga del operador *. El producto escalar
se define como el producto de los módulos de los vectores por el coseno del ángulo
comprendido entre ellos según la siguiente fórmula: m.n = m . n . cos(arg(m) − arg(n))
//archivo de cabecera
#ifndef VECTORMAT_H
#define VECTORMAT_H
#include <cmath>
class punto
{
public:
double x,y;
punto(){x=y=0.0;}
double distancia(void){return sqrt(pow(x,2)+pow(y,2));}
double distancia(punto p);
};
class vectormat
{
private:
punto pa,pb;
public:
};
#endif
punto & a(void){return pa;}
punto & b(void){return pb;}
double modulo(void){return pa.distancia(pb);}
double argumento(void);
double operator * (vectormat v);
//archivo .cpp
#include "vectormat.h"
double vectormat::argumento(void)
{
double arg;
arg = (pa.y - pb.y)/( pa.x - pb.x );
return atan(arg);
}
double vectormat::operator * (vectormat v)
{
double mod = modulo() * v.modulo();
double arg = argumento() - v.argumento();
return mod * cos(arg);
}
Ejercicio 4
Se tiene el siguiente código:
#include <iostream.h>
#include <math.h>
double sexagesimal(double rad)
{
return 180 * rad/M_PI;
}
double radianes(double sx)
{
return sx* M_PI/180;
}
double pi(void)
{
return atan(1)*4;
}
int main()
{
double (*trigfunc)(double);
double x;
}
Utilizando la variable de puntero trigfunc llamar a todas las funciones posibles y mostrar el resultado de un valor
de x ingresado por consola.
#include <iostream>
#include <cmath>
using namespace std;
double sexagesimal(double rad)
{
return 180 * rad/M_PI;
}
double radianes(double sx)
{
return sx* M_PI/180;
}
double pi(void)
{
return atan(1)*4;
}
int main()
{
double (*trigfunc)(double);
double x;
cout << "entre x ";
cin >>x;
trigfunc = radianes;
x = trigfunc(x);
cout << x << endl;
trigfunc = sexagesimal;
x = sexagesimal(x);
cout << x << endl;
return 0;
}
Descargar