martes, 9 de abril de 2013

SUMA(15 CIFRAS)


Día 3. Pregunta Al->An:

Tendrás que ingresar dos números reales de hasta 15 cifras, el programa tiene que mostrar el resultado  de la operación:

Ejm:

Dato1: 1.0000000000009
Dato2: 8.9999999999991
SALIDA: 10

Dato1: 2.5
Dato2: 10000000000.5
SALIDA: 10000000003

Dato1: 111.111
Dato2: 112.113
SALIDA: 223.224

Resolución:



Código fuente: 

COMPLEMENTO ARITMÉTICO


Día 3. Pregunta An->Al:

Se pide ingresar un número por pantalla, el número puede ser hasta de 1000 cifras... Hallar su complemento aritmético.


Ejm:

Entrada: 9
Salida: 1

Entrada: 16
Salida: 84

Entrada: 500
Salida: 500

Entrada: 1234
Salida: 8766

Resolución:


#include<iostream>
#include<conio.h>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
char A[1000], aux;
int tam=0, i;
cout<<"INGRESE NUMERO: ";
gets(A); tam=strlen(A);
cout<<endl<<endl<<"EL COMPLEMENTO ARITMETICO ES: ";
for(i=0;i<tam;i++)
{
A[i]=57-A[i]+48;
}
i--;
A[i]=A[i]+1;
aux=A[i];
while(aux==58)
{
A[i]='0';
i--;
A[i]=A[i]+1;
aux=A[i];
}
i=0;
while(A[i]=='0' && i<tam)
{
i++;
}
for(;i<tam;i++)
{
cout<<A[i];
}
return 0;
}


Código fuente: http://www.mediafire.com/view/?uap5ut1hr00xt9k

viernes, 5 de abril de 2013

ORDENAMIENTO DE CADENAS


Día 2. Pregunta An->Al:

Tu ejercicio es tener que ordenar una cadena de caracteres y números ascendentemente, sin embargo, quiero que respetes las posiciones de números y letras.

Ejemplo:

cadena: murcielago
ordenada: acegilmoru

cadena: cba
ordenada: abc

cadena: 652134
ordenada: 123456

cadena: c3b2a1
ordenada: a1b2c3

cadena: cb321a
ordenada: ab123c

Resolución:


#include<iostream>
#include<conio.h>
#include<cstdio>
#include<string.h>
using namespace std;

struct elemento
{
char c;
struct elemento *sgte;
struct elemento *antr;
};
struct cadena
{
struct elemento *cab;
struct elemento *ult;
cadena(){cab=NULL;ult=NULL;}
}cad[2];

struct elemento *p=NULL;
struct elemento *q=NULL;

void cargar(char &c,bool nro)
{
p=cad[nro].cab;
c=p->c;
p->antr=NULL;
cad[nro].cab=cad[nro].cab->sgte;
delete p; 
}

void insertar(char &c,bool nro)
{
int est=0; bool band=false;
p=new elemento; q=cad[nro].cab;
p->c=c;
if(cad[nro].cab==NULL) {cad[nro].cab=cad[nro].ult=p; p->c=c; p->sgte=p->antr=NULL;}
else{
while(q!=NULL)
{
if(c<q->c) 
{
if(est==2)
{
p->antr=q->antr;
q->antr->sgte=p;
q->antr=p;
p->sgte=q;
band=true;
break;
}
q=q->antr;
est=1;
}
else
{
if(est==1)
{
p->sgte=q->sgte;
q->sgte->antr=p;
q->sgte=p;
p->antr=q;
band=true;
break;
}
q=q->sgte;
est=2;
}
}
if(band==false) 
{
if(est==1)
{
p->antr=NULL;
p->sgte=cad[nro].cab;
cad[nro].cab->antr=p;
cad[nro].cab=p;
}
if(est==2)
{
p->sgte=NULL;
p->antr=cad[nro].ult;
cad[nro].ult->sgte=p;
cad[nro].ult=p;
}
}
}
}

int main()
{
char text[200];
bool band;
int tam, i;
cout<<"Ingrese cadena: ";
gets(text);
tam=strlen(text);
for(i=0;i<tam;i++)
{
if(text[i]>47 && text[i]<58) band=0;
else band=1;
insertar(text[i],band);
}
for(i=0;i<tam;i++)
{
if(text[i]>47 && text[i]<58) band=0;
else band=1;
cargar(text[i],band);
}
cout<<text;
getch();
return 0;
}



Código fuente: http://www.mediafire.com/view/?bb5s64re5sa1kb5

TODO EN TODO (ALL IN ALL)


Día 2. Pregunta Al->An:

Tendrás dos cadenas de caracteres, el ejercicio trata de averiguar si quitando caracteres a la segunda cadena podemos obtener la primera. Ejm:

cadena1: ana
cadena2: mariana
RPT: si es posible

cadena1: cara
cadena2: cicatrizar
RPT: si es posible

cadena1: Oso
cadena2: perezoso
RPT: no es posible

cadena1:hola
cadena2:aloh
RPT: no es posible

Resolución:


#include<iostream>
#include<string.h>
using namespace std;
main()
      {
      char *cadena1, *cadena2;
      short int tam1, tam2, i=0, j=0, k=0;
      
      for(;;){
          i=j=0;
          cadena1=new char[1];
          cadena2=new char[1];
          cin>>cadena1; cin>>cadena2; 
          tam1=strlen(cadena1); tam2=strlen(cadena2);
          while(j<tam1 && i<tam2)
                 {
                  if (cadena1[j]==cadena2[i]) 
                     {
                      cadena1[j]='\0'; j++;
                     }
                  i++; 
                  }
          if(cadena1[tam1-1]=='\0') cout<<"SI ESTA"<<endl;
          else cout<<"NO ESTA"<<endl;
          if(cadena1[0]=='\0') break;
          delete[] cadena1; delete[] cadena2;
          }
          delete[] cadena1; delete[] cadena2;
          system("pause");
      }

jueves, 4 de abril de 2013

MAYOR NUMERO

Día 1. Pregunta Al->An:

Ingresarás 10 edades por teclado, anidando sentencias if-else hallar aquél número que sea mayor.

Resolución:


#include<iostream>
#include<conio.h>
using namespace std;

int main()
    {
     int num[10], i;
     for(i=0;i<10;i++)
        {
         cout<<"Ingrese edad"<<i+1<<": ";
         cin>>num[i];
        }
     cout<<endl<<endl<<"El numero mayor es: ";
     if(num[0]>=num[1] && num[0]>=num[2] && num[0]>=num[3] && num[0]>=num[4] && num[0]>=num[5] && num[0]>=num[6] && num[0]>=num[7] && num[0]>=num[8] && num[0]>=num[9])
        cout<<num[0];
     else
         if(num[1]>=num[2] && num[1]>=num[3] && num[1]>=num[4] && num[1]>=num[5] && num[1]>=num[6] && num[1]>=num[7] && num[1]>=num[8] && num[1]>=num[9])
            cout<<num[1];
         else
             if(num[2]>=num[3] && num[2]>=num[4] && num[2]>=num[5] && num[2]>=num[6] && num[2]>=num[7] && num[2]>=num[8] && num[2]>=num[9])
                cout<<num[2];
             else
                 if(num[3]>=num[4] && num[3]>=num[5] && num[3]>=num[6] && num[3]>=num[7] && num[3]>=num[8] && num[3]>=num[9])
                   cout<<num[4];
                 else
                     if(num[4]>=num[5] && num[4]>=num[6] && num[4]>=num[7] && num[4]>=num[8] && num[4]>=num[9])
                        cout<<num[4];
                     else
                         if(num[5]>=num[6] && num[5]>=num[7] && num[5]>=num[8] && num[5]>=num[9])
                            cout<<num[5];
                         else
                             if(num[6]>=num[7] && num[6]>=num[8] && num[6]>=num[9])
                                cout<<num[6];
                             else
                                 if(num[7]>=num[8] && num[7]>=num[9])
                                    cout<<num[7];
                                 else
                                     if(num[8]>=num[9])
                                        cout<<num[8];
                                     else
                                         cout<<num[9];
     getch();
     return 0;
    }


Código fuente: http://www.mediafire.com/view/?ss7ke94ass9yn3u

BUSQUEDA DE CONTACTOS

Día 1. Pregunta An->Al:

Crear una lista de contactos en dónde puedas buscar contactos con un mecanismo parecido al del celular (sugerencias). Por ejemplo. Escribo la letra "a" y me salen todos los nombres que empiezan con esa letra, escribo "al" y salen menos, pero todos los que empiezan con "al..." y así.

Resolución:



#include<iostream>
#include<conio.h>
#include<cstring>
#include<stdio.h>
#include<stdlib.h>

using namespace std;

struct contacto
{
char nombre[20];
struct contacto *iz;
struct contacto *der;
};

struct contacto *rz=NULL;
struct contacto *p=NULL;
struct contacto *q=NULL;
int cont=0;
char nom[20];

int compara(char B[])
{
int tam1, tam2, i;
tam1=strlen(nom);
tam2=strlen(B);
if(tam1>tam2) return 1;
else
{
for(i=0;i<tam1;i++)

if(nom[i]>B[i]) return 1;
if(nom[i]<B[i]) return -1;
}
return 0; 
}
}

void buscar(contacto *r=NULL)
{
if(r==NULL) return;
if((compara(r->nombre))>0) {buscar(r->der);}
if((compara(r->nombre))==0) {cont++; cout<<r->nombre<<endl;buscar(r->iz);buscar(r->der);}
if((compara(r->nombre))<0) {buscar(r->iz);}
}

void ver(contacto *r=p)
{
if(r==NULL) return;
if(r->iz!=NULL) {ver(r->iz);}
cout<<r->nombre<<endl;
if(r->der!=NULL) {ver(r->der);}
}

void nuevo()
{
system("cls");
fflush(stdin);
p=new contacto;
cout<<"Nombre de contacto: ";
gets(p->nombre);
p->iz=p->der=NULL;
if(rz==NULL) rz=p;
else{
q=rz;
while(q!=NULL)
{
if(strcmp(p->nombre,q->nombre)>0) 
{
if(q->der==NULL) 
{
q->der=p;
break;
}
q=q->der; continue;
}
if(strcmp(p->nombre,q->nombre)<0) 
{
if(q->iz==NULL) 
{
q->iz=p;
break;
}
q=q->iz; continue;
}
if(strcmp(p->nombre,q->nombre)==0)
{
cout<<"Ese contacto ya existe"; getch(); return;

}
}
}

int main()
{
int opc; 
do{
system("cls");
cout<<endl<<endl<<endl<<endl<<endl;
cout<<"\t\t\tIngresar contacto.........[1]"<<endl;
cout<<"\t\t\tVer lista completa........[2]"<<endl;
cout<<"\t\t\tBuscar contactos..........[3]"<<endl;
cout<<"\t\t\tSALIR.....................[4]"<<endl;
cout<<"\t\t\tOpcion: "; cin>>opc;
switch(opc)
{
case 1: nuevo() ;break;
case 2: system("cls"); p=rz; ver(); getch(); break;
case 3: 
system("cls");
fflush(stdin);
cout<<"Buscar: "; gets(nom);
cont=0;
buscar(rz); 
cout<<"Se encontraron "<<cont<<" resultados";
getch();
break;
};
}while(opc!=4);
return 0;
}