Ejemplos y/o ejercicios de programacion

Publicado en 'Programación' por bryan, 30 Ene 2011.





  1. bryan

    bryan Miembro nuevo

    Registro:
    26 Ago 2007
    Mensajes:
    36
    Likes:
    1




    Muestra tus ejemplos y/o ejercicios de programacion resueltos ya sea C++, JAVA, etc.

    Mi funcion que contiene numero invertido, numero de cifras, numero de divisores y si un numero es primo:
    HTML:
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    int menu();
    int num_inv(int a);
    int num_cif(int a);
    int num_div(int a);
    void num_pri(int a);
    int menu()
    {
     int opc;
     cout<<"BIENVENIDO";
     cout<<"\n\n-----SELECCIONE UNA OPCION-----";
     cout<<"\n\n";
     cout<<"1=Numero Invertido"<<"\n"<<"2=Numero de Cifras"<<"\n"<<"3=Numero de Divisores"<<"\n"<<"4=Numero Primo"<<"\n"<<"0=Salir";
     cout<<"\n\nIngrese una opcion: ";cin>>opc;
     return opc;
    }
    int num_inv(int a)
    {
     int coc,res,num_i=0;
     while(a>0)
     {
      coc=a/10;
      res=a%10;
      num_i=num_i*10 + res;
      a=coc;
     }
     return num_i;
    }
    int num_cif(int a)
    {
     int coc,cont_c=0;
     while(a>0)
     {
      coc=a/10;
      cont_c = cont_c + 1;
      a=coc;
     }
      return cont_c;
    }
    int num_div(int a)
    {
     int num_d=0;
     for(int i=1;i<=a;i++)
     {
      if(a%i==0)
      num_d = num_d + 1;
     }
     return num_d;
    }
    void num_pri(int a)
    {
     int i,s_d=0;
     for(i=1;i<=a;i++)
     {
      if(a%i==0)
      {
       s_d +=1;
      }
     }
     if(s_d<3)
     {
      cout<<"El numero "<<a<<" es un numero primo";
     }
     else
     {
      cout<<"El numero "<<a<<" no es un numero primo";
     }
    }
    void main()
    {
     int opcion, num, num_i, cont_c, cont_d;
     do
     {
      opcion = menu();
      switch(opcion)
      {
       case 1: cout<<"\nSELECCIONASTE LA OPCION NUMERO INVERTIDO";
               cout<<"\n\nIngrese el numero: "; cin>>num;
               num_i = num_inv(num);
               cout<<"\nEl numero invertido es: "<<num_i<<endl;
               break;
       case 2: cout<<"\nSELECCIONASTE LA NUMERO DE CIFRAS";
               cout<<"\n\nIngrese el numero: "; cin>>num;
               cont_c = num_cif(num);
               cout<<"\nEl numero de cifras es: "<<cont_c<<endl;
               break;
     case 3: cout<<"\nSELECCIONASTE LA OPCION NUMERO DE DIVISORES";
               cout<<"\n\nIngrese el numero: "; cin>>num;
               cont_d = num_div(num);
               cout<<"\nEl numero de divisores es: "<<cont_d<<endl;
               break;
       case 4: cout<<"\nSELECCIONASTE LA OPCION NUMERO PRIMO";
               cout<<"\n\nIngrese el numero: "; cin>>num;
               num_pri(num);
               break;
       default: if(opcion != 0)
                cout<<"\nLA OPCION ES INCORRECTA";
                break;
      }
      getch();
      clrscr();
     }while(opcion != 0);
    }
    Conversion de segundos a horas,minutos,segundos:
    HTML:
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    void main()
    {
      int cant_seg,hor,min,seg;
      cout<<"Ingrese la cantidad total de segundos: ";cin>>cant_seg;
      hor = cant_seg / 3600;
      min = (cant_seg % 3600) / 60;
      seg = (cant_seg % 3600) % 60;
      cout<<"\nEn la cantidad ingresada de segundos hay: "<<hor<<" horas,"<<min<<" minutos y "<<seg<<" segundos"<<endl;
      cout<<"\nPresione una tecla para finalizar";
      getch();
      return;
    }
     
    Última edición: 30 Ene 2011
    A CM PUNK le gustó este mensaje.


  2. EruKun

    EruKun Miembro maestro

    Registro:
    15 Nov 2008
    Mensajes:
    254
    Likes:
    10
    En esta página tiene problemas trancas(técnicas de programación), medias y fáciles: http://acm.tju.edu.cn/toj/problem.html(con Internet Explorer no funciona bien) Tiene Judge Online, puedes enviar tu solución para ver si es correcto(mide tiempo y rendimiento).

    Tengo algunos de un taller de hace tiempo por ejemplo:

    Contar los números de ceros al final de un factorial(multiplicar no se puede xq no vas a sacar factorial de 10000000!, se demora un eggg).

    Ejm: 3! = 9 osea 0, 7! = 5040 osea 1, 10! = 3628800 osea 2
    #include<iostream>

    using namespace std;
    int main(){


    int n;
    cin>>n;
    for(int i = 1;i<=n;++i){
    int x;
    cin>>x;
    int ceros=0;
    while(x>=5){
    ceros +=x/5;
    x /=5;

    }

    cout<<ceros<<endl;
    }

    //return 0;

    }

    Hacer un fractal(este si con ayuda del profe, porque me salia solo la mitad y la otra mitad salia deforme xD).

    http://acm.tju.edu.cn/toj/showp1178.html

    #include<iostream>
    #include <math.h>
    using namespace std;
    char matriz[ 729 ][ 729 ];
    int cantidadX[729];

    void formarMatriz( int tam, int posX,int posY){

    if( tam == 1 ){
    matriz[ posX ][ posY ] = 'X';
    cantidadX[posX]++;
    return;
    }
    for(int i = 0; i<=2;i++){
    for(int j=0; j<=2 ; j++){

    if( (i+j)%2== 0 ){

    formarMatriz(tam/3,(tam/3)*i+posX,(tam/3)*j+posY);

    }
    }
    }

    }

    int main(){
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    int x;

    while(cin>>x && x != -1){
    int contador=0;
    int tam = pow(3.0,x-1);
    for(int i = 0; i<=tam-1; i++){
    for(int j = 0;j<=tam-1; j++){

    matriz[ i ][ j ] = ' ';
    }
    cantidadX=0;
    }
    formarMatriz(tam,0,0);

    for(int i = 0; i<=tam-1; i++){

    for(int j = 0;j<=tam-1; j++){
    cout<<matriz[j];
    if(matriz[j]=='X'){
    contador++;
    }
    if(contador==cantidadX){break;}
    }
    cout<<endl;
    contador=0;

    }
    //cout<<endl;
    cout<<"-"<<endl;
    //cout<<endl;

    }

    }

     
    Última edición: 31 Ene 2011
  3. bryan

    bryan Miembro nuevo

    Registro:
    26 Ago 2007
    Mensajes:
    36
    Likes:
    1
    FACTORIAL DE UN NUMERO:
    HTML:
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    void main()
    {
      int num, cont, fact;
      char resp;
      do
      {
         clrscr(); //limpia la pantalla
         cont = 1;
         fact = 1;
         cout<<"\nIngrese un numero entero y positivo para calcular su factorial: ";
         cin>>num;
         while ( cont <= num )
         {
                fact = fact * cont  ; //fact *= cont;
                cont = cont + 1 ; //cont += 1;
         }
         cout<<"\nEl fatorial de "<<num<<" es: "<<fact<<endl;
         cout<<"\nDesea ingresar otro numero? ...(S/N):";cin>>resp;
      }while(resp=='S');
      //cout<<"\nPresione una tecla para finalizar el programa  :";
      //getch();
      return;
    }
    POTENCIA
    HTML:
    #include <stdio.h>
    #include <conio.h>
    #include <iostream.h>
    void main()
    {
      int bas, exp, pot, cont;
      cont = 1;
      pot = 1;
      cout<<"Ingrese la base: ";
      cin>>bas;
      cout<<"Ingrese el exponente: ";
      cin>>exp;
      while(cont<=exp)
      {
          pot = pot * bas;
          cont = cont + 1;
      }
      cout<<"\nLa potencia es "<<pot<<endl;
      getch();
      return;
    }
     
  4. elias174

    elias174 Miembro frecuente

    Registro:
    29 Set 2010
    Mensajes:
    237
    Likes:
    8
    ok este es un ejercicio que estoy haciendo en mi curso de c++ trabaja con clases,constructores y destructores esto es lo que pide:

    Realizar el siguiente programa en c++, en donde se implementa una lista utilizando punteros,
    cada uno de los nodos está representado por la clase elementos y el conjunto de elementos lo
    podremos acceder a través de la clase Lista.

    Código:
    ///By elias174//
    //Ejercicios con clases//
    
    
    #include <iostream> 
    #include <stdlib.h> 
     
    using namespace std; 
     
    /* Clase para elemento de lista enlazada */ 
    class Elemento { 
    public: 
    Elemento(int t); /* Constructor */ 
    int Tipo() { return tipo;} /* Obtener tipo */ 
    void ModificarTipo(int x){tipo=x;} 
     
     
    private: /* Datos: */ 
    int tipo; /* Tipo */ 
    Elemento *sig; /* Siguiente elemento*/ 
    friend class Lista; /* Amistad con lista */ 
    }; 
     
     
    /* Clase para lista enlazada de números*/ 
    class Lista { 
    public: 
        Lista() : Cabeza(NULL) {} /* Constructor inline*/ 
        /* Lista vacía */ 
        ~Lista() {LiberarLista();} /* Destructor inline */ 
        void Nuevo(int tipo); /* Insertar figura */ 
        Elemento *Primero() {return Cabeza;} /* Obtener primer elemento*/ 
        /* Obtener el siguiente elemento a p */ 
        Elemento *Siguiente(Elemento *p){if(p) return p->sig; else return p;}; 
        /* Si p no es NULL */ 
        /* Averiguar si la lista está vacía */ 
        bool EstaVacio() { return Cabeza == NULL;} 
        void MostrarLista(); 
        void ModificarLista(int val, int pos); 
        void BuscarElemento(int elem); 
        void EliminarElemento(int element); 
    private: 
        Elemento *Cabeza; /* Puntero al primer elemento */ 
        void LiberarLista(); /* Función privada para borrar lista */ 
     
    }; 
     
    /* Constructor */ 
    Elemento::Elemento(int t) : tipo(t), sig(NULL) {} 
    /* Asignar datos desde lista de parámetros */ 
    /* Añadir nuevo elemento al principio de la lista */ 
    void Lista::Nuevo(int tipo) 
    { 
    Elemento *p; 
    p = new Elemento(tipo); /* Nuevo elemento */ 
    p->sig = Cabeza; 
    Cabeza = p; 
    } 
    /* Borra todos los elementos de la lista */ 
    void Lista::LiberarLista() 
    { 
    Elemento *p; 
    while(Cabeza){ 
    p = Cabeza; 
    Cabeza = p->sig; 
    delete p; 
    } 
    } 
     
    void Lista::MostrarLista(){ 
        Elemento *h; 
        h=Primero(); 
        while(h){ 
            cout<<h->Tipo()<<" ,"; 
            h=Siguiente(h); 
        } 
    } 
     
    void  Lista::ModificarLista(int val, int pos){ 
        Elemento *h; 
        h=Primero(); 
        for(int x=0;x<pos;x++){ 
         
            h=Siguiente(h); 
        } 
        h->ModificarTipo(val); 
         
    } 
    void  Lista::BuscarElemento(int elem){ 
        //int posi; 
        Elemento *h; 
        h=Primero(); 
        int x=0; 
     
        while(h){ 
            x++; 
            if(elem==h->Tipo()){ 
                cout<<x<<endl; 
                break; 
            }else{ 
                h=Siguiente(h); 
            } 
            /*h->Tipo(elem); 
             
                cout<<elem<<" Existe en los elementos"; 
        cout<<"  y esta en la posicion: "<<*/ 
         
         
    } 
    } 
    void Lista::EliminarElemento(int element){ 
        Elemento *h; 
        h=Primero(); 
     
     
        int x=0; 
    while(h){ 
            x++; 
            if(element==h->Tipo()){ 
                h->Tipo()=0; 
                 
                break; 
            }else{ 
                h=Siguiente(h); 
            } 
     
    } 
    } 
     
     
    int main(int argc, char *argv[]) 
    { 
    Lista miLista; 
     
    // Insertamos varios valores en la lista 
    miLista.Nuevo(4); 
    miLista.Nuevo(2); 
    miLista.Nuevo(1); 
    miLista.Nuevo(12); 
    miLista.Nuevo(13); 
    miLista.MostrarLista(); 
    //miLista.ModificarLista(34,3); 
    cout<<endl; 
    miLista.EliminarElemento(13); 
    miLista.MostrarLista(); 
    //miLista.BuscarElemento(2222); 
    cout << endl; 
     
    return 0; 
    }

    el ejercicio solo muestra hasta una hasta ahora he implementado un metodo para mostrar toda la lista, modificar un elemento ingresando su posicion y valo, buscar un elemento e imprimir su posicion, implementar un metodo que permita eliminar un elemento se recibira el elemento a eliminar, lo que me falta es esto:

    14. Implemente un método que permita ordenar la lista ascendentemente y descendentemente
    utilizando el método de la burbuja.
    15. Implemente un método que permita insertar un elemento pero en forma ordenada.


    haber si alguien me puede ayudar ya que se me ha hecho un poco dificil el tema de objetos en c++
     
  5. CM PUNK

    CM PUNK Miembro maestro

    Registro:
    29 Abr 2007
    Mensajes:
    620
    Likes:
    5
    Buen tema man!

    aver aqui posteo algunos:

    1. Programa que simplifica una fraccion

    Código:
    #include <iostream.h>
    #include <conio.h>
    
    void main()
    {
    int a,b;
    cout<<"Ingrese numerador: ";
    cin>>a;
    cout<<"Ingrese denominador: ";
    cin>>b;
    
    int i=2;
    
    while (i<=a && i<=b){
    if(a%i==0 && b%i==0)
    {
    a=a/i;
    b=b/i;
    
    }
    
    else i=i+1;
    
    }
    cout<<endl<<"La fraccion simplificada es: "<<endl<<endl<<a<<endl<<"--"<<endl<<b;
    getch();
    }
    2. Programa que invierte una frase

    Código:
    #include <iostream.h>
    #include <string.h>
    //#include <conio.h>
    
    void main()
    {
    int length;
    
    char *a="adán salta y atlas nada";
    cout<<"FRASE: "<<endl;
    cout<<a<<endl;
    length=strlen(a);
    cout<<endl<<"FRASE INVERTIDA: "<<endl;
    for(int i=length-1;i>=0;i--)
    	 {
    	  cout<<a[i];
    	 }
    
    }
    3. Algoritmo de Djisktra (este me lo pasaron :uhm: espero q les sirva)

    Código:
    #include<iostream.h>
    #include<conio.h>
    #define inf 9999
    #define MAX 20
    int MenorD(int D[MAX],int nro){
     int i;
     int min=inf;
     int salvado=0;
     for(i=2;i<=nro;i++)
     {
      if(D[i]!=-1 && D[i]<min)
      {
       min=D[i];
       salvado=i;
      }
     }
    return salvado;
    }
    
    void IngresoMatrizAdyacencia(int nro,int MA[MAX][MAX])
    {
     int i,j;
     cout<<"\nIngrese Matriz de Adyacencia\n\n";
     for(i=1;i<=nro;i++){
      for(j=1;j<=nro;j++){
       if(i==j){
        MA[i][j]=0;
       }
       if(i<j){
        cout<<"MA["<<i<<"]["<<j<<"]=";
        cin>>MA[i][j];
       }
      }}
     for(i=1;i<=nro;i++){
      for(j=1;j<=nro;j++){
         if(i>j && MA[j][i]==0)
         {
          cout<<"MA["<<i<<"]["<<j<<"]=";
          cin>>MA[i][j];
         }
      }}
    }
    
    void IngresoMatrizLongitudes(int nro,int ML[MAX][MAX],int MA[MAX][MAX])
    {
      int i,j;
     cout<<"\nIngrese Matriz de Longitudes\n\n";
     for(i=1;i<=nro;i++)
     {
      for(j=1;j<=nro;j++)
      {
       if(MA[i][j]==1)
       {
        cout<<"ML["<<i<<"]["<<j<<"]=";
        cin>>ML[i][j];
       }else if(MA[i][j]==0){
        ML[i][j]=inf;
       }
      }
     }
    }
    void ImprimirCaminoMinimo(int nro,int p[MAX]){
     int i;
     cout<<"\nEl Camino Minimo de Nodo 0 al Nodo "<<nro<<" es\n\n";
     cout<<"\tS[ ";
     for(i=0;i<nro;i++)
     {
      cout<<p[i]<<", ";
     }cout<<"]";
    }
    
    void Disjktra(int nro,int ML[MAX][MAX],int S[MAX], int D[MAX],int P[MAX])
    {
     int i,j;
     int v;
     int k;
     S[0]=1;
     for(i=2;i<=nro;i++)
     {
      D[i]=ML[1][i];
      P[i]=1;
     }
     k=1;
     while(k<nro){
      v=MenorD(D,nro);
      S[k]=v;
      for(i=2;i<=nro;i++)
      {
       if(D[i]>D[v]+ML[v][i])
       {
        D[i]=D[v]+ML[v][i];
        P[i]=v;
       }
     }
     D[v]=-1;
     k++;
    }
    }
    void main(){
     int nro;
     int MAdy[MAX][MAX];
     int MLong[MAX][MAX];
     int D[MAX], P[MAX];
     int S[MAX];
     clrscr();
     cout<<"\nIngrese nro de Nodos: ";
     cin>>nro;
     cout<<endl;
     /*******adyacencia*********/
     IngresoMatrizAdyacencia(nro,MAdy);
     cout<<endl;
     IngresoMatrizLongitudes(nro,MLong,MAdy);
     cout<<endl<<endl;
     Disjktra(nro,MLong,S,D,P);
     ImprimirCaminoMinimo(nro,S);
     getch();
    }
    
    4. Mayor valor en un conjunto de 3 numeros usando plantillas
    Código:
    #include <iostream.h>
    
    template <class T>
    T maximo(T valor1, T valor2, T valor3)
      {
    	T max = valor1;
    	if(valor2>max)
    	  {
    		max=valor2;
    	  }
    
    	  if(valor3>max)
    		 {
    		 max=valor3;
    		 }
    	  return max;
      }
    
    void main()
      {
    	int a=5,b=6,c=7;
    
    	cout<<"El maximo de enteros es: "<<maximo(a,b,c)<<endl;
    
    	double x=3.0,y=5.6,z=7.5;
    
    	cout<<"El maximo de dobles es: "<<maximo(x,y,z)<<endl;
    
    	char m='A',n='Q',o='R';
    
    	cout<<"El maximo de caracteres es: "<<maximo(m,n,o);
      }
    

    PD: Seguire posteando mas codigos en los sgtes dias :biggrin:


    Saludos!
     
  6. bryan

    bryan Miembro nuevo

    Registro:
    26 Ago 2007
    Mensajes:
    36
    Likes:
    1
    Q programa usas pa hacer tus ejemplos, yo uso el Borland C++.
     
  7. CM PUNK

    CM PUNK Miembro maestro

    Registro:
    29 Abr 2007
    Mensajes:
    620
    Likes:
    5
    Turbo C++ 4.5 y Code Blocks
     
  8. bryan

    bryan Miembro nuevo

    Registro:
    26 Ago 2007
    Mensajes:
    36
    Likes:
    1
    Haber kien sabe esto(EXAMEN UNI):


    1. Hallar la sumatoria de: 2! + 4! + 6! + 8! + . . .
    2. En un examen el tipo de calificación es el siguiente:
    Puntaje Calificación
    100 – 70 A
    69 – 30 B
    29 – 0 C
    Escribe un programa que encuentre:
    a) El número de estudiantes que rindieron el examen.
    b) El número de estudiantes que obtuvieron A, B y C.
    Los ingresos terminan cuando se le ingresa un puntaje negativo.
    3. Una empresa de ventas ofrece los siguientes productos con sus respectivos precios: producto A S/.12.60, producto B S/.23.50, producto C S/.27.40 y producto D S/.31.70. Escriba un programa que en un proceso repetitivo, lea el tipo de producto y la cantidad que se esta vendiendo, luego calcule y muestre el monto total de todos los productos vendidos durante un día. El programa termina cuando se ingresa un producto no válido y con una cantidad 0.
    4. Los surtidores de una gasolinera registran las ventas por galones, pero el precio de la gasolina está fijada en litros. El algoritmo debe calcular lo que los clientes deben pagar por la cantidad de galones que solicitan y según su tipo de gasolina y el total recaudado por la gasolinera de todo lo que vendió en el día, se sabe que cada galón tiene 3,785 litros y el precio del litro varia de acuerdo al siguiente cuadro:
    Tipo
    Precio por litro (S/.)
    A
    B
    C
    5.20
    4.50
    3.30
    El programa finaliza cuando se introduce una D como tipo de gasolina y una cantidad de galones de 0.
    5. Se tiene un conjunto de 10 tarjetas cada una contiene la información del censo para una persona: Sexo, Edad y Estado civil (Soltero, Casado, Viudo, Divorciado). Diseñe un programa que lea todos estos datos, e imprima la cantidad de jóvenes solteras que estén entre 16 y 21 años que hay.
    6. Suponga que se tiene un conjunto de N personas con sus tallas. Realizar un programa para mostrar cuales son las dos tallas mas altas y cuantas veces se repiten.
    7. Una compañía de seguros tiene contratados a n vendedores. Cada uno hace tres ventas a la semana. Su política de pagos es que un vendedor recibe un sueldo base semanal, y un 10% extra por comisiones de sus ventas. El gerente de su compañía desea saber cuanto dinero obtendrá en la semana cada vendedor por concepto de comisiones por las tres ventas realizadas, y cuanto total semanal tomando en cuenta su sueldo base y sus comisiones.