Sie sind auf Seite 1von 21

www.fisicaeingenieria.

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 !oid leermatri" #float m$%&$%&' ( int i)* for #i+, i<+% i--' ( for #*+, *<+% *--' ( cout<<.introducir el elemento .<<i<<.).<<*<<endl cin>>m$i&$*& / / / !oid producto0matrices #float a $%&$%&)float b$%&$%&)float p$%&$%&' ( int i)*)1 for #i+, i<+% i--' ( p$i&$*&+2 for #*+, *<+% *--' ( p$i&$*&+p$i&$*&-a$i&$1&3b$1&$*& / / / !oid escribir0matri" #float m$%&$%&' ( int i)* for #i+, i<+% i--' ( for #*+, *<+% *--' ( cout<<m$i&$*&<<. . / cout<<endl

/ /

int main#' ( float a$%&$%& leermatri" #a' leermatri" #b' producto0matrices #a)b)p' escribir0matri" #p' s4stem#.56US7.' return 78I90SUCC7SS /

2.- adas las coordenadas tridimensionales de tres puntos, debe construirse un programa que haga el per!metro del tri"ngulo que forman. El programa debe incluir una funcin para leer las coordenadas de los puntos y una funcin que haga el per!metro: SOLUCIN #include <cstdlib> #include <iostream> #include <cmat:> using namespace std !oid leer0cordenadas #float p$%&' ( int i for #i+, i<+% i--' ( cout<<.coordenada.<<i<<.;. cin>>p$i& / / float distancia #float p,$%&)float p<$%&' ( float dist dist+s=rt##p,$,&>p<$,&'3#p,$,&>p<$,&'-#p,$<&>p<$<&'3#p,$<&>p<$<&'-#p,$%&> p<$%&'3#p,$%&>p<$%&'' return #dist' / int main#int argc) c:ar 3arg!$&' ( float 6$%&)?$%&)C$%& float perimetro leer0cordenadas #6' leer0cordenadas #?' leer0cordenadas #C' perimetro+distancia #6)?'-distancia #?)C'-distancia #C)6' cout<<.7l perimetro es;.<<perimetro<<endl s4stem#.56US7.' return 78I90SUCC7SS /

3.- Escribir un programa que haga una serie de #aylor de la funcin seno, sabiendo que la funcin seno desarrollada en serie de #aylor tiene la forma n x 2 n +1 n sin ( x ) = ( 1) ( 2n + 1)! i =0 SOLUCIN #include <cstdlib> #include <iostream> #include <cmat:> using namespace std int factorial #int n' ( int fact)i fact+, for #i+, i<+n i--' ( fact+fact3i / return #fact' / int main#' ( float @ float suma int i cout<<.@;. cin>>@ suma+2.2 for #i+2 i<+,22 i--' ( suma+suma-pow#float #>,.2')float#i''3pow#@)float##<3i'-,''Afactorial #<3i-,' / cout <<.el !alor de la serie es;.<<suma s4stem#.56US7.' return 78I90SUCC7SS /

$.- %asar un n&mero a hexadecimal SoluciBn #include <cstdlib> #include <iostream> using namespace std int main#int argc) c:ar 3arg!$&' ( int numero int cifras $%<& int i)* cout<<.Numero;. cin>>numero i+, w:ile #numero>+,C' ( cifras $i&+numeroD,C numero+numeroA,C i-/ cifras $i&+numero for #*+i *>+, *>>' ( cout<<cifras$*&<<endl / s4stem#.56US7.' return 78I90SUCC7SS /

'.- Escribir un programa que dados tres n&meros que representan 3 longitudes nos diga si existe y un tri"ngulo que tenga esas dimensiones ( %ara que haya un tri"ngulo 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 EE a-c>b EE b-c>a' ( cout<<.el triangulo e@iste.<<endl d+true / else ( cout<<.7l triangulo no e@iste.<<endl d+false / if #d++true' ( if #a++b EE b++c' ( cout<<.el triangulo es e=uilatero.<<endl / else if #aF+b EE bF+c EEaF+c' ( cout<<.7l triangulo es escaleno.<<endl /

else ( cout<<.el triangulo es isosceles.<<endl / / s4stem#.56US7.' return 78I90SUCC7SS /

*.- Escribir un programa que me de el m"ximo com&n di+isor de dos n&meros SOLUCIN #include <cstdlib> #include <iostream> using namespace std int main#' ( int a)b)i cout<<.numero ma4or;.<<endl cin>>a cout<<.numero menor;.<<endl cin>>b for #i+b i>+, i>>' ( if #aDi++2 EE bDi++2' ( cout<<.7l ma@imo comun di!isor es;.<<i<<endl brea1 / / s4stem#.56US7.' return 78I90SUCC7SS /

,.- Escribir un programa que me de el m"ximo y el m!nimo de un +ector introducido por el usuario por teclado. El programa debe incluir un procedimiento para leer el +ector y otro para el m"ximo y m!nimo de un +ector. SOLUCIN #include <cstdlib> #include <iostream> using namespace std !oid leer0!ector #int n)float !$&' ( int i for #i+, i<+n i--' ( cout<<.Componente .<<i<<endl cin>>!$i& / / float ma@imo #int n)float !$&' ( int i float ma@ ma@+!$,& for #i+, i<+n i--' ( if #!$i&>ma@' ( ma@+!$i& / / return #ma@' / float minimo #int n)float !$&' ( int i float min min+!$,& for #i+, i<+n i--' ( if #!$i&<min' ( min+!$i& /

/ return #min' / int main#' ( int n cout<<.numero de componentes;.<<endl cin>>n float !$n& leer0!ector #n)!' cout<<.el ma@imo es;.<<ma@imo #n)!'<<. el minimo es;.<<minimo #n)!'<<endl s4stem#.56US7.' return 78I90SUCC7SS /

-.- .acer un programa que cambie de unidades usando un s/itch case en concreto, el usuario le proporcionar" una longitud y la unidad en la que est" medida (cent!metros, 0ilmetros, o pulgadas) y el programa pasar" la cantidad introducida a metros SOLUCIN #include <cstdlib> #include <iostream> using namespace std int main#int argc) c:ar 3arg!$&' ( float l)resultado int opcion cout<<.Longitud;.<<endl cin>>l cout<<.Unidad;,.>cm <.> pulgadas %.> 1m.<<endl) cin>>opcion switc: #opcion' ( case ,; resultado+lA,22 cout<<.La longitud en metros es;.<<resultado<<endl brea1 case <; resultado+lA<GH cout<<.La longitud en metros es;.<<resultado<<endl brea1 case %; resultado+l3,222 cout<<.La longitud en metros es;.<<resultado<<endl brea1 default; cout<<.7IIOI.<<endl brea1 /

s4stem#.56US7.' return 78I90SUCC7SS /

1.- .acer una funcin que reciba un n&mero entero y que de+uel+a el mismo n&mero con+ertido en entero largo SOLUCIN #include <cstdlib> #include <iostream> using namespace std long int transformar #int n' ( return #n' / int main#' ( s4stem#.56US7.' return 78I90SUCC7SS /

12.- Escribir una funcin que calcule el producto de la primera y de la &ltima cifra de un n&mero entero: SOLUCIN #include <cstdlib> #include <iostream> using namespace std int main#int argc) c:ar 3arg!$&' ( int numero)a)b)producto cout<<.Numero;.<<endl cin>>numero a+numeroD,2 w:ile #numero>,2' ( numero+numeroA,2 / b+numero producto+a3b cout<<.el resultado de multiplicar la primera por la ultima es;.<<producto<<endl s4stem#.56US7.' return 78I90SUCC7SS /

11.- Escribir un programa que dado un n&mero decimal introducido por el usuario, lo con+ierta en un n&mero binario y lo almacene en un +ector de enteros de 32 bits SOLUCIN #include <cstdlib> #include <iostream> #include <cmat:> using namespace std int main#int argc) c:ar 3arg!$&' ( bool a int i)suma)* int !$%<&)cifras $,22& for #i+%, i>+2 i>>' ( cout<<.componente .<<i<<endl cin>>!$i& / suma+2 for #i+2 i<+%, i--' ( suma+suma-!$i&3pow #<.2)double #i'' / cout<<.7l numero en decimal es;.<<suma<<endl *+, w:ile #suma>,2' ( cifras $*&+sumaD,2 *-suma+sumaA,2 / cifras $*&+suma for #i+, i<+* i--' ( cout<<cifras $i&<<endl / for #i+, i<+* i--' ( if #cifras $i&++cifras $*-,>i&' (

a+true continue / else ( a+false cout<<.Numero no capicua.<<endl brea1 / / if #a++true' ( cout<<.Numero capicua.<<endl /

s4stem#.56US7.' return 78I90SUCC7SS /

12.- Escribir un programa que dado un n&mero binario (almacenado en un +ector de 32 bits) lo con+ierta en un n&mero entero y me diga si el n&mero obtenido es capic&a. #include <cstdlib> #include <iostream> #include <cmat:> using namespace std int main#int argc) c:ar 3arg!$&' ( bool a int i)suma)* int !$%<&)cifras $,22& for #i+%, i>+2 i>>' ( cout<<.componente .<<i<<endl cin>>!$i& / suma+2 for #i+2 i<+%, i--' ( suma+suma-!$i&3pow #<.2)double #i'' / cout<<.7l numero en decimal es;.<<suma<<endl *+, w:ile #suma>,2' ( cifras $*&+sumaD,2 *-suma+sumaA,2 / cifras $*&+suma for #i+, i<+* i--' ( cout<<cifras $i&<<endl / for #i+, i<+* i--' ( if #cifras $i&++cifras $*-,>i&' ( a+true

continue / else ( a+false cout<<.Numero no capicua.<<endl brea1 / / if #a++true' ( cout<<.Numero capicua.<<endl /

s4stem#.56US7.' return 78I90SUCC7SS /

13.- 3mplementar un programa que me pregunte la dimensin de un a matri4 y la opcin a escoger: 1.- todos 1, 2.- todos 2 3.- todos las diagonales 1) y me imprima la matri4 seleccionada SOLUCIN #include <cstdlib> #include <iostream> using namespace std !oid matri"0cero #int t) int m$,2&$,2&' ( int i)* for #i+, i<+t i--' ( for #*+, *<+t *--' ( m$i&$*&+2 / / /

!oid matri"0uno #int t) int m$,2&$,2&' ( int i)* for #i+, i<+t i--' ( for #*+, *<+t *--' ( m$i&$*&+, / / /

!oid matri"0diagonal #int t) int m$,2&$,2&' ( int i)* for #i+, i<+t i--' ( for #*+, *<+t *--' ( if #i++*' ( m$i&$*&+,

/ else if ##i-*'++#t-,'' ( m$i&$*&+, / else ( m$i&$*&+2 / / / / !oid imprimir #int t)int m$,2&$,2&' ( int i)* for #i+, i<+t i--' ( for #*+, *<+t *--' ( cout<<m$i&$*&<<. . / cout<<endl / /

int main#' ( int t)opcion cout<<.9amano;.<<endl cin>>t int m$,2&$,2& cout<<.tipo de matri"; ,.> 9odos , <.> 9odos 2 %.> Jiagonal.<<endl cin>>opcion switc: #opcion' ( case ,; matri"0uno#t)m' imprimir #t)m' brea1 case <; matri"0cero#t)m' imprimir #t)m' brea1 case %;

matri"0diagonal #t)m' imprimir #t)m' brea1 default; brea1 /

s4stem#.56US7.' return 78I90SUCC7SS /