Está en la página 1de 11

Universidad Nacional de Ingeniera.

Facultad de Ingeniera Mecnica.

MB545

Solucin del Examen Parcial

Profesor: Ing. Vidal Domnguez Emilio David

Datos personales
Apellido Paterno

Apellido Materno

Estrada

Soto

Nombres

Cdigo

Ayrton Junior 20090124K

__

30/05/2011

Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

1.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <dos.h>
#include <time.h>
#include <math.h>
struct HANOI
{ int tope;
int disco[10];};
//INICIALIZAR PILA
void inicializar(struct HANOI *pila )
{int i;
pila->tope = 0;
for (i=0 ; i<11 ; i++)
pila->disco[i]=0;}
//EMPEZAR
void empezar(int n, struct HANOI *pila )
{int y;
int i;
y=n;
for(i=0 ; i<n ; i++ )
{ pila->disco[pila->tope] = y; pila->tope++;y--;
}}
//----------------------------------------------------------------------------void imprimir(int n,struct HANOI *pila1 , struct HANOI *pila2, struct HANOI *pila3 )
{clrscr();
int y=17;
int cont1=0;
int cont2=0;
int cont3=0;
char a=219;
int x1=5;
int x2=30;
int x3=55;
for (int i=0; i<n ; i++)
{ gotoxy(x1,y);
for(int k=0 ; k < pila1->disco[cont1] ; k++)
{cout<<a<<a; }
cont1++;
x1++;
gotoxy(x2,y);
for(int m=0 ; m < pila2->disco[cont2] ; m++)
{cout<<a<<a; }
cont2++;
Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

x2++;
gotoxy(x3,y);
for(int r=0 ; r < pila3->disco[cont3] ; r++)
{cout<<a<<a; }
cont3++;
x3++;
y--;
gotoxy(x1,(y-2));
}getch();}
//TORRES
void funcion_hanoi(int n, struct HANOI *pila1 , struct HANOI *pila2 , struct HANOI *pila3)
{int vacio,mayor,menor;
int cuenta_mov=0;
if (n % 2 == 0 )
{char x='1';
do
{switch(x)
{case '1':
pila2->disco[pila2->tope]=pila1->disco[(pila1->tope)-1];
pila1->disco[(pila1->tope)-1]=0;
pila2->tope=(pila2->tope)+1;
pila1->tope=(pila1->tope)-1;
x='2';
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;break;
case '2':
pila3->disco[pila3->tope]=pila2->disco[(pila2->tope)-1];
pila2->disco[(pila2->tope)-1]=0;
pila3->tope=(pila3->tope)+1;
pila2->tope=(pila2->tope)-1;
x='3';
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;
if ( pila3->tope == n )
{gotoxy(37,20);cout<<"LISTO!";
gotoxy(33,21);cout<<cuenta_mov<<" MOVIMIENTOS";
getch();exit(1);}break;
case '3':
pila1->disco[pila1->tope]=pila3->disco[(pila3->tope)-1];
pila3->disco[(pila3->tope)-1]=0;
pila1->tope=(pila1->tope)+1;
pila3->tope=(pila3->tope)-1;
x='1';
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;break; };
char aux=x;
switch(aux)
{case '1':
Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

if((pila2->disco[(pila2->tope)-1] < pila3->disco[(pila3->tope)-1]) || pila3->tope == 0)


{pila3->disco[pila3->tope]=pila2->disco[(pila2->tope)-1];
pila2->disco[(pila2->tope)-1]=0;
pila3->tope=(pila3->tope)+1;
pila2->tope=(pila2->tope)-1;}
else
{pila2->disco[pila2->tope]=pila3->disco[(pila3->tope)-1];
pila3->disco[(pila3->tope)-1]=0;
pila3->tope=(pila3->tope)-1;
pila2->tope=(pila2->tope)+1;}
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;break;
case '2':
if((pila1->disco[(pila1->tope)-1] < pila3->disco[(pila3->tope)-1]) || pila3->tope == 0)
{pila3->disco[pila3->tope]=pila1->disco[(pila1->tope)-1];
pila1->disco[(pila1->tope)-1]=0;
pila3->tope=(pila3->tope)+1;
pila1->tope=(pila1->tope)-1;}
else
{pila1->disco[pila1->tope]=pila3->disco[(pila3->tope)-1];
pila3->disco[(pila3->tope)-1]=0;
pila1->tope=(pila1->tope)+1;
pila3->tope=(pila3->tope)-1;}
cuenta_mov++;
imprimir(n,pila1,pila2,pila3);break;
case '3':
if(((pila1->disco[(pila1->tope)-1] < pila2->disco[(pila2->tope)-1]) && pila1->tope!=0) ||
pila2->tope == 0)
{pila2->disco[pila2->tope]=pila1->disco[(pila1->tope)-1];
pila1->disco[(pila1->tope)-1]=0;
pila2->tope=(pila2->tope)+1;
pila1->tope=(pila1->tope)-1; }
else
{pila1->disco[pila1->tope]=pila2->disco[(pila2->tope)-1];
pila2->disco[(pila2->tope)-1]=0;
pila1->tope=(pila1->tope)+1;
pila2->tope=(pila2->tope)-1; }
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;break; };
}while(pila3->tope != n );}
else
{char x='1';
while(pila3->tope != n )
{switch(x)
{case '1':
pila3->disco[pila3->tope]=pila1->disco[(pila1->tope)-1];
pila1->disco[(pila1->tope)-1]=0;
pila3->tope=(pila3->tope)+1;
Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

pila1->tope=(pila1->tope)-1;
x='3';
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;
if ( pila3->tope == n )
{gotoxy(37,20);cout<<"LISTO!";
gotoxy(33,21);cout<<cuenta_mov<<" MOVIMIENTOS";
getch();exit(1); }break;
case '2':
pila1->disco[pila1->tope]=pila2->disco[(pila2->tope)-1];
pila2->disco[(pila2->tope)-1]=0;
pila1->tope=(pila1->tope)+1;
pila2->tope=(pila2->tope)-1;
x='1';
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;break;
case '3':
pila2->disco[pila2->tope]=pila3->disco[(pila3->tope)-1];
pila3->disco[(pila3->tope)-1]=0;
pila2->tope=(pila2->tope)+1;
pila3->tope=(pila3->tope)-1;
x='2';
imprimir(n,pila1,pila2,pila3);
cuenta_mov++;break; };
char aux=x;
switch(aux)
{case '1':
if((pila2->disco[(pila2->tope)-1] < pila3->disco[(pila3->tope)-1]) || pila3->tope == 0)
{pila3->disco[pila3->tope]=pila2->disco[(pila2->tope)-1];
pila2->disco[(pila2->tope)-1]=0;
pila3->tope=(pila3->tope)+1;
pila2->tope=(pila2->tope)-1; }
else
{pila2->disco[pila2->tope]=pila3->disco[(pila3->tope)-1];
pila3->disco[(pila3->tope)-1]=0;
pila3->tope=(pila3->tope)-1;
pila2->tope=(pila2->tope)+1; }
cuenta_mov++;
imprimir(n,pila1,pila2,pila3); break;
case '2':
if((pila1->disco[(pila1->tope)-1] < pila3->disco[(pila3->tope)-1]) || pila3->tope == 0)
{pila3->disco[pila3->tope]=pila1->disco[(pila1->tope)-1];
pila1->disco[(pila1->tope)-1]=0;
pila3->tope=(pila3->tope)+1;
pila1->tope=(pila1->tope)-1; }
else
{pila1->disco[pila1->tope]=pila3->disco[(pila3->tope)-1];
pila3->disco[(pila3->tope)-1]=0;
Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

pila1->tope=(pila1->tope)+1;
pila3->tope=(pila3->tope)-1; }
cuenta_mov++;
imprimir(n,pila1,pila2,pila3);break;
case '3':
if(((pila1->disco[(pila1->tope)-1] < pila2->disco[(pila2->tope)-1]) && pila1->tope!=0) ||
pila2->tope == 0)
{pila2->disco[pila2->tope]=pila1->disco[(pila1->tope)-1];
pila1->disco[(pila1->tope)-1]=0;
pila2->tope=(pila2->tope)+1;
pila1->tope=(pila1->tope)-1; }
else
{pila1->disco[pila1->tope]=pila2->disco[(pila2->tope)-1];
pila2->disco[(pila2->tope)-1]=0;
pila1->tope=(pila1->tope)+1;
pila2->tope=(pila2->tope)-1; }
cuenta_mov++;
imprimir(n,pila1,pila2,pila3);break;
};}}}
//PRINCIPAL
void main()
{int n;
struct HANOI p1;
struct HANOI p2;
struct HANOI p3;
inicializar(&p1);
inicializar(&p2);
inicializar(&p3);
otra_vez:
clrscr();
cout<<"\n\n\n--------------------------------------------------------------------------------";
cout<<"------------------------------- TORRES DE HANOI ------------------------------";
cout<<"--------------------------------------------------------------------------------";
cout<<"\n\n\n\n\n\n
CON CUANTOS DISCOS ??? \n
";cin>>n;
if (n<11)
{empezar(n,&p1);
imprimir(n,&p1,&p2,&p3);
funcion_hanoi(n,&p1,&p2,&p3);
imprimir(n,&p1,&p2,&p3);}
else
{clrscr();
goto otra_vez;}}

Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

2.
#include<iostream.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<conio.h>
double generar(){
double r;
Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

long i;
i=rand()%1000;
r=pow(-1,i)*(rand()%10001)/10000.0;
return(r);
}
double radio (double x, double y){
double r;
r=sqrt(pow(x,2)+pow(y,2));
return(r);
}
main(){
double a[2][50000];
int i;
long j,n;
cout<<"Ingresa el numero de coordenadas a generar: ";cin>>n;
cout<<"\n";endl;
randomize();
for(j=0;j<n;j++){
for(i=0;i<=1;i++){
a[i][j]=generar();
cout<<a[i][j]<<" ";}
cout<<endl; }
i=0;
for(j=0;j<n;j++){
if(radio(a[0][j],a[1][j])<=1){
i++;}}
cout<<"\n";endl;
cout<<"Dentro del circulo=> "<<i<<endl;
cout<<"\n";endl;
cout<<"Probabilidad dentro del circulo=> "<<i*1.0/n<<endl;
cout<<"\n";endl;
cout<<"Supuesto pi=> "<<i*4.0/n<<endl;
getch();}

Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

3.
#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
void main()
{int n;
int a[30],i,cambio,temp,med;
clrscr();
randomize();
cout<<"Ingrese el # de datos de la muestra=>";cin>>n;
cout<<"\n";endl;
cout<<"Los valores de la muestra son:";endl;
cout<<"\n";endl;
for(i=1; i<=n;i++)
{
a[i]=random(10)+1;}
for(i=1;i<=n;i++)
{
cout<<a[i]<<endl;}
cambio=1;
while (cambio)
{cambio=0;
for(i=1;i<=n;i++)
if(a[i]>a[i+1])
{temp=a[i];
a[i]=a[i+1];
Programacion: Solucionario del examen parcial

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

a[i+1]=temp;
cambio=1;
}
}
cout<<"\n";endl;
cout<<"Los valores ordenados de la muestra son:";endl;
cout<<"\n";endl;
for(i=1;i<=n;i++)
{
cout<<a[i]<<endl;}
if(n%2==0)
{
med=n/2;
cout<<"\n"<<endl;
cout<<"Los valores de la mediana son=> "<<a[med]<<" "<<a[med+1]<<endl;
cout<<"\n";endl;}
else
{
med=(n+1)/2;
cout<<"\n"<<endl;
cout<<"El valor de la mediana es=> "<<a[med];endl;
cout<<"\n";endl;}
getch();
}

Programacion: Solucionario del examen parcial

10

Universidad Nacional de Ingeniera.


Facultad de Ingeniera Mecnica.

Programacion: Solucionario del examen parcial

11

También podría gustarte