jueves, 18 de julio de 2013

Clases y punteros

#include<iostream>
#include "Recta.h"
using namespace std;
int main(){
  Recta L1;
  Recta* L2=new Recta;
  //L1.define(4,6,1);
  L2->define(-3,1,4);
  cout<<"m1="<<L1.m()<<endl;
  cout<< (L1.pertenece(-0.5,0.5)?"Si ":"No ")<<"pertenece."<<endl;
  cout<< (L1.pertenece(0.5,-0.5)?"Si ":"No ")<<"pertenece."<<endl;
  cout<< (L1.esParalelaA(*L2)?"Si ":"No ")<<"es paralela."<<endl;
  cin.get();  
}
// archivo de cabecera Recta.h
#ifndef RECTA_H
#define RECTA_H
class Recta {
    private:
      float A,B,C;   
    public:
      float m();
      bool pertenece(float,float);
      void define(float, float , float );
      bool esParalelaA(Recta);
};
#endif
// archivo Recta.cpp
#include "Recta.h"
float Recta::m(){
            return -A/B;
};
bool Recta::pertenece(float x,float y){
           return (A*x+B*y+C==0);
};
void Recta::define(float AA, float BB, float CC){
           A = AA; B=BB;C=CC;
};
bool Recta::esParalelaA(Recta R){
           return (m()==R.m());
};

//archivo Principal.cpp
#include<iostream>
#include "Recta.h"
using namespace std;
int main(){
  Recta L1, L2;
  L1.define(4,6,1);
  L2.define(-3,1,4);
  cout<<"m1="<<L1.m()<<endl;
  cout<< (L1.pertenece(-0.5,0.5)?"Si ":"No ")<<"pertenece."<<endl;
  cout<< (L1.pertenece(0.5,-0.5)?"Si ":"No ")<<"pertenece."<<endl;
  cout<< (L1.esParalelaA(L2)?"Si ":"No ")<<"es paralela."<<endl;
  cin.get();  
}

Teoria de clases

Teoria de clases

jueves, 11 de julio de 2013

GUÍA DE EJERCICIOS



GUÍA DE EJERCICIOS


1.     Escribir un programa  que permita el ingreso repetido de dos números y mediante una función que tenga como argumentos los números,  muestre los números primos entre ellos. El programa debe solicitar el ingreso de dos nuevos números hasta que el primer número sea cero.

2.     Escribir un programa  que permita el ingreso repetido de dos números y mediante una función que tenga como argumentos los números, retorne (mediante la instrucción return de la función) el máximo común divisor  entre ellos. El método utilizado por la función debe ser   el método de divisiones sucesivas.
      El programa principal debe solicitar el ingreso de dos nuevos números hasta que el primer número sea cero y debe controlar que el segundo sea diferente de cero.
Nota:
Determinación del MCD(38, 16) mediante el algoritmo de Euclides o de divisiones sucesivas:
Dividendo= 38, Divisor= 16, Residuo=6.
NuevoDividendo= 16, NuevoDivisor= 6, NuevoResiduo=4.
NuevoDividendo= 6, NuevoDivisor= 4, NuevoResiduo=2.
NuevoDividendo= 4, NuevoDivisor= 2, NuevoResiduo=0.
      El 38 y 16 contienen exactamente al 2. El MCD(38, 16)= 2.
      El residuo de dividir dos números está contenido un número exacto de veces.

3.     Escribir un programa que permita el ingreso repetido de un número cualquiera  y mediante una función que tenga como argumento dicho número retorne el número que resulta al invertir el orden de sus cifras.
Nota: long int es un entero no mayor de 4,294,967,295.

4.     Escribir un programa  que implemente una calculadora simple de cuatro operaciones. La función principal debe controlar el ingreso de los operadores correctos así también como el intento de dividir entre cero. Debe invocarse a una función que reciba los operandos y el operador y retorne el resultado del cálculo.

5.   Un vendedor minorista de útiles de escritorio ha decidido realizar la siguiente promoción de ventas:
      a.   Por la compra de cada lápiz FABER CASTELL se regalaran 3 borradores y 1 tajador.
b.   Para impulsar la venta de los lápices UNI ha decidido otorgar un descuento de 7% sobre el precio de venta.
c.   Para financiar la promoción recargará el precio de lápiz STANDLER con el 10%  sobre el precio de venta.

El siguiente cuadro muestra el código y precio de venta de cada marca de lápiz:

CODIGO                 MARCA                                PRECIO ( S/. )
1                                FABER CASTELL               0.80
2                                UNI                                        1.20
3                                STANDLER                          1.40

Escribir un programa que mediante una función muestre los datos de código, marca y precio.
Otra función deberá contabilizar las ventas y obsequios. Esta función permitirá, mediante un proceso repetitivo, el ingreso de un código (0 para terminar) y controlará un código erróneo.
Por cada venta se ingresa el código del lápiz y la cantidad vendida.

La función principal debe mostrar la siguiente información:
- Cantidad de lápices vendidos por cada marca.
- La cantidad de borradores y tajadores obsequiados.
-   El importe total de las ventas realizadas.

6.   Escribir un programa que invoque a una función seno que reciba el valor de un ángulo X y retorne el valor del seno del ángulo.
      La función debe considerar la siguiente serie:

      Seno(x) = x    x3 / 3!  +   x5 / 5!      x7 / 7  +  ..
 
      Con un error menor que 0.00001 (valor absoluto del último término debe ser menor que el error).
      La función principal debe controlar que el ángulo esté en el rango de -0.78 < x < 0.78.

7.   Escribir un programa que permita el ingreso de un número cualquiera. Se debe solicitar el ingreso de un nuevo número hasta que se ingrese cero.
      El programa debe invocar a una función que tenga como argumento dicho número y retorne la suma de sus factores primos.
      Nota:
      Se conoce que factores primos de un número son aquellos primos que factorizan (o dividen) al número. Así también número primo es aquel que solo es divisible por si mismo y por la unidad.
      Ejemplo:
      Factores primos de 132 son: 2 2 3 11
      Demostracion: 2x2x3x11= 132

8.   Escribir un programa que procese el movimiento bancario de una cuenta. Se ingresa por teclado el número de cuenta y su saldo actual. Seguidamente el programa debe mostrar por pantalla y mediante la llamada a una función los tipos de movimientos posibles:

TIPO DE MOVIMIENTOS

(1)  DEPOSITO
(2)  RETIRO
(0)  FIN

      Otra función debe solicitar repetidamente el ingreso de un tipo de movimiento y la cantidad a depositar o  retirar.
      Si se ingresa un tipo de movimiento equivocado, se debe mostrar el mensaje de movimiento no válido.
      Si se ingresa 0 la función debe terminar.
      La función principal debe mostrar el número de cuenta, el saldo inicial, número de depósitos, número de retiros, total de depósito, total de retiros y saldo actual.

      Nota: no usar variables globales

9.   Escribir un programa que permita el ingreso de:
 - Monto de dinero a depositar en el banco.
 - Tasa de interés anual.
 - Número de años de depósito.

Luego el programa debe invocar a una función recursiva que  calcule el capital existente.
La función debe tener como argumentos dichas valores y debe retornar el capital obtenido.

10.    Escribir un programa que permita ingresar el número de elementos de la siguiente serie y calcule el valor de s.

         s = F(0) - F(1) + F(2) - ... F(n)

         F(x): 

                0                                                :                           si x = 0
                1                                               :                            si x = 1
                F( x - 1 ) + F( x - 2 )            :                             si x > 1

11.    Escribir un programa que calcule el MCD de dos números utilizando una función recursiva del método de divisiones sucesivas.


Declaracion de funciones

Teoria de funciones https://sites.google.com/site/programacionparaingeneria/FUNC.PPT

// Muestra el uso de una funcion para mostrar un mensajes.
// ------------------------------------------------------------
#include <iostream>
using namespace std;
//-----------------Prototipo de la funcion--------------------
void mostrarMensaje();
float elMayorEs(float, float);
//-------------Definicion de la funcion principal--------------
int main(){
    cout<<"Antes de llamar a la funcion..."<<endl;
    mostrarMensaje();                // Llamada a la funcion
    cout<<"Despues de llamar a la funcion..."<<endl;
    cout<<"El mayor entre 3 y 5 es "<<elMayorEs(3,5)<<endl;
    cin.get();
}
void mostrarMensaje()
{
    cout<<"Mensaje de prueba"<< endl;
}
float elMayorEs(float a, float b){
    return (a>b)?a:b;
}
 // uso de parametros
using namespace std;
void cambio_de_valor(float antiguo)
{ //parametros por valor
   float nuevo;
   cout<<"Ingrese nuevo valor ";
   cin>>nuevo;
   antiguo=nuevo;  
   cout<<"Nuevo valor "<<antiguo<<endl;
}
void parametro_por_referencia(float& antiguo){
   float nuevo;
   cout<<"Ingrese nuevo valor ";
   cin>>nuevo;
   antiguo=nuevo;  
}
int main(){
    float x=3.14;
    cambio_de_valor(x);// se copia el valor de x
    cout<<"El valor de x es "<<x<<endl;//no hay cambio en x
    parametro_por_referencia(x);// se usa x
    cout<<"El valor de x es "<<x<<endl;//si hay cambio en x   
    cin.get();    cin.get();
}

Notas de la segunda practica


Alumno PC1 PC2 EP
AGUIRRE MÜLLER BRAYAN JEISON 14 07 08
ALVINO LINARES INGRID NSP NSP NSP
ARNAO ALARCON JUAN SALVADOR 16 06 12
BARAHONA HUAPAYA MARTIN FERNANDO NSP NSP 06
BAUTISTA HUARANCCA JERSON ABEL 13 09 13
BAUTISTA VENTURA ELVIS RONALD 14 04 04
CACERES CESPEDES YOSEPH MICHAEL 09 NSP 06
CACERES FLORES GIAN FRANCIS 15 04 05
CANCINO BORDA NICK REISO NSP NSP NSP
CEBRIAN HERNANDEZ MARX WILIAMS 14 04 10
CHAVEZ CALLE OSCAR AUGUSTO 07 01 12
CIRIACO SUSANIBAR NICOLH ANTONY 14 01 04
CUARESMA TITO LUIS CHRISTIAN 15 NSP 01
DELGADO HUANCA OSCAR BRIAN 09 12 11
GARCÍA ARELLANO CARLOS ABEL NSP NSP 12
GUILLEN ASTORAYME JHON MELANIO 14 04 11
HUAMAN ARANCIBIA FERNANDO HUGO 15 NSP 01
LA ROSA ABARCA DEYVI CARLOS 17 11 06
LEON YAMASAKI IRWIND ALEJANDRO NSP NSP NSP
LOZANO HUAMANI YUDITH ROSARIO 14 04 06
MACHACA SAAVEDRA MELINA 12 09 12
MALDONADO JIMENEZ JOE ABEL 12 04 11
ñaupari 13 01 07
OSCCO PUCLLAS BRAYAN EMANUEL NSP NSP NSP
PRIALE VIVIANO DANIEL JESUS 11 01 05
QUISPE DIAZ ROBIN ALEXANDRO 14 01 04
QUISPE QUISPE JANET KETY 09   08 07
SILVA ZEVALLOS HUGO ELISEO 12   11 01
SOTELO TOLENTINO IVAN FAUSTINO 14 NSP NSP
VELASQUEZ HUAMAN YAN KENEDY 06 04 10
VILLEGAS ZEA JORGE LUIS NSP NSP NSP
condor 17 NSP 14
garcia tenorio 10 NSP 06
laurente NSP 08 11
cotrina 14 09 08
juan rojas jara 16 NSP NSP
sanchez hilaseca jorge 9 NSP NSP