Segundo Parcial resuelto - Catedras de Informática I y II

Anuncio
SEGUNDO PARCIAL INFORMATICA II
Tema 1
Hacer un programa en C++ que realice lo siguiente:
a.
b.
Generar los primeros 100 números enteros comenzando en 1 y guardar los impares en una pila y los pares en una cola.
Mostrar todos los números de la pila y de la cola.
Nota. No hace falta desarrollar los métodos de las clases pila y cola.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i;
class pila p;
class cola c;
for( i = 1; i <=100; i+=2 )
{
p.push(i);
c.put(i+1);
}
while( ! p.vacia() )
{
cout<<p.pop()<<'\t';
}
cout << endl;
while( ! c.vacia() )
{
cout<<c.get()<<'\t';
}
return 0;
}
Tema 2
Hacer un programa en C++ que realice lo siguiente:
a.
b.
c.
Ingresar un número real positivo.
Calcular la raíz cuadrada utilizando el método iterativo dado en clases empleando solo cinco iteraciones.
Indicar los errores absolutos y relativo porcentual considerando como “valor verdadero” el valor obtenido mediante el llamado
a la función de librería sqrt().
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char *argv[]) {
double h, x, b, y;
int i;
cout << "entre un numero positivo ";
cin>>x;
b = 1;
for(i=0;i<5;i++)
{//algoritmo para el cálculo
h = x / b;
b = (b+h)/2;
}
cout << b << endl;
cout<<b<<endl;
y = sqrt(x);
cout<<"valor verdadero " << y << endl;
cout << "error absoluto "<< fabs(y-b)<<endl;
cout << "error porcentual " << fabs( (b-y)/y )*100.00 << " %"3<<endl;
return 0;
}
Tema 3
Se tiene el siguiente problema:
a.
b.
c.
Ingresar un número entero entero.
Ir mostrando sucesivamente las divisiones enteras por 2 hasta llegar a cero.
Hacer un programa en C++ que lo realice en forma normal y otro llamando a un procedimiento recursivo.
#include <iostream>
using namespace std;
void mostrarmitades(int n )
{
if( n > 0 )
{
cout << n<<'\t';
mostrarmitades(n/2);
}
}
int main(int argc, char *argv[]) {
int n;
cout << "entre numero entero ";
cin >> n;
mostrarmitades(n);
return 0;
}
GRAFICAS
Grupo 1
Hacer un programa visual de modo que el formulario principal sea como el de la figura:
Este estará compuesto de los siguientes objetos:
Cinco paneles
Dos Botones
Un temporizador
Al presionar el botón “Iniciar”, cada 500 milisegundos los paneles cada uno a la vez irán cambiando de color en
forma aleatoria. Dicho cambio de color se realiza mediante el llamado al método de la clase del formulario
CambiarColor declarado como privado cuyo código es el siguiente:
TColor TForm1::CambiarColor(void)
{
unsigned int r,v,a;
r = random(256);
v = random(256);
a = random(256);
return (TColor)RGB( r, v, a );
}
El botón Iniciar, además de iniciar el proceso, se deshabilita a sí mismo y habilita el botón Detener . Al presionar
dicho botón, además de detener el proceso, se deshabilita a sí mismo y habilita al botón Iniciar.
Se pide:
Sobrecargar los eventos correspondientes para que el programa funcione de la manera requerida.
Declarar métodos, atributos, interceptar los eventos necesarios e incorporar el método “CambiarColor” al
formulario.
Solucion del ejercicio
Archivo de Cabecera:
//--------------------------------------------------------------------------#ifndef Unit1H
#define Unit1H
//--------------------------------------------------------------------------#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>
//--------------------------------------------------------------------------class TForm1 : public TForm
{
__published:
// IDE-managed Components
TPanel *Panel1;
TPanel *Panel2;
TPanel *Panel3;
TPanel *Panel4;
TBitBtn *BitBtn1;
TBitBtn *BitBtn2;
TTimer *tm1;
TPanel *Panel5;
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall tm1Timer(TObject *Sender);
void __fastcall BitBtn2Click(TObject *Sender);
private:
TColor __fastcall CambiarColor(void);
// User declarations
int prox;
public:
// User declarations
__fastcall TForm1(TComponent* Owner);
};
//--------------------------------------------------------------------------extern PACKAGE TForm1 *Form1;
//--------------------------------------------------------------------------#endif
Archivo de código
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <stdlib.h>
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
prox = 0;
}
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
randomize();
tm1->Enabled = true;
}
//---------------------------------------------------------------------------
TColor __fastcall TForm1::CambiarColor(void)
{
unsigned int r,v,a;
r = random(256);
v = random(256);
a = random(256);
return (TColor)RGB( r, v, a );
}
void __fastcall TForm1::tm1Timer(TObject *Sender)
{
switch( prox )
{
case 0:
Panel5->Color = CambiarColor();
break;
case 1:
Panel1->Color = CambiarColor();
break;
case 2:
Panel2->Color = CambiarColor();
break;
case 3:
Panel3->Color = CambiarColor();
break;
case 4:
Panel4->Color = CambiarColor();
break;
}
prox ++;
prox = (prox >5)?0:prox;
}
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
tm1->Enabled = false;
}
//---------------------------------------------------------------------------
Grupo 2
Hacer un programa visual de modo que el formulario principal sea como el de la figura:
Este estará compuesto de los siguientes objetos:
Dos botones
Un panel
Un objeto TShape incrustado en el panel con formato de círculo.
Un Temporizador.
Al presionar el botón iniciar el objeto TShape éste cambia de posición hacia la derecha en saltos de 100 píxeles
cada 500 milisegundos. Al llegar al final, comienza de nuevo desde la izquierda y así indefinidamente.
El cambio de color se realiza mediante el llamado al método de la clase del formulario CambiarColor declarado
como privado cuyo código es el siguiente:
TColor TForm1::CambiarColor(void)
{
unsigned int r,v,a;
r = random(256);
v = random(256);
a = random(256);
return (TColor)RGB( r, v, a );
}
El botón Iniciar, además de iniciar el proceso, se deshabilita a sí mismo y habilita el botón Detener . Al presionar
dicho botón, además de detener el proceso, se deshabilita a sí mismo y habilita al botón Iniciar.
Se pide:
Sobrecargar los eventos correspondientes para que el programa funcione de la manera requerida.
Declarar métodos, atributos, interceptar los eventos necesarios e incorporar el método “CambiarColor” al
formulario.
Solución del Ejercicio
Archivo de Cabecera.
//--------------------------------------------------------------------------#ifndef Unit1H
#define Unit1H
//--------------------------------------------------------------------------#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Buttons.hpp>
#include <ExtCtrls.hpp>
//--------------------------------------------------------------------------class TForm1 : public TForm
{
__published:
// IDE-managed Components
TBitBtn *BitBtn1;
TTimer *Timer1;
TBitBtn *BitBtn2;
TPanel *Panel1;
TShape *Shape1;
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall Timer1Timer(TObject *Sender);
void __fastcall BitBtn2Click(TObject *Sender);
private: // User declarations
TColor CambiarColor(void);
public:
// User declarations
__fastcall TForm1(TComponent* Owner);
};
//--------------------------------------------------------------------------extern PACKAGE TForm1 *Form1;
//--------------------------------------------------------------------------#endif
Archivo de Código
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//--------------------------------------------------------------------------void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Timer1->Enabled = true;
randomize();
BitBtn1->Enabled = false;
BitBtn2->Enabled = true;
Shape1->Left = 0;
Shape1->Brush->Color = CambiarColor();
Shape1->Visible = true;
}
//--------------------------------------------------------------------------void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
Shape1->Left = Shape1->Left +100;
if( (Shape1->Left + Shape1->Width) > (Panel1->Left + Panel1->Width) )
{
Shape1->Left = 0;
}
Shape1->Brush->Color = CambiarColor();
}
//--------------------------------------------------------------------------TColor TForm1::CambiarColor(void)
{
unsigned int r,v,a;
r = random(256);
v = random(256);
a = random(256);
return (TColor)RGB( r, v, a );
}
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
BitBtn2->Enabled = false;
BitBtn1->Enabled = true;
Timer1->Enabled = False;
}
//---------------------------------------------------------------------------
Descargar