Mostrando entradas con la etiqueta Especiales. Mostrar todas las entradas
Mostrando entradas con la etiqueta Especiales. Mostrar todas las entradas

viernes, 16 de septiembre de 2011

Numero igual a la suma de dos elementos

Al ingresar un número cualquiera este algoritmo busca todos los pares de elementos en el arreglo que sumados den el número ingresado.


#include "stdafx.h"
#include "iostream"
#include "conio.h"

using namespace std;

int *V;
int n;

void intercambio(int i,int j)
{
int temp;
temp=V[i];
V[i]=V[j];
V[j]=temp;
}

void ordenarV()
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(V[i]>V[j])
intercambio(i,j);
}
}
}

void mostrarV()
{
for(int i=0;i<n;i++)
cout<<"V["<<i+1<<"] = "<<V[i]<<endl;
}

void main()
{
cout<<"Numero de elementos: ";cin>>n;

cout<<endl;

V = new int [n];

for(int i=0;i<n;i++)
{
cout<<"V["<<i+1<<"] = ";
cin>>V[i];
}

ordenarV();

cout<<endl<<"V ordenado: "<<endl<<endl;

mostrarV();

int number;
cout<<endl<<"Numero igual a la suma de dos elementos cualquiera: ";cin>>number;

cout<<endl;

bool coincidencias=false;

for(int i=0;number>=V[i] && i<n-1;i++)//Si el elemento actual "V[i]" es mayor que "number" ya no es necesario analizarlo
{
for(int j=i+1;number>=V[j] && j<n;j++)//Si el elemento actual "V[j]" es mayor que "number" ya no es necesario analizarlo
{
if(V[i]+V[j]==number)
{
cout<<V[i]<<" + "<<V[j]<<" = "<<number<<endl;
coincidencias=true;
}
}
}

if(coincidencias==false)
cout<<"No hubieron coincidencias";

_getch();
}

Ordenar baraja

Genera una baraja aleatoriamente y la ordena


#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
#include "stdlib.h" //Para usar la función Random!

using namespace std;

const int fil = 4;
const int col = 13;

int baraja[fil][col];

//Se generará aleatoriamente la baraja!
void generarBaraja()
{
for(int i=0;i<fil;i++)
{
for(int j=0;j<col;j++)
{
bool OK = false;

while(OK == false)
{
baraja[i][j] = 1 + rand() % 13;

bool repetido = false;

for(int k=j-1;k>=0;k--)
{
if(baraja[i][j]==baraja[i][k])//Verifica si la actual carta generada ya existe!
{
repetido = true;
}
}

if(repetido == false)
OK = true;
}
}
}
}

void mostrarBaraja(string palo[])
{
for(int i=0;i<fil;i++)
{
cout<<endl<<palo[i]<<endl;

for(int j=0;j<col;j++)
{
cout<<baraja[i][j]<<"  ";
}
}
}

//Metodo bubble sort
void ordenarBaraja()
{
int temp;

for(int i=0;i<fil;i++)//Para cada palo
{
for(int j=0;j<col-1;j++)
{
for(int k=j+1;k<col;k++)
{
if(baraja[i][j]>baraja[i][k])
{
temp=baraja[i][j];
baraja[i][j]=baraja[i][k];
baraja[i][k]=temp;
}
}
}
}
}

void main()
{
string palo[] = {"Espadas","Treboles","Corazones","Cocos"};

generarBaraja();

cout<<"Baraja Generada:"<<endl;

mostrarBaraja(palo);

cout<<endl<<endl<<"Presione una tecla para ordenar su baraja..."<<endl;

_getch();

ordenarBaraja();

cout<<endl<<"Baraja Ordenada:"<<endl;

mostrarBaraja(palo);

_getch();
}

Tercio superior

Obtiene el tercio superior de una lista de alumnos


#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
using namespace std;

struct datos
{
string nombre;
double nota;
}*alumno;

void main()
{
int n;

cout<<"Ingrese cantidad de alumnos (mas de 3): ";cin>>n;

alumno = new datos [n];

cout<<endl<<"Ingrese nombre (sin espacios) y luego notas:"<<endl<<endl;

for(int i=0;i<n;i++)
{
cout<<"Nombre "<<i+1<<": ";cin>>alumno[i].nombre;

do{
cout<<"Nota: ";cin>>alumno[i].nota;
}while(alumno[i].nota<0 || alumno[i].nota>20);

cout<<endl;
}

for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if(alumno[i].nota<alumno[j].nota)
{
datos aux=alumno[i];
alumno[i]=alumno[j];
alumno[j]=aux;
}
}
}

cout<<endl<<"Lista del tercio superior queda asi:"<<endl<<endl;

cout<<"Nombre:\tNota:"<<endl;

for(int i=0;i<n/3;i++)
cout<<alumno[i].nombre<<"\t"<<alumno[i].nota<<endl;

_getch();
}