Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Problemas Resueltos de C$2B$2B
Problemas Resueltos de C$2B$2B
es
Problemas resueltos de
programacin en C++
www.fisicaeingenieria.es
Luis Muoz Mato
2012
www.fisicaeingenieria.es
www.calculadorasonlines.es
1.- Escribir un programa que haga el producto de dos matrices 3x3. El programa debe
incluir un procedimiento que lea las matrices, una funcin que haga el producto y
otro procedimiento que escriba el resultado:
SOLUCIN
#include <cstdlib>
#include <iostream>
using namespace std;
void leermatriz (float m[3][3])
{
int i,j;
for (i=1;i<=3;i++)
{
for (j=1;j<=3;j++)
{
cout<<"introducir el elemento "<<i<<","<<j<<endl;
cin>>m[i][j];
}
}
}
void producto_matrices (float a [3][3],float b[3][3],float p[3][3])
{
int i,j,k;
for (i=1;i<=3;i++)
{
p[i][j]=0;
for (j=1;j<=3;j++)
{
p[i][j]=p[i][j]+a[i][k]*b[k][j];
}
}
}
void escribir_matriz (float m[3][3])
{
int i,j;
for (i=1;i<=3;i++)
{
for (j=1;j<=3;j++)
{
cout<<m[i][j]<<" ";
}
cout<<endl;
}
}
int main()
{
float a[3][3];
leermatriz (a);
leermatriz (b);
producto_matrices (a,b,p);
escribir_matriz (p);
system("PAUSE");
return EXIT_SUCCESS;
}
3.- Escribir un programa que haga una serie de Taylor de la funcin seno, sabiendo
que la funcin seno desarrollada en serie de Taylor tiene la forma
n
x 2 n +1
n
sin ( x ) = ( 1)
( 2n + 1)!
i =0
SOLUCIN
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int factorial (int n)
{
int fact,i;
fact=1;
for (i=1;i<=n;i++)
{
fact=fact*i;
}
return (fact);
}
int main()
{
float x;
float suma;
int i;
cout<<"x:";
cin>>x;
suma=0.0;
for (i=0;i<=100;i++)
{
suma=suma+pow(float (-1.0),float(i))*pow(x,float((2*i)+1))/factorial (2*i+1);
}
cout <<"el valor de la serie es:"<<suma;
system("PAUSE");
return EXIT_SUCCESS;
}
5.- Escribir un programa que dados tres nmeros que representan 3 longitudes nos
diga si existe y un tringulo que tenga esas dimensiones ( Para que haya un tringulo
que tenga esas dimensiones, la suma de cualesquiera dos lados tiene que ser mayor
que el tercer lado)
SOLUCIN
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
float a,b,c;
bool d;
cout<<"lado a:";
cin>>a;
cout<<"lado b:";
cin>>b;
cout<<"lado c:";
cin>>c;
if (a+b>c && a+c>b && b+c>a)
{
cout<<"el triangulo existe"<<endl;
d=true;
}
else
{
cout<<"El triangulo no existe"<<endl;
d=false;
}
if (d==true)
{
if (a==b && b==c)
{
cout<<"el triangulo es equilatero"<<endl;
}
else if (a!=b && b!=c &&a!=c)
{
cout<<"El triangulo es escaleno"<<endl;
}
else
{
cout<<"el triangulo es isosceles"<<endl;
}
}
system("PAUSE");
return EXIT_SUCCESS;
}
}
return (min);
}
int main()
{
int n;
cout<<"numero de componentes:"<<endl;
cin>>n;
float v[n];
leer_vector (n,v);
cout<<"el maximo es:"<<maximo (n,v)<<" el minimo es:"<<minimo (n,v)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
8.- Hacer un programa que cambie de unidades usando un switch case en concreto,
el usuario le proporcionar una longitud y la unidad en la que est medida
(centmetros, kilmetros, o pulgadas) y el programa pasar la cantidad introducida a
metros
SOLUCIN
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
float l,resultado;
int opcion;
cout<<"Longitud:"<<endl;
cin>>l;
cout<<"Unidad:1.-cm 2.- pulgadas 3.- km"<<endl,
cin>>opcion;
switch (opcion)
{
case 1:
resultado=l/100;
cout<<"La longitud en metros es:"<<resultado<<endl;
break;
case 2:
resultado=l/254;
cout<<"La longitud en metros es:"<<resultado<<endl;
break;
case 3:
resultado=l*1000;
cout<<"La longitud en metros es:"<<resultado<<endl;
break;
default:
cout<<"ERROR"<<endl;
break;
}
system("PAUSE");
return EXIT_SUCCESS;
}
9.- Hacer una funcin que reciba un nmero entero y que devuelva el mismo nmero
convertido en entero largo
SOLUCIN
#include <cstdlib>
#include <iostream>
using namespace std;
long int transformar (int n)
{
return (n);
}
int main()
{
system("PAUSE");
return EXIT_SUCCESS;
}
10.- Escribir una funcin que calcule el producto de la primera y de la ltima cifra de
un nmero entero:
SOLUCIN
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int numero,a,b,producto;
cout<<"Numero:"<<endl;
cin>>numero;
a=numero%10;
while (numero>10)
{
numero=numero/10;
}
b=numero;
producto=a*b;
cout<<"el resultado de multiplicar la primera por la ultima es:"<<producto<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
11.- Escribir un programa que dado un nmero decimal introducido por el usuario, lo
convierta en un nmero binario y lo almacene en un vector de enteros de 32 bits
SOLUCIN
#include <cstdlib>
#include <iostream>
#include <cmath>
using namespace std;
int main(int argc, char *argv[])
{
bool a;
int i,suma,j;
int v[32],cifras [100];
for (i=31;i>=0;i--)
{
cout<<"componente "<<i<<endl;
cin>>v[i];
}
suma=0;
for (i=0;i<=31;i++)
{
suma=suma+v[i]*pow (2.0,double (i));
}
cout<<"El numero en decimal es:"<<suma<<endl;
j=1;
while (suma>10)
{
cifras [j]=suma%10;
j++;
suma=suma/10;
}
cifras [j]=suma;
for (i=1;i<=j;i++)
{
cout<<cifras [i]<<endl;
}
for (i=1;i<=j;i++)
{
if (cifras [i]==cifras [j+1-i])
{
a=true;
continue;
}
else
{
a=false;
cout<<"Numero no capicua"<<endl;
break;
}
}
if (a==true)
{
cout<<"Numero capicua"<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
continue;
}
else
{
a=false;
cout<<"Numero no capicua"<<endl;
break;
}
}
if (a==true)
{
cout<<"Numero capicua"<<endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
}
else if ((i+j)==(t+1))
{
m[i][j]=1;
}
else
{
m[i][j]=0;
}
}
}
}
void imprimir (int t,int m[10][10])
{
int i,j;
for (i=1;i<=t;i++)
{
for (j=1;j<=t;j++)
{
cout<<m[i][j]<<" ";
}
cout<<endl;
}
}
int main()
{
int t,opcion;
cout<<"Tamano:"<<endl;
cin>>t;
int m[10][10];
cout<<"tipo de matriz: 1.- Todos 1 2.- Todos 0 3.- Diagonal"<<endl;
cin>>opcion;
switch (opcion)
{
case 1:
matriz_uno(t,m);
imprimir (t,m);
break;
case 2:
matriz_cero(t,m);
imprimir (t,m);
break;
case 3:
matriz_diagonal (t,m);
imprimir (t,m);
break;
default:
break;
}
system("PAUSE");
return EXIT_SUCCESS;
}