jueves, 28 de febrero de 2013

Ejercicios 1. - C++


Ejercicios parte 1:

1.- Escribir un programa que pida la fecha de nacimiento de una persona e imprima en pantalla su signo signo zodiacal.



#include <cstdlib>
#include <iostream>
using namespace std;
int main() 
{
    int dia,mes,ano;
cout << "    TU SIGNO ZODIACAL INGRESA TU FECHA DE NACIMIENTO ";
cout << "\n\nDIA: ";
        cin >> dia;
cout << "MES: ";
        cin >> mes;
cout << "ANO: ";
        cin >> ano;
switch(mes)
{
      case 1: if(dia<21) 
                         cout<<"\nCAPRICORNIO";
              else       
                         cout<<"\nACUARIO"; break;
      case 2: if(dia<20) 
                         cout<<"\nACUARIO";
              else       
                         cout<<"\nPICIS"; break;
      case 3: if(dia<21) 
                         cout<<"\nPICIS";
              else       
                         cout<<"\nARIES"; break;
      case 4: if(dia<21) 
                         cout<<"\nARIES";
              else       
                         cout<<"\nTAURO"; break;
      case 5: if(dia<21) 
                         cout<<"\nTAURO";
              else       
                         cout<<"\nGEMINIS"; break;
      case 6: if(dia<22) 
                         cout<<"\nGEMINIS";
              else       
                         cout<<"\nCANCER"; break;
      case 7: if(dia<23) 
                         cout<<"\nCANCER";
              else       
                         cout<<"\nLEO"; break;
      case 8: if(dia<23) 
                         cout<<"\nLEO";
              else       
                         cout<<"\nVIRGO"; break;
      case 9: if(dia<23) 
                         cout<<"\nVIRGO";
              else       
                         cout<<"\nLIBRA"; break;
      case 10: if(dia<23)
                         cout<<"\nLIBRA";
              else       
                         cout<<"\nESCORPIO"; break;
      case 11: if(dia<22)
                         cout<<"\nESCORPIO";
              else       
                         cout<<"\nSAGITARIO"; break;
      case 12: if(dia<22)
                         cout<<"\nSAGITARIO";
              else       
                         cout<<"\nCAPRICORNIO"; break;
   default:cout<<"\nDATOS INCORRECTOS";
}

    return 0;
}


2.- Escribir un programa para calcular el importe de una venta en un supermercado. El usuario debe de indicar el nombre del producto, el precio por unidad, el número de unidades y el programa sacará en pantalla el nombre del producto, el número de unidades vendidas y el precio total. Preste atención a que tipo de datos resulta más adecuado para representar cada cantidad.


#include <cstdlib>
#include <iostream>
using namespace std;
int main() 
{
    string producto;
    int unidades;
    float precio_total,p_uni;
    cout <<"NOMBRE DEL PRODUCTO: ";
    cin >> producto;
    
    cout <<"PRECIO UNITARIO: ";
    cin >> p_uni;
    
    cout <<"NO. DE UNIDADES: ";
    cin >> unidades;
    
    precio_total=(p_uni*unidades);
    
    cout <<"\n NOMBRE DEL PRODUCTO: " << producto;
    cout <<"\n UNIDADES VENDIDAS: " << unidades;
    cout <<"\n PRECIO TOTAL: " << precio_total << "\n";
    return 0;
}


3.- Generar un lote de m de 100 números aleatorios, el cual es considerado el universo total. Obtener una muestra de tamaño  n en el cual se encontrarán todos los números primos posibles y mencionar cuantos hay.




#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
int main() 
{
    int lote[100],muestra,c_primos=0; 
    bool primo;
    
    for (int i=0; i<100; i++)
    {
        lote[i]=(random()%1000);
        cout << lote[i] << ",";
    }

    cout << "\n\nNO. DE MUESTRA: ";
    cin >> muestra;
    cout << "\n\n";

    
        for (int conta=0; conta<muestra; conta++)
        {  
            
        if (lote[conta]!=1)
        {
        primo=true;

        for (int conta2=lote[conta]-1; 
                conta2>1; 
                conta2--)
        if ((lote[conta]%conta2)==0)
        primo=false;
                if (primo==true)
                {
                        c_primos++;
                        cout << lote[conta] << ",";
                }
        }
        }
        cout<<"\n\nTotal de numeros primos: " << c_primos << "\n"; 
    
    return 0;
}


4.- Generar valores entre 1 y 6 de manera aleatoria, comparar dichos resultados, los cuales se deben de encontrar los siguientes resultados, par, dos_par, tercia, poquer, quintilla, full, todos diferentes. Tratando de emular el juego del cubilete.




5.- Protector de pantalla. Mostrar una ventana con un fondo blanco sin su barra de título ni bordes de acción como minimizar, maximizar - restaurar o cerrar. Debe aparecer un logo moviéndose dentro de los límites de toda la pantalla. 

La ventana debe de adoptar la resolución de la pantalla donde sea ejecutada la aplicación, es decir, debe de aparecer maximizada. Únicamente se termina la aplicación (protector) al presionar la tecla ENTER, ninguna otra tecla.



6.- Aplicación del teorema de pitágoras, donde se puede obtener la hipotenusa, así como cualquiera de sus lados.

#include <cstdlib> 
#include <iostream>
#include <cmath> 
using namespace std;

void hipotenusa()
{
    float lado1, lado2, hipotenusa;  
    cout << " \n---------- Calculando de la hipotenusa ---------- \n";  
    cout << "Primer lado: "; 
    cin >> lado1; 
    cout <<"Segundo lado: "; 
    cin >> lado2;  
hipotenusa = sqrt(lado1*lado1 + lado2*lado2);  
cout << "\nLa hipotenusa mide :" << hipotenusa; 
}

void lado()
{
    float ladox, ladoy, hipo;  
    cout << " \n---------- Calculando el lado ---------- \n";  
    cout << "Dame la hipotenusa: "; 
    cin >> hipo; 
    cout <<"Dame un lado: "; 
    cin >> ladoy;  
    ladox= sqrt(hipo*hipo - ladoy*ladoy );  
cout << "\nEl lado X mide :" << ladox; 
}

void menu()
{
  int opc=0,salir;
        do
        {
            cout << "\n\n................";    
            cout << "\n  1) Hipotenusa";
            cout << "\n  2) Lado";
            cout << "\n  3) Salir";
            cout << "\n................";
            cout << "\n\n Opcion: ";
                cin>>opc;
                switch (opc)
        {
                case 1: hipotenusa();break;
                case 2: lado();break;
                case 3: salir=1;break;
                default :cout << "\n\nOpcion no valida...\n";break;
        }
        }while (salir!=1);
}
int main()
{
   menu();
   return 0;
}

7.- Generación del triángulo de pascal, que es un conjunto infinito de números enteros que se encuentran ordenados en forma triangular, allí están expresados los coeficientes binomiales. Estos coeficientes corresponden a una serie de  números estudiados en combinatoria. Se encargan de indicar la cantidad de formas en que pueden ser extraídos subcojuntos, partiendo de un conjunto determinado.

En el ejemplo se visualizan 10 líneas del triángulo de pascal.


#include <cstdio>
#include <iostream>
#include <iomanip>
using namespace std;
int main(int argc, char *argv[])
{ 
   int triangulo[11];
   int n=11;
   int x, i, j;
   x=0;
   for (i=1; i<=n ; i++)
   {
         for (j=x; j>=0; j--)
         {
             if(j==x || j==0)
             {
                  triangulo[j] = 1;
             }
             else
             {
                  triangulo[j] = triangulo[j] + triangulo[j-1];
             }
         }
        x++;
        cout << "\n";
        //Truco para imprimir el triangulo
        for (j=1; j<=n-i; j++)
             cout <<"  ";
 
        for(j=0; j<x; j++)
        {
             cout << setw(4) << triangulo[j];
        }
   }
return 0;
}


8.- Libreria GLUT, creación de menús y submenús que surgen efecto al dar clic con el botón derecho de nuestro mouse. 





#include <GL/glut.h>
static int window;
static int menu_id;
static int submenu_id;
static int value = 0;
void menu(int num){
  if(num == 0){
    glutDestroyWindow(window);
    exit(0);
  }else{
    value = num;
  }
  glutPostRedisplay();
}
void createMenu(void){     submenu_id = glutCreateMenu(menu);
    glutAddMenuEntry("Esfera", 2);
    glutAddMenuEntry("Cono", 3);
    glutAddMenuEntry("Tetera", 4);     menu_id = glutCreateMenu(menu);
    glutAddMenuEntry("Limpiar", 1);
    glutAddSubMenu("Dibujar", submenu_id);
    glutAddMenuEntry("Salir", 0);     glutAttachMenu(GLUT_RIGHT_BUTTON);
}
void display(void){
  glClear(GL_COLOR_BUFFER_BIT);   if(value == 1){
    glutPostRedisplay();
  }else if(value == 2){
    glPushMatrix();
    glColor3d(1.0, 0.0, 0.0);
    glutWireSphere(0.5, 50, 50);
    glPopMatrix();
  }else if(value == 3){
    glPushMatrix();
    glColor3d(0.0, 1.0, 0.0);
    glRotated(65, -1.0, 0.0, 0.0);
    glutWireCone(0.5, 1.0, 50, 50);
    glPopMatrix();
  }else if(value == 4){
    glPushMatrix();
    glColor3d(1.0, 0.0, 1.0);
    glutSolidTeapot(0.5);
    glPopMatrix();
  }
  glFlush();
}
int main(int argc, char **argv)
{     
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGBA | GLUT_SINGLE);
    glutInitWindowSize(500,500);
    glutInitWindowPosition(100,100);
    window = glutCreateWindow("Menu y submenus");
    createMenu();     
    glClearColor(0.0,0.0,0.0,0.0);
    glutDisplayFunc(display);     
    glutMainLoop();
    return 0;
}


9.- Serie de fibonacci, una de las aplicaciones de recursividad en el que se empieza con un "0", luego un "1" y de ahí los números resultantes se van sumando con su anterior. 0 1 1 2 3 5 8...n

#include <cstdlib> 
#include <iostream>
using namespace std;
int fibonacci(int n)
{
    if (n<2)
        return n;
    else
        return fibonacci(n-1) + fibonacci(n-2);
}
int main() 
{
    int num=0,res=0;
    cout << "Introduce el numero de numeros: ";
    cin >> num;
    for(int i=0;i<=num-1;i++)
    {
        res = fibonacci(i);
        cout << res << " ";
    }
    return 0;
}



10.- Resolviendo ecuaciones de 2do. grado: ax2 +bx +c = 0

Ejemplo: 


Nota:
Si b2 - 4ac > 0 la ecuación tiene dos raíces distintas.
Si b2 - 4ac = 0 la ecuación tiene una sola raíz.
Si b2 - 4ac < 0 la ecuación no tiene raíces y en este programa se expresa como "nan"

#include <cstdlib> 
#include <iostream>
#include <cmath>
using namespace std;
int main() 
{
        double a, b, c, x1, x2;
        cout << "Ingrese el valor de a: ";
        cin >> a;
        cout << "\nIngrese el valor de b: ";
        cin >> b;
        cout << "\nIngrese el valor de c: ";
        cin >> c;
        x1= (-b + sqrt((b*b)-4*(a*c))) /(2 * a);
        x2= (-b - sqrt((b*b)-4*(a*c))) / (2 * a);
        cout << "\n\nValor de x1: " << x1;
        cout << "\nValor de x2: " << x2;
    return 0;
}


11.- Suma de dos números mediante un espacio de por medio, los cuales son pedidos por teclado.
Ejemplo:
     Entrada: 10 30
     Salida: 40 

#include <cstdlib> 
#include <iostream>
using namespace std;
int main() 
{
    int suma,num1,num2;
    cout << "NUMEROS A SUMAS SEPARADOS POR UN ESPACIO: ";
    cin >> num1 >> num2;
    suma=num1+num2;
    cout << "\nLA SUMA DE LOS NUMEROS ES: " << suma;
    return 0;
}

No hay comentarios:

Publicar un comentario