compilaciÓn programas
TRANSCRIPT
SUMAR I
//Directivos para el preprocesador
#include <iostream> using std:: cin;using std:: cout;
//Funciones
int ingreso();int suma (int,int);int resta (int,int);int multiplica (int,int);int divide (int,int);
//Definicion de variables globales
int numero1,numero2;
//Funcion principal del programa
int main (){ cout <<"\t\t SUMAR, RESTAR, MULTIPLICAR Y DIVIDIR DOS NUMEROS ENTEROS\n"; //Llamadas a las funciones
ingreso (); suma (numero1,numero2); resta (numero1,numero2); multiplica (numero1,numero2); divide (numero1,numero2); return 0;}
int ingreso (){ cout <<"\n Ingrese primer numero: "; cin >> numero1; cout <<"\n Ingrese segundo numero: "; cin >> numero2; return numero1,numero2;}
int suma (int n1, int n2)
{ int resultado; resultado= n1 + n2; cout <<"\n\n SUMA ="<< n1 <<" + "<< n2<<" = "<<resultado <<"\n"; return resultado;
}
1
int resta (int num1, int num2)
{ int restar; restar= num1 - num2; cout <<"\n\n RESTA ="<< num1 <<" - "<< num2<<" = "<<restar <<"\n"; return restar;}int multiplica (int nume1, int nume2)
{ int multiplicacion; multiplicacion= nume1 * nume2; cout <<"\n\n MULTIPLICA ="<< nume1 <<" * "<< nume2<<" = "<<multiplicacion <<"\n"; return multiplicacion;}int divide (int numeral1, int numeral2)
{ int division; division= numeral1 / numeral2; cout <<"\n\n DIVIDE ="<< numeral1 <<" / "<< numeral2<<" = "<<division <<"\n\n"; return division;}
SUMAR II
//Directivos para el preprocesador
#include <iostream> using std:: cin;using std:: cout;
//Funciones
int ingreso();int suma (int,int);int resta (int,int);int multiplica (int,int);int divide (int,int);void salida(int);
//Definicion de variables globales
int numero1,numero2,resultado;
//Funcion principal del programa
int main (){ cout <<"\t\t SUMAR, RESTAR, MULTIPLICAR Y DIVIDIR DOS NUMEROS ENTEROS\n"; //Llamadas a las funciones
ingreso ();2
suma (numero1,numero2); salida (resultado); resta (numero1,numero2); salida (resultado); multiplica (numero1,numero2); salida (resultado); divide (numero1,numero2); salida (resultado); return 0;}
int ingreso (){ cout <<"\n Ingrese primer numero: "; cin >> numero1; cout <<"\n Ingrese segundo numero: "; cin >> numero2; return numero1,numero2;}
int suma (int n1, int n2){ resultado= n1 + n2; cout <<"\n\n SUMA = "<<n1<<" + "<<n2; return resultado; // Tiene pleno significado, ya que ese resultado, lo voy a usar en la funcion salida}
int resta (int num1, int num2){ resultado= num1 - num2; cout <<"\n\n RESTA = "<<num1<<" / "<<num2; return resultado;}
int multiplica (int nume1, int nume2){ resultado= nume1 * nume2; cout <<"\n\n MULTIPLICA = "<<nume1<<" * "<<nume2; return resultado;}
int divide (int numeral1, int numeral2){ resultado= numeral1 / numeral2; cout <<"\n\n DIVIDE = "<<numeral1<<" / "<<numeral2; return resultado;}
void salida (int r){ cout <<" = "<<r<<"\n";}
3
SENO DE UN ÁNGULO
#include <iostream> using std:: cin;using std:: cout;using std:: endl;#include <cmath>
//Funciones
double ingresoangulo();double calculoseno (double);void desplegar(double,double);
//Definicion de variables globales
double angulo,seno;
//Funcion principal del programa
int main (){ cout <<"\n\t\t CALCULO DEL SENO DE UN ANGULO\n"; //Llamadas a las funciones
ingresoangulo (); calculoseno (angulo); desplegar(angulo,seno); cout<<endl; return 0;}
double ingresoangulo (){ cout <<"\n Ingrese el angulo en radianes: "; cin >> angulo; return angulo;}
double calculoseno (double angulito){ seno= sin(angulito); return seno; // Tiene pleno significado, ya que ese resultado, lo voy a usar en la funcion salida}
void desplegar (double a,double s){ cout <<"\n\n seno( "<<a<<" ) = "<<s<<endl;}
4
NOTAS
#include <iostream>using std::cout;using std::cin;using std::endl;
int notas();int suma (int,int);void verificar (int,int,int);
int n1,n2,resultado;
int main (){ cout<<"\n\t\t\t SITUACION DE UN ESTUDIANTE "<<"\n\n"; notas (); suma (n1,n2); verificar (n1,n2,resultado); cout<<endl; return 0;}
int notas(){ cout<<" Ingrese Nota 1: "; cin>>n1; cout<<"\n Ingrese Nota 2: "; cin>>n2; cout<<"\n\n"; return n1,n2;}
int suma(int nta1, int nta2){ resultado=nta1+nta2; return resultado;}
void verificar (int nota1, int nota2, int r){ cout<<"\t\t NOTA 1 \t NOTA 2 \t NOTA 3 \t SITUACION"<<"\n\n"; cout<<"\t\t "<<nota1<<" \t\t "<<nota2<<" \t\t "<<r; if (r>=14)
cout<<" "<<"\t\tEXONERADO\n\n"; if (r<9)
cout<<" "<<"\t\tREPROBADO\n\n"; if (r<14)
5
{ if (r>=9)
cout<<" "<<"\t\tSUPLETORIO\n\n"; }}ÁREA Y VOLUMEN DE UN CILINDRO#include <iostream>#include <cmath>using std::cout;using std::cin;#define pi 3.14159265358979323846
double ingreso ();double area (double,double);double volumen (double,double);void desplegarvolumen (double);double radio, altura, vol;
int main (){ cout<<"\n\t\t CALCULO DEL AREA Y VOLUMEN DE UN CILINDRO"<<"\n\n"; ingreso (); area (radio,altura); volumen (radio,altura); desplegarvolumen (vol); return 0;}
double ingreso(){ cout<<" Ingrese el radio de la base del cilindro (cm) = "; cin>>radio; cout<<"\n"; cout<<" Ingrese la altura del cilindro (cm) = "; cin>>altura; cout<<"\n"; return radio,altura;}
double area(double r,double h){ double resultado; resultado=(2*pi*r)*(h+r); cout<<" El area del cilindro es = "<<resultado<<" cm^2 \n\n"; return resultado;}
double volumen (double rad,double alt){ vol=pi*(pow(rad,2))*alt; cout<<" El volumen del cilindro es = "; return vol;
6
}
void desplegarvolumen (double volume){ cout<<vol<<" cm^3 \n\n";}COMPARACIÓN LADOS#include <iostream>using std::cout;using std::cin;
double ingreso();double comparacion(double,double,double);void desplegar(double);
double error,l1,l2,l3;;
int main(){
cout<<"\n\n\t\tPROGRAMA PARA DETERMINAR SI UN POLIGONO\n\n\t\t\tDE TRES LADOS ES UN TRIANGULO\n\n";
ingreso();return 0;
}
double ingreso(){
cout<<" Ingrese lado 1 : ";cin>>l1;cout<<" Ingrese lado 2 : ";cin>>l2;cout<<" Ingrese lado 3 : ";cin>>l3;comparacion(l1,l2,l3);desplegar(error);return l1,l2,l3;
}
double comparacion(double a,double b,double c){
if ((a+b)>c){
if((a+c)>b){
if((b+c)>a)error=1;
7
elseerror=0;
}else
error=3;}else
error=2;return 0;
}
void desplegar(double err){
if (err==1){
cout<<"\n\n\t\tSI FORMAN UN TRIANGULO\n\n";cout<<"\t\t\t"<<l1<<" + "<<l2<<" > "<<l3<<"\n\n";
}if (err==0){
cout<<"\n\n\t\tNO FORMAN UN TRIANGULO\n\n"; cout<<"\t\t\t"<<l2<<" + "<<l3<<" < "<<l1<<"\n\n";}if (err==3){
cout<<"\n\n\t\tNO FORMAN UN TRIANGULO\n\n"; cout<<"\t\t\t"<<l1<<" + "<<l3<<" < "<<l2<<"\n\n";}if (err==2){
cout<<"\n\n\t\tNO FORMAN UN TRIANGULO\n\n"; cout<<"\t\t\t"<<l1<<" + "<<l2<<" < "<<l3<<"\n\n";}
}
NOTA 3#include <iostream>using std::cout;using std::cin;using std::endl;
int notas();void comprobar(int,int);int suma (int,int);void verificar (int,int,int);
8
int n1,n2,resultado;
int main (){ cout<<"\n\t\t\t SITUACION DE UN ESTUDIANTE "<<"\n\n"; notas (); cout<<endl; return 0;}
int notas(){ cout<<" Ingrese Nota 1: "; cin>>n1; cout<<"\n Ingrese Nota 2: "; cin>>n2; comprobar(n1,n2); return n1,n2;}
void comprobar (int num1,int num2){ if (num1>=0)
{ if (num1<=10) {
if (0<=num2){ if (num2<=10)
suma (n1,n2); else
cout<<"\n\n\t\tNOTA ERRADA\n\n";}else
cout<<"\n\n\t\tNOTA ERRADA\n\n"; } else
cout<<"\n\n\t\tNOTA ERRADA\n\n";}
elsecout<<"\n\n\t\tNOTA ERRADA\n\n";
}
int suma(int nta1, int nta2)
9
{ resultado=nta1+nta2; verificar (n1,n2,resultado); return resultado;}
void verificar (int nota1, int nota2, int r){ cout<<"\t\t NOTA 1 \t NOTA 2 \t NOTA 3 \t SITUACION"<<"\n\n"; cout<<"\t\t "<<nota1<<" \t\t "<<nota2<<" \t\t "<<r; if (r>=14)
cout<<" "<<"\t\tEXONERADO\n\n"; if (r<9)
cout<<" "<<"\t\tREPROBADO\n\n"; if (r<14) {
if (r>=9) cout<<" "<<"\t\tSUPLETORIO\n\n";
}}IDENTIFICAR TRIANGULO#include <iostream>using std::cout;using std::cin;using std::endl;
void ilados();int verificar(int,int,int);void resultados(int); /*Aqui voy a llamar a mi variable tipo
e indicar que tipo de variable esno todas las llamadas van a estar en la funciòn main, sino tambienen otros lados del programa*/
int tipo;
int main(){
cout<<"\n\t\t TIPO DE TRIANGULO SEGUN SUS LADOS\n\n";ilados(); //No tengo la llamada a las otras funcionescout<<endl;return 0;
}
void ilados() /*Aquì ya no voy a retornar nada, solo voy a usar los lados en esta parte del programa
10
entonces, no voy a retornar nada, mi funciòn es void*/{
int l1,l2,l3;cout<<"\n Ingrese:\n\n";cout<<" Lado 1: ";cin>>l1;cout<<"\n Lado 2: ";cin>>l2;cout<<"\n Lado 3: ";cin>>l3;verificar(l1,l2,l3); //No quiero tener las otras llamadas en main,resultados(tipo); //quiero optimizar la memoria de la computadora
} //y por eso defino variables locales
int verificar(int ldo1,int ldo2,int ldo3){
if (ldo1==ldo2){
if (ldo2==ldo3)tipo=1; //Le asigno a "tipo" un valor de 1 (T.
equilatero)else
tipo=2;}else{
if (ldo2==ldo3)tipo=2;
else{
if(ldo1==ldo3)tipo=2;
elsetipo=3;
}}return tipo; //Estoy obligado a retornar un valor porque mi funciòn es
int} //Ya obtuve "tipo", entonces ya lo puedo usar en "resultados"
void resultados(int tpotri){
if(tpotri==1)cout<<"\n\n TIPO TRIANGULO : EQUILATERO";
11
else{
if (tpotri==2)cout<<"\n\n TIPO TRIANGULO : ISOSCELES";
elsecout<<"\n\n TIPO TRIANGULO : ESCALENO";
}}TRIANGULO COMPLETO#include <iostream>using std::cout;using std::cin;using std::endl;
int ilados();void forman(int,int,int);int tipotri(int,int,int);void resultados(int);
int l1,l2,l3,ope1=0,ope2=0,ope3=0,tipo; /*siempre los dos que no forman van a ser ope1,ope2 y siempre el
lado mayor va a ser ope3; entonces asì para
los resultados siempre voy a tener
ope1+ope2<ope3. Sus valores incialesson cero, porque
no deben ser igual a cero*/
int main(){
cout<<"\n\n\t\tTIPO DE TRIANGULO SEGUN SUS LADOS\n\n";ilados();forman(l1,l2,l3);cout<<endl;return 0;
}
int ilados(){
cout<<"\nIngrese : \n\n";cout<<" Lado 1 : ";cin>>l1;cout<<" Lado 2 : ";cin>>l2;
12
cout<<" Lado 3 : ";cin>>l3;return l1,l2,l3;
}
void forman(int a, int b, int c){
if(a<=0||b<=0||c<=0)cout<<"\n\n\t\tLOS LADOS NO FORMAN TRIANGULO\n\n";
else{
if(a+b<c){
ope1=a;ope2=b;ope3=c;
}if(a+c<b){
ope1=a;ope2=c;ope3=b;
}if(b+c<a){
ope1=b;ope2=c;ope3=a;
}if (ope1==0){
tipotri(l1,l2,l3);resultados(tipo);
}else{
cout<<"\n\n\t\tLOS LADOS NO FORMAN TRIANGULO\n\n";cout<<"\t"<<ope1<<" + "<<ope2<<" = "<<ope1+ope2<<" < "<<ope3<<"\n\
n";}
}}
int tipotri(int ldo1,int ldo2,int ldo3){
13
if(ldo1==ldo2&&ldo2==ldo3)tipo=1;
else{
if(ldo1==ldo2||ldo2==ldo3||ldo1==ldo3)tipo=2;
elsetipo=3;
}return tipo; //Obtengo el "tipo" que necesito para mi funcion "resultados"
}
void resultados(int tpotri){
if(tpotri==1)cout<<"\n\n TIPO TRIANGULO : EQUILATERO\n\n";
else{
if (tpotri==2)cout<<"\n\n TIPO TRIANGULO : ISOSCELES\n\n";
elsecout<<"\n\n TIPO TRIANGULO : ESCALENO\n\n";
}}NUMEROS MAYOR MENOR#include <iostream>using std::cout;using std::cin;using std::endl;
int ingreso();int verificar(int,int,int);void desplegar(int,int);
int n1,n2,n3,op1,op2;
int main (){
cout<<"\n\n\tPROGRAMA PARA ENCONTRAR EL MAYOR Y MENOR DE TRES NUMEROS\n\n";
ingreso();verificar(n1,n2,n3);return 0;
}
14
int ingreso(){
cout<<"\n Ingrese el primer numero : ";cin>>n1;cout<<"\n Ingrese el segundo numero : ";cin>>n2;cout<<"\n Ingrese el tercer numero : ";cin>>n3;return n1,n2,n3;
}
int verificar(int num1,int num2, int num3){
if(num1==num2&&num2==num3){
cout<<"\n\tLos numeros son iguales, no existe mayor o menor\n\n";}else{if(num1<=num2&&num2<num3){
op1=num1;op2=num3;
}if(num2<=num1&&num1<num3){
op1=num2;op2=num3;
}if(num1<=num3&&num3<num2){
op1=num1;op2=num2;
}if(num2<=num3&&num3<num1){
op1=num2;op2=num1;
}if(num3<=num1&&num1<num2){
op1=num3;op2=num2;
}if(num3<=num2&&num2<num1)
15
{op1=num3;op2=num1;
}desplegar(op1,op2);}return op1,op2;
}
void desplegar(int op1,int op2){
cout<<"\n\tEl menor numero es : "<<op1<<"\n";cout<<"\n\tEl mayor numero es : "<<op2<<"\n\n";
}TRIANGULO# include <iostream>using std:: cout;using std:: cin;using std:: endl;
double ingresar ();void verifica (double, double, double);
double n1, n2, n3;
int main (){ cout <<"\t\t VERIFICAR SI ES TRIANGULO \n\n";ingresar ();verifica (n1, n2, n3);return 0;}
double ingresar (){ cout <<"\n Ingrese el primer lado: "; cin >> n1; cout <<"\n Ingrese el segundo lado: "; cin >> n2; cout <<"\n Ingrese el tercer lado: "; cin >> n3; return n1, n2, n3;}
void verifica ( double n1, double n2, double n3){
if (n1>0)
16
{ if (n2>0)
{ if (n3>0) {
if ((n1 + n2) > n3){
if ((n1 + n3) > n2){
if ((n2 + n3) > n1){ cout <<"\n Si forma triangulo: \n";
cout <<"\t\n"<< n1<<" + "<< n2 <<" > "<< n3 <<" , "<< n1 <<" + "<< n3 <<" > "<< n2 <<" , "<< n2 <<" + "<< n3 <<" > "<< n1 <<" \n " ;
}
else{ cout <<"\n No forma triangulo: \n";
cout <<"\t\n"<< n2 <<" + "<< n3 <<" < "<< n1 <<" \n ";}
}
else{ cout <<"\n No forma triangulo: \n";
cout <<"\t\n"<< n1 <<" + "<< n3 <<" < "<< n2 <<" \n ";}
}
else{ cout <<"\n No forma triangulo: \n";
cout <<"\t\n"<< n1 <<" + "<< n2 <<" < "<< n3 <<" \n ";}
}else{ cout <<" No es posible \n";}
} else
{ cout <<" No es posible \n"; }}
else { cout <<" No es posible \n"; }}DEBER 654
17
# include <iostream>using std:: cout;using std:: cin;using std:: endl;
int ingreso();void verificar(int);int separardigitos(int);void desplegar(int,int,int);int num,u,d,c;int main(){
cout<<"\n\n\t SEPARACION DE UN VALOR EN SUS DIGITOS\n\n";ingreso();verificar(num);return 0;
}int ingreso(){
cout<<"\n Ingrese el numero : ";cin>>num;return num;
}void verificar(int numero){
if (0<=numero&&numero<=1000){
separardigitos(num);desplegar(u,d,c);
}else
cout<<"\n\n\t Numero no corresponde al rango \n\n\n";}int separardigitos(int nume){
u=(nume%10);d=(nume/10)%10;c=nume/100;return c,d,u;
}
void desplegar(int uni,int dec, int cen){
cout<<"\n Numero separado en sus digitos : "<<cen<<" "<<dec<<" "<<uni<<"\n\n";}
18
SUMA DE LOS DIEZ PRIMEROS NÚMEROS
#include <iostream>using std::cout;using std::cin;using std::endl;
int generar();void resultado(int);
int suma=0;
int main(){
cout<<"\n\t\tUSO DE FOR\n\n";cout<<"\n\tGenerar los diez primeros numeros y determinar su suma\n\n";cout<<"\n\t\tNUMEROS\n";generar();resultado(suma);cout<<endl;return 0;
}
int generar(){
for(int nro=1;nro<=10;nro++) // ++ posincremento: al valor actual de numero le suma 1, semejante a nro=nro+1
{suma+=nro; //como decir suma=suma+nro, es equivalente, pero el compilador lo
hace mas rapidocout<<"\n\t\t"<<nro;
}return suma;
}
void resultado(int s){
cout<<"\n\n\tSUMA : "<<s;}
SUMA DE LOS DIEZ PRIMEROS NÚMEROS IMPARES
#include <iostream>using std::cout;using std::cin;using std::endl;
int generar();void resultado(int);
int suma=0;
19
int main(){
cout<<"\n\t\t\t\tUSO DE FOR\n\n";cout<<"\n\tGenerar los diez primeros numeros impares y determinar su suma\n\n";cout<<"\n\t\tNUMEROS\n";generar();resultado(suma);cout<<endl;return 0;
}
int generar(){
for(int nro=1;nro<=20;nro+=2) //Los programas no deben estar condicionados por valores cal por nosotros
{suma+=nro; cout<<"\n\t\t"<<nro;
}return suma;
}
void resultado(int s){
cout<<"\n\n\tSUMA : "<<s<<"\n\n";}
20
MENÚ CON DECISIONES, USO DE FOR, IF
/*1. Desplegar un numero con sus digitos invertidos entre 1 - 999 999 9992. Generar n numeros entre 1 y 10 (n es la cantidad a generar)
Ejemplo: si n=2 entonces aparece 1,2 y su suma si n=5 entonces aparece 1,2,3,4,5 y su suma
Si no se ingresa un numero entre 1 y 10 sale que es numero erroneoy se queda ahì..no regresa al menu
3. Fin*/
#include <iostream>using std::cout;using std::cin;using std::endl;
int titulos();void controlar(int); /*Aqui solo voy a verificar, no retorna nada, el programa va a definir que hacer
si me equivoco, si escogì alguna, si quiero terminar*/void opciones(int);int ingnumero();void validar1(int); //Verificar que el numero estè entre 1 - 999 999 999void invertir(int);void validar2(int);void generar(int);
int opc, nro;
int main(){
titulos();controlar(opc);cout<<endl;return 0;
}
int titulos(){
cout<<"\n\n\tUSO DE ESTRUCTURAS IF, SWITCH, FOR\n\n";cout<<"\n\n\tOPCIONES\n";cout<<"\n1. Desplegar un numero con sus digitos invertidos\n";cout<<"\n2. Generar n numeros entre 1 y 10\n";cout<<"\n3. Fin\n";cout<<" Digite opcion : ";cin>>opc;return opc;
}
void controlar(int op)21
{for(int opcion=op;opcion!=3;opcion=opc) //porque si digito 3, entonces ahì se acabo el
programa // de qué depende?? unicamente de la opción que nosotros digitemos,
de nada más //DE LEY ES OPC AHI Y NRO ABAJO, SINO VA A
CAMBIAR MUCHO{
if(opcion==1||opcion==2)opciones(opc);
elsecout<<"\nOPCION ERRADA\n\n";
titulos();}
}
void opciones(int op12){
switch(op12){
case 1 :cout<<"\n Numeros entre 1 - 999 999 999\n\n";ingnumero();validar1(nro);invertir(nro);break;
case 2 :cout<<"\n Numeros entre 1 - 10\n\n";ingnumero();validar2(nro);generar(nro);break;
default : //aqui solo pongo por cumplir con la estructura del formato de switch, pero la verdad
//no lo necesito, aquì solo ingresaron las opciones 1 y 2cout<<"ESTA OPCION NUNCA OCURRE";
}}
int ingnumero(){
cout<<"\n\nIngrese un numero ";cin>>nro;return nro;
}
void validar1(int n) //Estoy aqui hasta que me ingrese un numero correcto (la condicion sea falsa){
for (int numero=n;numero<1||numero>999999999;numero=nro){
cout<<"\n\nNumero errado\n";22
ingnumero();}
}
void invertir(int cantidad){
int residuo;cout<<"\n Numero invertido : ";for (int cociente=cantidad;cociente>10;cociente/=10){
residuo=cociente;residuo%=10;cout<<residuo<<" ";
}cout<<cociente;
}
void validar2(int nu) //Estoy aqui hasta que me ingrese un numero correcto (la condicion sea falsa){
for (int nume=nu;nume<1||nume>10;nume=nro){
cout<<"\n\nNumero errado\n";ingnumero();
}}
void generar (int numerito){
int suma=0,i=0;cout<<"\n\t Numeros : \n";for(int nros=numerito;nros!=0;nros--){
i++;suma+=i;cout<<"\n\t"<<i;
}cout<<"\n\t Suma = "<<suma;
}
MENÚ ORDENAR NUMEROS, HALLAR TERCER LADO TRIANGULO, FACTORIAL#include <iostream>#include <cmath>using std::cin;using std::cout;using std::endl;
int titulos();void controlar(int);void opciones(int);int ingnums(); //Ordenar tres numeros descendentementeint ordenar(int,int,int);void desplegar(int,int,int);
23
int inglados();void verifl1(int);void verifl2(int);int terlado(int,int);int ingnro();void verifnro(int);int factorial(int);
int opc,n1,n2,n3,a=0,b=0,c=0,l1,l2,num;
int main(){
titulos();controlar(opc);cout<<endl;return 0;
} int titulos(){
cout<<"\n\n\n\tUSO DE ESTRUCTURAS SWITCH, IF Y FOR\n\n";cout<<"\n\nOPCIONES : \n\n";cout<<"\n\t1. Ordenar tres numeros descendentemente \n\n";cout<<"\n\t2. Generar el tercer lado de un triangulo dados dos lados \n\n";cout<<"\n\t3. Generar el factorial de un numero \n\n";cout<<"\n\t4. Fin \n\n";cout<<endl;cout<<"\n\n Digite opcion seleccionada : ";cin>>opc;return opc;
}void controlar (int opcion){
for(int op=opcion;op!=4;op=opc){
if(op==1||op==2||op==3)opciones(opc);
else{
cout<<"\n\n OPCION ERRADA\n\n";titulos();
}}
}void opciones (int op123){
switch(op123){
case 1 :ingnums();ordenar(n1,n2,n3);desplegar(a,b,c);
24
break;case 2 :
cout<<"\n\tIngrese longitudes de lado del 1 al 10 \n\n";inglados();verifl1(l1);verifl2(l2);terlado(l1,l2);titulos();break;
case 3 :cout<<"\n\tIngrese numero del 1 al 10 ";ingnro();verifnro(num);factorial(num);break;
default :cout<<"ESTA OPCION NUNCA OCURRE";
}}int ingnums(){
cout<<"\n Ingrese numero 1 : ";cin>>n1;cout<<"\n Ingrese numero 2 : ";cin>>n2;cout<<"\n Ingrese numero 3 : ";cin>>n3;return n1,n2,n3;
}int ordenar(int nume1,int nume2, int nume3){
if(nume1>=nume2&&nume2>=nume3){
a=nume1;b=nume2;c=nume3;
}if(nume2>=nume3&&nume3>=nume1){
a=nume2;b=nume3;c=nume1;
}if(nume3>=nume1&&nume1>=nume2){
a=nume3;b=nume1;c=nume2;
}if(nume1>=nume3&&nume3>=nume2){
a=nume1;25
b=nume3;c=nume2;
}if(nume2>=nume1&&nume1>=nume3){
a=nume2;b=nume1;c=nume3;
}if(nume3>=nume2&&nume2>=nume1){
a=nume3;b=nume2;c=nume1;
}return a,b,c;
}void desplegar(int aa, int be, int ce){
cout<<"\n\tEn orden descendente los numeros son : "<<aa<<" "<<be<<" "<<ce<<endl;titulos();
}int inglados(){
cout<<"\n Ingrese lado 1 : ";cin>>l1;cout<<"\n Ingrese lado 2 : ";cin>>l2;return l1,l2;
}void verifl1(int lad1){
for(int lado1=lad1;0>lado1||lado1>10;lado1=l1){
cout<<"\nLado errado\n";inglados();
}}void verifl2(int lad2){
for(int lado2=lad2;0>lado2||lado2>10;lado2=l2){
cout<<"\nLado errado\n";inglados();
}}int terlado(int lad1,int lad2){
int sum=0,res=0;sum=lad1+lad2;res=abs(lad1-lad2)+1;cout<<"\n Longitudes posibles del tercer lado : ";
26
for(int i=res;i<sum;i++)cout<< i <<" , ";
return i;}
int ingnro(){
cout<<"\nIngrese el numero : ";cin>>num;return num;
}
void verifnro(int numero){
for (int nu=numero;1>nu&&nu>10;nu=num){
cout<<"\nNumero errado ";ingnro();
}}
int factorial(int numro){
int factorial=1;for(int nn=numro; nn!=0;nn--)
factorial*=nn;cout<<"\n\n Factorial = "<<factorial;return factorial;
}
27
18/10/2010 y 20/10/2010
USO DE DO WHILE ENCONTRAR LAS CINCO PRIMERAS POTENCIAS DE DOS Y SUMARLAS
//Generar los cinco primeros numeros que sean potencias de dos NO MULTIPLOS, POTENCIAS
#include <iostream>#include<cmath>using std::cin;using std::cout;using std::endl;
void generar();int main(){
cout<<"\n\t\tUSO ESTRUCTURAS WHILE Y DO WHILE\n\n";cout<<"\n\tCINCO PRIMEROS VALORES POTENCIAS DE DOS\n\n";cout<<"\n\tValores\n";generar();cout<<endl;return 0;
}void generar(){
int nro,contador=1,suma=0;do{
nro=pow(2,contador);cout<<"\n\t"<<nro;suma+=nro;contador++;
}while (contador<=5);cout<<"\n\n SUMA = "<<suma<<endl;
}
USO DE WHILE ENCONTRAR LAS CINCO PRIMERAS POTENCIAS DE DOS Y SUMARLAS
//Generar los cinco primeros numeros que sean potencias de dos NO MULTIPLOS, POTENCIAS
#include <iostream>#include<cmath>using std::cin;using std::cout;using std::endl;
void generar();int main(){
cout<<"\n\t\tUSO ESTRUCTURAS WHILE Y DO WHILE\n\n";cout<<"\n\tCINCO PRIMEROS VALORES POTENCIAS DE DOS\n\n";cout<<"\n\tValores\n";
28
generar();cout<<endl;return 0;
}void generar(){
int nro,contador=1,suma=0;while (contador<=5){
nro=pow(2,contador);cout<<"\n\t"<<nro;suma+=nro;contador++;
}cout<<"\n\n SUMA = "<<suma<<endl;
}
ENCONTRAR EL PRIMER NUMERO POTENCIA DE DOS MAYOR A MIL
#include <iostream>#include<cmath>using std::cin;using std::cout;using std::endl;
void generar();int main(){
cout<<"\n\t\tUSO ESTRUCTURAS WHILE Y DO WHILE\n\n";cout<<"\n\tPRIMER VALOR POTENCIA DE DOS MAYOR A MIL\n\n";generar();cout<<endl;return 0;
}void generar(){
int nro,contador=1,suma=0;do{
nro=pow(2,contador);contador++;
}while (nro<1000);cout<<"\n\n El numero es = "<<nro<<endl;
}
DETERMINAR SI EL NUMERO INGRESADO ES PRIMO O NO
#include <iostream>using std::cin;using std::cout;using std::endl;
29
void control();int ingnro();void primo(int);int numero;
int main(){
cout<<"\n\nDETERMINAR SI UN NUMERO ES PRIMO O NO\n\n";control();cout<<endl;return 0;
}void control(){
do{
ingnro();if(numero>1)
primo(numero);}while(numero>1);
}int ingnro(){
cout<<"\n\tIngrese un numero > 1 : ";cin>>numero;return numero;
}
void primo(int cociente){
int residuo=0,ayuda=0;//Para ver los posibles cocientes a los que debo ir dividiendocociente/=2; while (cociente>1) //el cociente no debe valer uno, xq ahi todos los numeros serian primos{
residuo=numero; //siempre chequeo versus el mismo numero que entroresiduo%=cociente; //Esta determina el residuo de una vezif (residuo>0)
cociente --;else //Aqui yo forzo a terminar el while, ya no tiene sentido chequear{ //Para el resto de cocientes
cociente=1; //para que al regresar a while, ya no chequee nada(while de cociente>1)ayuda=1;
}}if(ayuda==0)
cout<<"\nEL NUMERO "<<numero<<" SI ES PRIMO \n";else
cout<<"\nEL NUMERO "<<numero<<" NO ES PRIMO \n";}
30
DETERMINAR SI EL NUMERO INGRESADO ES PRIMO O NO Y QUE APAREZCA PORQUE (FACTORES)
#include <iostream>using std::cin;using std::cout;using std::endl;
void control();int ingnro();int primo(int);void desplegar(int,int,int,int);int numero,cociente,ayuda=0,y,w;
int main(){
cout<<"\n\nDETERMINAR SI UN NUMERO ES PRIMO O NO\n\n";control();cout<<endl;return 0;
}void control(){
do{
ingnro();if(numero>1){
primo(numero);desplegar(numero,y,ayuda,w);
}}while(numero>1);
}int ingnro(){
cout<<"\n\tIngrese un numero > 1 : ";cin>>numero;return numero;
}int primo(int cociente){
int residuo=0;//Para ver los posibles cocientes a los que debo ir dividiendocociente/=2; while (cociente>1) //el cociente no debe valer uno, xq ahi todos los numeros serian primos{
residuo=numero; //siempre chequeo versus el mismo numero que entroresiduo%=cociente; //Esta determina el residuo de una vezif (residuo>0){
cociente --;ayuda=0;
31
}else{
y=cociente;w=numero/cociente;cociente=1;ayuda=1;
}}return ayuda,y,w;
}
void desplegar(int nroo, int ye,int ayu,int we){
if(ayu==0)cout<<"\n EL NUMERO "<<nroo<<" SI ES PRIMO \n";
else{
cout<<"\n EL NUMERO "<<nroo<<" NO ES PRIMO \n";cout<<"\n "<<nroo<<" = "<<we<<" * "<<ye;cout<<endl;
}}
32
25/10/2010 PROGRAMA PARA CALCULAR UNA SERIE#include <iostream>#include <cmath>using std::cin;using std::cout;using std::endl;
void titulos();int ingreso();void control();void sumatorio(int); //Esta va a decir cuantos terminos se van a calcularint numerador(int);int denominador(int);void terminos(int,int,int,int); //Se encarga de calcular cada termino y desplegar cada termino individualmente
double suma; //Lo pongo 0.0 porque es doubleint n,tres,cuatro,cinco;
int main(){
control();cout<<endl;return 0;
}
void control(){
for(int fin=0;fin>=0;fin=n) // n es el numero de terminos que vamos a calcular{
titulos();ingreso();
if(n>=0&&n<=6){double suma=0.0;sumatorio(n);}else{
if (n>6)cout<<"\n\tValor no contemplado\n\n";
}}
}
void titulos(){
cout<<"\n\n\t\tCALCULO DEL SUMATORIO\n\n";cout<<"\n\t\t(3^n+4^n)/5^n\n";cout<<"\tPara finalizar ingrese un numero negativo\n\n";
}
int ingreso()33
{cout<<"\n\tDigite un numero de 0 a 6 : ";cin>>n;suma=0;return n;
}
void sumatorio(int ene){
for(int j=ene;j>=0;j--){
numerador(j);denominador(j);terminos(tres,cuatro,cinco,j);
}cout<<"\n\tSUMATORIO = "<<suma;
}
int numerador(int nt){
tres=pow(3,nt);cuatro=pow(4,nt);return tres,cuatro;
}
int denominador(int nute){
cinco=pow(5,nute);return cinco;
}
void terminos (int tre,int cua,int ci,int subind){
double termino;termino=((double) tre + (double) cua)/(double) ci; //voy a cambiar el tipo de dato de int a
double, porque sino daria errorsuma+=termino;cout<<"\n\tT"<<subind<<" = ( "<<tre<<" + "<<cua<<" ) / "<<ci<<" = "<<termino;
}
34
INTERCAMBIAR ELEMENTOS DENTRO DE UN ARREGLO 17/11/2010/*funcion que me define el arreglofuncion que controle si deseo continuar o terminarfuncion que permita ingresar las posiciones de los elementoscontrolar y validar que las posiciones sean correctasfuncion para desplegar los cambios*/
#include <iostream>using std::cout;using std::cin;using std::endl;#include <iomanip>using std::setw;
void inicializar();void verarreglo(int[],int);void controlar(int []);int posiciones(int); //hay un argumento de tipo int que es el tamano, necesito controlarlovoid intercambio(int[],int,int);
const int tamano=10;int p1,p2; //Son las posiciones de los elementos de mi programa
int main(){
cout<<"\n\t\tARREGLOS DE UNA DIMENSION\n\n";cout<<"\n\tINTERCAMBIAR ELEMENTOS\n\n";cout<<"\n\tElementos"<<setw(10)<<" Valor del elemento\n";inicializar();cout<<endl;return 0;
}
void inicializar (){
int c[tamano]={-20,30,0,400,80,100,-35,10,15,80};verarreglo(c,tamano);controlar(c);
}
void verarreglo(int a[],int contele){
for(int i=0;i<contele;i++){
cout<<"\n\t"<<setw(3)<<"[ "<<i<<" ] = "<<setw(11)<<a[i];}
}
void controlar(int d[]){
char sino;do{
posiciones(tamano);intercambio(d,p1,p2);verarreglo(d,tamano);
35
cout<<"\n\tSi desea continuar digite s : ";cin>>sino;
}while(sino=='s');
}
int posiciones(int nroele){
do{
cout<<"\n\n\tIngrese posiciones : \n";cout<<"\n\tPosicion 1 : ";cin>>p1;cout<<"\n\tPosicion 2 : ";cin>>p2;
}while((p1<0||p1>nroele-1)||(p2<0||p2>nroele-1)); //Cuando ingrese mal
simplemente hace que ingrese
//nuevamente los valoresreturn p1,p2;
}
void intercambio(int b[], int pos1, int pos2){
int noborrar;noborrar=b[pos1];b[pos1]=b[pos2];b[pos2]=noborrar;
}
22/11/2010 PUBLICAR ASTERISCOS SEGÚN NUMERO DE ELEMENTOS
/*funcion que me define el arreglofuncion que controle si deseo continuar o terminarfuncion que permita ingresar las posiciones de los elementoscontrolar y validar que las posiciones sean correctasfuncion para desplegar los cambios*/
#include <iostream>using std::cout;using std::cin;using std::endl;#include <iomanip>using std::setw;
void inicializar();void verarreglo(int[],int);void asterisco(int[],int);
const int tamano=10;
int main(){
cout<<"\n\t\t\ARREGLOS DE UNA DIMENSION\n\n";cout<<"\n\tINICIALIZACION DE ARREGLOS POR EL TECLADO\n\n";cout<<"\n\tElementos"<<setw(10)<<" Valor del elemento\n";inicializar();cout<<endl;
36
return 0;}
void inicializar (){
int c[tamano];cout<<"\n\n\tDigite elementos : \n\n";for (int j=0; j<tamano;j++){
cout<<setw(5)<<" [ "<<j<<setw(5)<<" ] : ";cin>>c[j];
}verarreglo(c,tamano);
}
void verarreglo(int d[],int canele){
cout<<"\n\n\tArreglo : ";for(int i=0;i<canele;i++){
cout<<setw(4)<<d[i];}asterisco(d,tamano);
}
void asterisco(int e[],int cant){
for(int f=0;f<cant;f++){
int p;char ast;ast='*';cout<<"\n"<<e[f]<<endl;p=e[f];for(int m=0;m<p;m++){ cout<<"*";}
}}
24/11/2010 ORDENAR ARREGLO
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;
void iniciarar();void ordenar(int [],int);void desplegar(int [],int);
const int tamano=10;
int main(){
cout<<"\n\n\tOrdenamiento de arreglos\n\n";cout<<"\n\ten orden ascendente\n";iniciarar();
37
cout<<endl;return 0;
}
void iniciarar(){
int arreglo[tamano];cout<<"\n\tIngrese : ";for(int j=0;j<tamano;j++){
cout<<setw(4)<<"\n[ "<<j<<setw(4)<<" ] : ";cin>>arreglo[j];
}cout<<"\n\n\t Arreglo : ";desplegar(arreglo,tamano);ordenar(arreglo,tamano);
}
void desplegar(int a[],int canele){
for(int k=0;k<canele;k++){
cout<<setw(4)<<a[k];}
}
void ordenar(int b[],int nroele){
for(int barridos=0;barridos<nroele-1;barridos++){
int noborrar;for(int i=0;i<nroele-1;i++){
if (b[i]>b[i+1]){
noborrar=b[i];b[i]=b[i+1];b[i+1]=noborrar;
}}
}cout<<"\n\n Arreglo ordenado : ";desplegar(b,tamano);
}
/*Uso dos estructuras for, una que cuenta el numero de barridosy la otra que les va intercambiando*/
24/11/2010 CAMBIAR UN ELEMENTO DEL ARREGLO
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;
void iniciarar();
38
void ordenar(int [],int);void desplegar(int [],int);void intercambiar(int[]);
const int tamano=10;char sino='s';int posicion,numero;
int main(){
cout<<"\n\n\tOrdenamiento de arreglos\n\n";cout<<"\n\ten orden ascendente\n";iniciarar();cout<<endl;return 0;
}
void iniciarar(){
int arreglo[tamano];cout<<"\n\tIngrese : ";for(int j=0;j<tamano;j++){
cout<<setw(4)<<"\n[ "<<j<<setw(4)<<" ] : ";cin>>arreglo[j];
}cout<<"\n\n\t Arreglo : ";desplegar(arreglo,tamano);ordenar(arreglo,tamano);while (sino=='s')
{intercambiar(arreglo);cout<<"\n\n\tDigite s si desea cambiar un numero del arreglo : ";cin>>sino;
}
}
void desplegar(int a[],int canele){
for(int k=0;k<canele;k++){
cout<<setw(4)<<a[k];}
}
void ordenar(int b[],int nroele){
for(int barridos=0;barridos<nroele-1;barridos++){
int noborrar;for(int i=0;i<nroele-1;i++){
if (b[i]>b[i+1]){
noborrar=b[i];b[i]=b[i+1];b[i+1]=noborrar;
39
}}
}cout<<"\n\n Arreglo ordenado : ";desplegar(b,tamano);
}
void intercambiar(int ab[]){
cout<<"\n\n\tIngrese posicion que desea cambiar : ";cin>>posicion;cout<<"\n\n\tIngrese el nuevo valor de la posicion : ";cin>>numero;
if (posicion>=0&&posicion<=9){
ab[posicion]=numero;desplegar(ab,tamano);
}else{
cout<<"\n\t\tPosicion erronea";intercambiar(ab);
}
}/*Uso dos estructuras for, una que cuenta el numero de barridosy la otra que les va intercambiando*/
29/11/2010 PRODUCTO ENTRE DOS VECTORES – DETERMINAR VENTAS
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;#include <cmath>
void inicializara();void inicializarb();void valorventas(double [],double [],int);
const int tamano=10;double arreglob[tamano],arregloa[tamano];char sino;
int main(){
cout<<"\n\n\tARREGLOS DE UNA DIMENSION\n\n";cout<<"\n\nPRODUCTO ENTRE LOS ELEMENTOS DE DOS VECTORES\n\n";do{
inicializara();inicializarb();valorventas(arregloa,arreglob,tamano);cout<<endl;cout<<"\n\nSi desea ingresar nuevos valores de cantidades y precios
digite s : ";cin>>sino;
}
40
while (sino=='s');return 0;
}
void inicializara(){
cout<<"\n\nIngrese vector a (cantidades vendidas): \n\n";for(int j=0;j<tamano;j++){
cout<<"\n[ "<<j<<" ] = ";cin>>arregloa[j];double y=arregloa[j];double z=fmod(y,int(y));if(arregloa[j]<0||z!=0){
cout<<"\nIngrese nuevamente : ";j-=1;
}}
}
void inicializarb(){
cout<<"\n\nIngrese vector b (precios de los articulos): \n\n";for(int k=0;k<tamano;k++){
cout<<"\n[ "<<k<<" ] = ";cin>>arreglob[k];if(arreglob[k]<=0){
cout<<"\nIngrese nuevamente : ";k-=1;
}}
}
void valorventas(double a[], double b[],int tamano){
cout<<"\n\n"<<setw(7)<<"CANTIDADES"<<setw(10)<<"PRECIOS"<<setw(12)<<"TOTAL"<<endl;
for(int i=0;i<tamano;i++){
double total;total=arregloa[i]*arreglob[i];
cout<<setw(7)<<arregloa[i]<<setw(12)<<arreglob[i]<<setw(12)<<total<<endl;}
}
29/11/2010 ROTAR ELEMENTOS
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;
41
void inicializar();void desplegar(int[],int);void rotar(int[],int);
const int tamano=8;char sino;
int main (){
cout<<"ROTAR ARREGLO";cout<<endl;cout<<"Ingrese arreglo : ";inicializar();return 0;
}
void inicializar(){
int arreglo[tamano];for(int i=0;i<tamano;i++){
cout<<endl;cout<<setw(5)<<" [ "<<i<<" ] : ";cin>>arreglo[i];
}desplegar(arreglo,tamano);
}
void desplegar(int a[],int tam){
for(int j=0;j<tam;j++){
cout<<endl;cout<<a[j];cout<<endl;
}do{cout<<"Si desea rotar el arreglo digite s: ";cin>>sino;rotar(a,tamano);}while(sino=='s');
}
void rotar(int b[],int nroele){
int noborrar=b[0];b[nroele]=noborrar;for (int k=0;k<nroele;k++){
b[k]=b[k+1];cout<<b[k];cout<<endl;
}}
42
08/12/2010 BÚSQUEDA DINÁMICA EN ARREGLOS – BUSQUEDA BINARIA
#include <iostream>using std::cout;using std::cin;using std::endl; #include <iomanip>using std::setw;
void inicioar();void desplegar(const int [],int); //Declaro al arreglo como constante y ese arreglo
//ni por accidente va a ser cambiado a alteradoint ingreso();void busquedabi(const int[],int,int,int); //ibajo, ialto, argumento de busquedavoid encuentra(int,int);char sino;
const int tamanio=15;int imedio, encontrado,ab; // ab: argumento de busqueda
int main(){
cout<<"\n\t\t\t BUSQUEDA BINARIA EN ARREGLOS \n";inicioar();cout<<endl;return 0;
}
void inicioar(){
int arreglo[tamanio]={-50,-45,-30,-10,0,10,25,45,60,86,100,200,310,350,400};desplegar(arreglo,tamanio);do{
ingreso();busquedabi(arreglo,0,tamanio-1,ab);
cout<<"\n\n\tDigite s si desea continuar : ";cin>>sino;
}while(sino=='s');cout<<endl;
}
void desplegar(const int c[], int cantele){
cout<<"\n\n Arreglo ordenado: ";for(int k=0; k<cantele; k++)
cout<<setw(4)<<c[k];}
int ingreso(){
43
cout<<"\n\n\tIngrese el argumento de busqueda : ";cin>>ab;return ab;
}
void busquedabi(const int b[],int ibajo,int ialto,int vbuscado){
while(ibajo<=ialto){
imedio=(ibajo+ialto)/2;if(vbuscado==b[imedio]){
encontrado=b[imedio];encuentra(encontrado,imedio);break; // Rompo la interactividad del while poniendole break aqui
}else{
if(vbuscado<=b[imedio])ialto=imedio-1;
elseibajo=imedio+1;
}}if(ibajo>ialto) // Que significa que no le encontro, por eso llego hasta eso...
cout<<"\n\tEl elemento "<<vbuscado<<" no se encuentra en el arreglo\n"; }
void encuentra(int venco,int pos){
cout<<"\n\tEl elemento "<<venco<<" si se encuentra en el arreglo en la posicion "<<pos;
}
13/12/2010 MENU ARREGLOS DE UNA DIMENSIÓN#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;
void opciones(int);void inicializar(int [],int);void desplegarar(int [],int);void ingresar(int [],int);void rotar(int [],int);void encontrar(int [],int);void ingdato();void buscar(int [],int,int);void despresult(int[],int,int,int,int);
const int tamano=12;int opcion;
44
int arreglo[tamano];
int main(){
cout<<"\n\n\tMENU DE ARREGLOS\n";inicializar(arreglo,tamano);do{
cout<<"\n\t1. Ingresar un arreglo \n";cout<<"\n\t2. Rotar los elementos del vector \n";cout<<"\n\t3. Encontrar los elementos mayor y menor \n";cout<<"\n\t4. Buscar un elemento en el arreglo \n";cout<<"\n\t5. Fin \n";cout<<endl;cout<<"\n\t Digite opcion : ";cin>>opcion;opciones(opcion);
}while(opcion!=5);return 0;
}
void inicializar(int a[],int tam){
for(int i=0;i<tam;i++)a[i]=0;
}
void opciones(int op){
switch (op){
case 1:ingresar(arreglo,tamano);break;
case 2:rotar(arreglo,tamano);break;
case 3:encontrar(arreglo,tamano);break;
case 4:ingdato();break;
case 5:break;
default:cout<<"\n\tOpcion no valida\n";break;
}}
45
void ingresar(int c[],int can){
cout<<"\n\tIngrese los elementos del vector : \n";for(int k=0;k<can;k++){
cout<<"\n\ta [ "<<k<<" ] : ";cin>>c[k];
}desplegarar(c,can);
}
void desplegarar(int b[],int nroele){
cout<<"\n\t Arreglo : ";for(int j=0;j<nroele;j++)
cout<<setw(5)<<b[j];cout<<endl;
}
void rotar(int d[],int nro){
int noborrar;noborrar=d[0];d[nro]=noborrar;for(int m=0;m<nro;m++){
d[m]=d[m+1];}desplegarar(d,tamano);
}
void encontrar(int e[],int canele){
int menor,mayor;for(int p=0;p<canele;p++){
if(p==0){
menor=e[p];mayor=e[p];
}if(e[p]<menor)
menor=e[p];
if(e[p]>mayor)mayor=e[p];
}
cout<<"\n\tELEMENTO MAYOR : "<<mayor<<" , POSICION : ";46
for(int s=0;s<canele;s++){
if(e[s]==mayor)cout<<s<<" , ";
}cout<<"\n\tELEMENTO MENOR : "<<menor<<" , POSICION : ";for(int t=0;t<canele;t++){
if(e[t]==menor)cout<<t<<" , ";
}cout<<endl;
}
void ingdato(){
int dato;cout<<"\n\tIngrese el argumento de busqueda : ";cin>>dato;buscar(arreglo,tamano,dato);
}
void buscar(int f[], int taman, int numero){
int aux[tamano];int respuesta,contador=0;for(int r=0;r<taman;r++){
if(f[r]==numero){
aux[r]=1;respuesta=1;contador++;
}}despresult(aux,respuesta,contador,taman,numero);
}
void despresult(int au[], int res,int cont,int nroelementos,int numerito){
if (res==1){
cout<<"\n\n\tEl numero "<<numerito<<" si se encuentra en el arreglo "<<cont<<" veces, \n\ten las posiciones : ";
for (int n=0;n<nroelementos;n++){
if(au[n]==1)cout<<n<<" , ";
}47
}else
cout<<"\n\n\tEl numero "<<numerito<<" no se encuentra en el arreglo \n";cout<<endl;
}
DETERMINANTE DE UNA MATRIZ 15/12/2010
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;#include <cmath>//Determinante de una matriz de tercer orden - Metodo de menores
const int fil=3; //Tambien podria ser una unica variable, porque const int col=3; //es una matriz cuadrada
void inmatriz();int determinante(const int [][col]);void desplegar(const int [][col]);void desplegar1(int);
int resultado=0;
int main(){
cout<<"\n\n\tCALCULO DEL DETERMINANTE DE UNA MATRIZ\n\n";inmatriz();cout<<endl;return 0;
}
void inmatriz(){
int matriz[fil][col];cout<<"\nIngrese los valores de la matriz por filas \n";
for(int i=0;i<fil;i++){
48
cout<<endl;for(int j=0;j<col;j++){
cout<<"\n"<<" ["<<i<<"]["<<j<<"] = ";cin>>matriz[i][j];
}}
determinante(matriz);desplegar(matriz);desplegar1(resultado);cout<<endl;
}
int determinante (const int a[][col]){
int x=0,signo;for (int y=0;y<col;y++){
signo=pow(-1,x+y);if(y==0){
resultado+=(signo*a[x][y])*(a[x+1][y+1]*a[x+2][y+2]-a[x+1][y+2]*a[x+2][y+1]);
}else
if(y==1)resultado+=(signo*a[x][y])*(a[x+1][y-1]*a[x+2]
[y+1]-a[x+2][y-1]*a[x+1][y+1]);else
resultado+=(signo*a[x][y])*(a[x+1][y-2]*a[x+2][y-1]-a[x+2][y-2]*a[x+1][y-1]);
}return resultado;
}
void desplegar(const int b[][col]){
cout<<"\n\tMATRIZ INICIAL\n";for(int m=0;m<fil;m++){
cout<<endl;for (int n=0;n<col;n++)
cout<<setw(4)<<b[m][n];}
}
void desplegar1(int r){
cout<<"\n\n\tDeterminante = "<<r;
}
MULTIPLICACIÓN DE MATRICES 15/12/2010
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>
49
using std::setw;
const int fil=2;const int colfil=2;const int col=3; //Debemos definir estas cosas antes de los
//prototipos, porque en estos ya debemos poner
// al menos el numero de columnasvoid inmatrices();void multiplicar(const int [][colfil],const int[][col],int[][col]); //Porque nuestras matrices ingresadas no deben cambiar ni por error, la tercera si cambiavoid desplegar(const int [][colfil],const int[][col],const int[][col]);//Aqui si las tres constantes porque solo las voy a leer y publicar
int main(){
cout<<"\n\n\tMULTIPLICACION DE MATRICES\n\n";inmatrices();cout<<endl;return 0;
}
void inmatrices(){
int mat1[fil][colfil]={{-1,3},{5,4}};int mat2[colfil][col]={{1,2,5},{3,6,-3}};int mat3[fil][col]={0}; // Se lo debe inicializar para que no existan conflictos en
el formultiplicar(mat1,mat2,mat3);desplegar(mat1,mat2,mat3);cout<<endl;
}
void multiplicar(const int a[][colfil],const int b[][col],int c[][col]) {
for(int i=0;i<fil;i++) // Maneja las filas de la primera matriz{
for(int k=0;k<col;k++) // Maneja las columnas de la segunda matriz{
for(int j=0;j<colfil;j++) // Maneja columnas de la primera y filas de la segunda
c[i][k]=c[i][k]+a[i][j]*b[j][k];
}}
}
void desplegar(const int m1[][colfil],const int m2[][col],const int m3[][col]) {
cout<<"\n\tMATRIZ A \n";for (int m=0;m<fil;m++){
cout<<endl; //Salto una linea despues de publicar cada fila MUY IMPORTANTE!!!!!!
for(int n=0;n<colfil;n++)cout<<setw(4)<<m1[m][n];
}cout<<endl;
50
cout<<"\n\tMATRIZ B \n";for (int p=0;p<colfil;p++){
cout<<endl;for(int q=0;q<col;q++)
cout<<setw(4)<<m2[p][q];}cout<<endl;cout<<"\n\tMATRIZ PRODUCTO \n";for (int x=0;x<fil;x++){
cout<<endl;for(int y=0;y<col;y++)
cout<<setw(4)<<m3[x][y];}
}
MATRIZ COFACTORES 22/12/2010
#include <iostream>using std::cout;using std::cin;using std::endl;#include <iomanip>using std::setw;#include <cmath>
//Voy a necesitar una nueva matriz que va a ser la matriz de cofactoresconst int fil=3;const int col=3;
void inicioma(); //Aqui debo tener dos matrices : la original y la de cofactoresvoid cofactores(const int[][col],int [][col]);void despliegue(const int[][col],int [][col]);
int main(){ cout<<"\n\tCALCULO DE LA MATRIZ DE COFACTORES\n\n"; inicioma(); cout<<endl; return 0;}
void inicioma(){ int matriz[fil][col]={{-1,1,2},{3,4,-2},{1,2,3}}; int a[fil][col]; cofactores(matriz,a);
cout<<endl;}
void cofactores(const int b[][col],int cofactor[][col]){ int signo; for(int i=0;i<fil;i++) { if (i==0) {
51
for(int j=0;j<fil;j++) { signo=pow(-1,i+j); if(j==0) cofactor[i][j]=signo*(b[i+1][j+1]*b[i+2][j+2]-b[i+1][j+2]*b[i+2][j+1]); if(j==1) cofactor[i][j]=signo*(b[i+1][j-1]*b[i+2][j+1]-b[i+2][j-1]*b[i+1][j+1]); if(j==2) cofactor[i][j]=signo*(b[i+1][j-2]*b[i+2][j-1]-b[i+2][j-2]*b[i+1][j-1]); } } else { if(i==1) { for(int j=0;j<fil;j++) { signo=pow(-1,i+j); if(j==0) cofactor[i][j]=signo*(b[i-1][j+1]*b[i+1][j+2]-b[i+1][j+1]*b[i-1][j+2]); if(j==1) cofactor[i][j]=signo*(b[i-1][j-1]*b[i+1][j+1]-b[i+1][j-1]*b[i-1][j+1]); if(j==2) cofactor[i][j]=signo*(b[i-1][j-2]*b[i+1][j-1]-b[i+1][j-2]*b[i-1][j-1]); } } else { for(int j=0;j<fil;j++) { signo=pow(-1,i+j); if(j==0) cofactor[i][j]=signo*(b[i-2][j+1]*b[i-1][j+2]-b[i-1][j+1]*b[i-2][j+2]); if(j==1) cofactor[i][j]=signo*(b[i-2][j-1]*b[i-1][j+1]-b[i-1][j-1]*b[i-2][j+1]); if(j==2) cofactor[i][j]=signo*(b[i-2][j-2]*b[i-1][j-1]-b[i-1][j-2]*b[i-2][j-1]); } } } } despliegue(b,cofactor);}
void despliegue(const int d[][col],int cofact[][col]){
cout<<"\n\tMatriz original : \n";for (int p=0;p<col;p++){
cout<<endl;for(int q=0;q<fil;q++)
cout<<setw(4)<<d[p][q];}cout<<endl;cout<<"\n\tMatriz de cofactores : \n";for (int r=0;r<col;r++){
cout<<endl;for(int s=0;s<fil;s++)
52
cout<<setw(4)<<cofact[r][s];}
}
MATRIZ INVERSA 22/12/2010
#include <iostream>using std::cout;using std::cin;using std::endl;#include <iomanip>using std::setw;#include <cmath>
//Voy a necesitar una nueva matriz que va a ser la matriz de cofactoresconst int fil=3;const int col=3;
void inicioma(); //Aqui debo tener dos matrices : la original y la de cofactoresvoid cofactores(const int[][col],int [][col]);void despliegue(const int[][col],int [][col]);int determinante(const int [][col]);void inversa(int,int [][col]);
int resultado;
int main(){ cout<<"\n\tCALCULO DE LA MATRIZ DE COFACTORES\n\n"; inicioma(); cout<<endl; return 0;}
void inicioma(){ int matriz[fil][col]={{-1,1,2},{3,4,-2},{1,2,3}}; int a[fil][col]; cofactores(matriz,a);
cout<<endl;}
void cofactores(const int b[][col],int cofactor[][col]){ int signo; for(int i=0;i<fil;i++) { if (i==0) { for(int j=0;j<fil;j++) { signo=pow(-1,i+j); if(j==0) cofactor[i][j]=signo*(b[i+1][j+1]*b[i+2][j+2]-b[i+1][j+2]*b[i+2][j+1]); if(j==1) cofactor[i][j]=signo*(b[i+1][j-1]*b[i+2][j+1]-b[i+2][j-1]*b[i+1][j+1]); if(j==2) cofactor[i][j]=signo*(b[i+1][j-2]*b[i+2][j-1]-b[i+2][j-2]*b[i+1][j-1]); } }
53
else { if(i==1) { for(int j=0;j<fil;j++) { signo=pow(-1,i+j); if(j==0) cofactor[i][j]=signo*(b[i-1][j+1]*b[i+1][j+2]-b[i+1][j+1]*b[i-1][j+2]); if(j==1) cofactor[i][j]=signo*(b[i-1][j-1]*b[i+1][j+1]-b[i+1][j-1]*b[i-1][j+1]); if(j==2) cofactor[i][j]=signo*(b[i-1][j-2]*b[i+1][j-1]-b[i+1][j-2]*b[i-1][j-1]); } } else { for(int j=0;j<fil;j++) { signo=pow(-1,i+j); if(j==0) cofactor[i][j]=signo*(b[i-2][j+1]*b[i-1][j+2]-b[i-1][j+1]*b[i-2][j+2]); if(j==1) cofactor[i][j]=signo*(b[i-2][j-1]*b[i-1][j+1]-b[i-1][j-1]*b[i-2][j+1]); if(j==2) cofactor[i][j]=signo*(b[i-2][j-2]*b[i-1][j-1]-b[i-1][j-2]*b[i-2][j-1]); } } } } despliegue(b,cofactor);}
void despliegue(const int d[][col],int cofact[][col]){
int adj[fil][col];cout<<"\n\tMatriz original : \n";for (int p=0;p<col;p++){
cout<<endl;for(int q=0;q<fil;q++)
cout<<setw(4)<<d[p][q];}cout<<endl;cout<<"\n\tMatriz de cofactores : \n";for (int r=0;r<col;r++){
cout<<endl;for(int s=0;s<fil;s++)
cout<<setw(4)<<cofact[r][s];}cout<<"\n\n\tMatriz adjunta : \n";for (int rr=0;rr<col;rr++){
cout<<endl;for(int ss=0;ss<fil;ss++){
adj[rr][ss]=cofact[ss][rr];cout<<setw(4)<<adj[rr][ss];
54
}}determinante(d);inversa(resultado,adj);
}
int determinante (const int a[][col]){
int x=0,signo;for (int y=0;y<col;y++){
signo=pow(-1,x+y);if(y==0){
resultado+=(signo*a[x][y])*(a[x+1][y+1]*a[x+2][y+2]-a[x+1][y+2]*a[x+2][y+1]);
}else
if(y==1)resultado+=(signo*a[x][y])*(a[x+1][y-1]*a[x+2]
[y+1]-a[x+2][y-1]*a[x+1][y+1]);else
resultado+=(signo*a[x][y])*(a[x+1][y-2]*a[x+2][y-1]-a[x+2][y-2]*a[x+1][y-1]);
}cout<<endl;cout<<"\n\tDeterminante : "<<resultado;cout<<endl;return resultado;
}
void inversa(int deter,int cof[][col]){
int numero;cout<<"\n\tMatriz inversa : \n";for (int xx=0;xx<fil;xx++){
cout<<endl;for(int yy=0;yy<col;yy++){
numero=cof[xx][yy];cout<<setw(6)<<numero<<"/"<<deter;
}}
}
APUNTADORES 22/12/2010
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;
const int fil=3;const int col=3;
void inicioarreglo();
55
void desplegar1(const int [][col]); //Desplegar la matriz como siempre lo hacemosvoid desplegar2(int [][col]);void desplegar3(int [][col]); // Aqui voy a desplegar las direcciones de los elementos de la matrizvoid ingresar(int [][col]); //Aqui ya debe ser variable la matriz para que me deje cambiar sus elementos
int main(){ cout<<"\n\t\tUSO DE APUNTADORES EN ARREGLOS\n\n"; inicioarreglo(); cout<<endl; cout<<endl; return 0;}
void inicioarreglo(){ int matriz[fil][col]={{-10,0,4},{15,-20,50},{1,2,3}}; desplegar1(matriz); desplegar2(matriz); desplegar3(matriz); ingresar(matriz); desplegar3(matriz);}
void desplegar1(const int a[][col]){ cout<<"\n\nMatriz A: \n"; for(int i=0;i<fil;i++) { cout<<endl; for(int j=0;j<col;j++) { cout<<setw(4)<<a[i][j]; } }}
void desplegar2(int b[][col]){ int *apele; // Apuntador de los elementos de la matriz - VARIABLE LOCAL, solo la usaremos aqui cout<<"\n\nMatriz de direcciones de los elementos de la matriz A : \n"; for(int x=0;x<fil;x++) { cout<<endl; for(int y=0;y<col;y++) { apele=&b[x][y]; cout<<setw(10)<<apele; //Sin el asterisco porque quiero que publique las direcciones no los valores } }}
//Usando las direcciones se van a publicar lo elementos de la matriz, pero ahora usando sus DIRECCIONES...//va a imprimir basicamente lo mismo, pero la manera de hacerlo será diferente
56
void desplegar3(int c[][col]){ int *direle; cout<<"\n\nDespliegue de los elementos de la matriz usando sus direcciones: \n"; for(int m=0;m<fil;m++) { cout<<endl; for(int n=0;n<col;n++) { direle=& c[m][n]; cout<<setw(4)<<*direle; } }}
void ingresar(int d[][col]){ int *direccion; cout<<"\nIngrese : \n"; for(int k=0;k<fil;k++) { cout<<endl; for(int l=0;l<col;l++) { cout<<"[ "<<k<<" ][ "<<l<<" ] : "; direccion=&d[k][l]; cin>>*direccion; }
}
}
TODO APUNTADORES 03/01/2011
#include <iostream>using std::cin;using std::cout;using std::endl;#include <iomanip>using std::setw;const int fil=3;const int col=3;void ingmat();void despmat(int [][col]);void sumar(int [][col]);void despsuma(int);int main(){ cout<<"\n\n\tSUMAR LOS ELEMENTOS DE UNA MATRIZ\n\n"; ingmat(); cout<<endl; return 0;}void ingmat(){ int mat[fil][col], *apunta; cout<<"\nIngrese los elementos por columnas : \n"; for(int i=0;i<fil;i++) {
57
for(int j=0;j<col;j++) { apunta=&mat[i][j]; cout<<" [ "<<j<<" ] [ "<<i<<" ] : "; cin>>*apunta; } } despmat(mat);}void despmat(int a[][col]){ int *apele; cout<<"\nMatriz : \n"; for(int k=0;k<fil;k++) { cout<<endl; for(int l=0;l<col;l++) { apele=&a[l][k]; cout<<setw(5)<<*apele; } } sumar(a);}void sumar(int b[][col]){ int suma=0;
int *aptotal;aptotal=&suma;
int *direc; //int suma=0; for(int m=0;m<fil;m++) { for(int n=0;n<col;n++) { direc=&b[m][n]; *aptotal+=*direc; } } cout<<"\n\n\tLa suma de todos los elementos del arreglo es : "<<*aptotal; cout<<endl;}
58