Você está na página 1de 132

Programacin C/C++ Ferm Vil 1

Programacin en C/C++
(Manual FV)
Programacin C/C++ Ferm Vil 2
NDICE
Introduccin..............................................................................................................................................3
I.- Introduccin a la programacin en C...................................................................................................5
II.- Estructuras de Programacin............................................................................................................21
III.- Funciones........................................................................................................................................57
IV.- Punteros y rrays............................................................................................................................!"
V.- Entrada y #alida por Fic$eros.........................................................................................................131
VI.- El lengua%e de programacin C&&................................................................................................171
VII.- rrays' Punteros y Funciones en C&&.........................................................................................1!7
VIII.- Programacin (rientada a ()%etos............................................................................................2*5
p+ndice , Funcionamiento )-sico del .ur)o C&& 3.1.....................................................................223
p+ndice /, Instalacin y Funcionamiento )-sico del 012PP 2.1......................................................227
p+ndice C, 3a 4moderna5 P.(.( 6Visual C&& 7.*8...........................................................................22"

Programacin C/C++ Ferm Vil 3
Introduccin
- Manual FV
#igni9ica 4manual !r"ctico de in9orm-tica5' pero realmente realmente P:;C.IC(.
- En primer lugar de)er<as decidir en =u+ carpeta de tu ordenador =uieres gra)ar tus programas.
Personalmente me re9erir+ continuamente a la carpeta C#$TuCarpeta' es decir' cuando encuentres
en el manual TuCarpeta' de)er-s sustuirla por el nom)re de tu carpeta de >erdad.
- En segundo lugar de)er<as decidir el compilador de C?C&& =ue deseas usar.
3a mayor<a de programas del li)ro $an sido pro)ados en tres compiladores,
Para el entorno @#?0(#, D%&PP '(
Para el entorno AindoBs 3.C, )ur*o C++ +( de ,orland
Para el entorno AindoBs "5?"!, Vi-ual C++ ./ de Micro-o0t
En los ap+ndices ' / y C encontrar-s las instrucciones )-sicas del 9uncionamiento de estos tres
compiladores
#i no dispones de ningDn compilador de C?C&&' )-%ate de Internet el D%&PP '(' encontrar-s las
instrucciones correspondientes en el ap+ndice /.
En el caso concreto del 4Visual C?C&&5' $ay unos pocos programas =ue no te 9uncionar-n,
consulta el ap+ndice C.
- Cmo apro>ec$ar al m-Cimo este curso,
Escri)e los programas' utiliEando tu compilador de C?C&&
2r-)alos utiliEando el nom)re =ue aparece en la primera l<nea del programa en
TuCarpeta.
E%ecDtalos un par o tres de >eces' o)ser>ando detenidamente el resultado del programa'
el programa 9uente y las eCplicaciones =ue te indico en cada programa
#u)raya' corrige' tac$a y aFade todo lo =ue consideres importante en tu manual 6o $aEte
tu propio manual con tus apuntes personales en una li)reta8.
Es muy importante =ue $agas los e%ercicios de autoe1aluacin' =ue aparecen al 9inal de
cada cap<tulo. 0e)er-s guiarte por los programas =ue aparecen en cada tema y su
realiEacin demostrar- =ue $as asimilado los conceptos y procedimientos del cap<tulo.
- Por Dltimo y antes de empeEar,
0e)es tener en cuenta =ue en ningDn caso 4programaremos5 utiliEando las caracter<sticas propias del
4entorno5' =uiero decir, aun=ue utilices un compilador de C en entorno AindoBs por e%emplo' todos
los programas =ue $ar-s utiliEando este manual' en principio 9uncionan igual en el entorno @#?0(#
o GHII' por citar dos muy conocidos.
#eria materia de otro curso el estudio del 4entorno de desarrollo5 e 4inter9ace gr-9ico5 de tu
compilador de C?C&&
Gn caso aparte es la introduccin al 4Visual C?C&&5' del ap+ndice C' =ue es con>eniente realiEar
despu+s del cap<tulo ! 6Jel DltimoK8' para conocer las tendencias de la moderna 4programacin
orientada a o)%etos5.
Programacin C/C++ Ferm Vil L
C2MPI345 3IN645
Programacin C/C++ Ferm Vil 5
I.- Introduccin a la Programacin en C
a) Introduccin )erica
Creador#
0ennis :itc$ie 63a)oratorios /ell8 el 1"72' cuando tra)a%a)a %unto con Men .$ompson en el diseFo del
sistema operati>o GHII.
El NCO se cre como $erramienta para programadores' en consecuencia su principal o)%eti>o es ser un
lengua%e Dtil.
Caracter-tica-#
El 4C5 es un lengua%e de programacin de 4alto ni>el5 6alto ni>el =uiere decir 4prCimo al lengua%e
$umano58' pero con caracter<sticas de 4)a%o ni>el5 6)a%o ni>elP prCimo al lengua%e m-=uina8.
Es de 3.( HIVE3 por=ue es racional' estructurado y 9-cil de aprender.
Es de /1( HIVE3 por=ue permite tra)a%ar con 4)its5' registros de la C.P.G. y posiciones de memoria.
7Por8u9 el :C;<
El lengua%e NCO es !odero-o = 0le>i*le, la mayor parte del sistema operati>o GHII est- escrito en NCO.
Incluso est-n escritos en NCO los compiladores e int+rpretes de otros lengua%es' como F(:.:H' P3'
P#C3' 3I#P' 3(2( y /#IC.
El lengua%e NCO es :ami-to-o; por=ue es lo su9icientemente e-rtucturado para e%ercer )uenos $-)itos de
programacin. Es el lengua%e de programacin m-s utiliEado por el programador de sistemas.
E-tructura de un !rograma en :C;#
El NCO es un lengua%e compilado' >amos a >er =ue es esto gr-9icamente,
CQ0I2( FGEH.E, es el programa =ue nosotros escri)imos' se gra)a con la eCtensin CPP
CQ0I2( (/1E.(, es el programa 9uente pero traducido a lengua%e m-=uina 6sucesin de ceros y unos8'
se gra)a con la eCtensin 2,%
P:(2:@ E1ECG./3E, es el programa o)%eto m-s las 4li)rer<as del C5' se gra)a con la eCtensin
E?E R no necesita el programa =ue $emos utiliEado para crearlo' para poder e%ecutarlo.
C@DI&2
FAEN)E
C@DI&2
2,%E)2
P52&54M4
E%ECA)4,3E
F(:.:H 61"558
Programacin C/C++ Ferm Vil 7
El cdigo ()%eto =ue genera un com!ilador de 4C5' es casi tan e9iciente 6r-pido8 como si lo $u)i+ramos
escrito en lengua%e EH#@/30(: 6lengua%e de programacin m-s prCimo al lengua%e m-=uina8.
5elacione- del :C; con otro- lenguaBe- de !rogramacin#
32(3 61"7*8
P3?1 61"758
P#C3 61"7*8
C 61"728
H#I C 61"!58 C&& 61"!58
Programacin C/C++ Ferm Vil 7
*) 3o- Primero- Programa- en CCD
- Prog**1.cpp
/* Prog001.cpp */
#include <stdio.h>
void main()
{
printf(!urso de Programaci"n en !)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog//(c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
/E E/
.odo lo =ue escri)imos entre los s<m)olos anteriores son 4comentarios5 para el
programador' =ue no in9luyen para nada en la e%ecucin del programa.
Finclude G-tdioHI
(rdena al compilador =ue incluya en el programa' las 9unciones de entrada S
salida 6en nuestro caso $ay una, !rint08.
-tdioH no es m-s =ue un 9ic$ero 4)i)lioteca5' =ue contiene una serie de
9unciones 6instrucciones8' en nuestro caso de 4entrada-salida por pantalla5.
#i en nuestro programa necesitamos una ra<E cuadrada por e%emplo'
de)er<amos incluir 6include8 otra 4)i)lioteca5 6tran=uilo' ya las iremos
estudiando poco a poco8.
1oid main()
Funcin o programa principal 6main8' =ue no de>uel>e nada 6>oid8
J Inicio
!rint0(: :) Funcin =ue escri)e en pantalla
K Fin del programa
- Prog**2.cpp
/* Prog00%.cpp */
#include <stdio.h>
void main()
{
Programacin C/C++ Ferm Vil !
printf(&n)# /* '(nea en )lanco */
printf(*egunda 'inea)#
/***********************************
!+,-./012+
************************************/
printf( continuamos en la %3 l(nea&n)#
printf(&n0hora estamos en la cuarta l(nea)#
/*
4asta luego
....................................*/
$
/E E/ .odo lo =ue escri)imos entre los s<m)olos anteriores' el compilador no $ace caso.
$n Es e=ui>alente a un T:eturnU. #e le llama mani!ulador de 0ormato.
c) Dato- en :C;
- Prog**3.cpp
/* Prog005.cpp */
#include <stdio.h>
void main()
{
char nom6%07#
printf(&n-scri)e tu nom)re8 )#
scanf(9s:nom)#
printf(&n4ola 9s:nom)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog//+c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
E-tudio del P52&//+,
En el lengua%e 4C5 $ay dos tipos de datos, Con-tante- = Varia*le-
En un programa' una con-tante es un dato =ue no puede ser >ariado durante su e%ecucin.
El dato :E-cri*e tu nom*re#; del P:(2L es una con-tante' ya =ue cada >eE =ue e%ecutamos el
programa' aparece la misma 9rase, no $ay posi)ilidad de cam)iarla.
En un programa' una 1aria*le es un dato =ue s< puede cam)iar mientras se e%ecuta un programa.
Programacin C/C++ Ferm Vil "
El dato :nom; del P:(2L es una >aria)le' ya =ue cada >eE =ue e%ecutamos el programa
ad=uiere el >alor correspondiente a lo =ue escri)imos ante la orden, :E-cri*e tu nom*re#;
3a sentencia, cHar nomL'/MN
0e9ine 6declara8 la >aria)le :nom;' cuyo contenido ser-n caracteres 6de a$< la pala)ra cHar =ue
a)re la l<nea8' en un nDmero no superior a 2*' por=ue as< lo especi9ica dic$a ci9ra entre corc$etes.
En otras pala)ras' la l<nea en cuestin indica al compilador =ue' para la e%ecucin del programa
de)e reser>ar espacio en memoria para almacenar 2* datos del tipo cHar' esto es' caracteres' y
=ue en el resto del programa dic$a Eona de memoria ser- designada como :nom;
3a de9inicin 6declaracin8 de >aria)les en un programa 4C5 es imprescindi)le, si no de9inimos
una >aria)le antes de usarla' el programa no 9uncionar- ya =ue al llegar al nom)re de la >aria)le'
el programa no sa)r- =ue $acer.
3a sentencia, !rint0(:$nOola P- :Qnom)N
El !rint0 en cuestin' escri)e en pantalla dos datos, Gna constante :Oola; y el >alor de la
>aria)le nom.
El s<m)olo :P-; es un indicador de 0ormato' =ue sir>e para decir al !rint0' cmo =ueremos
=ue nos muestre el >alor de la >aria)le nom. 3a :-; del indicador pro>iene de la pala)ra -tring
64cadena5 en ingl+s8.
En de9initi>a, !rint0(:$nOola P- :Q nom)N
Escri)e en pantalla,
Gna l<nea en )lanco' de)ida a $n
Oola P-
#e su)stituye por el >alor de la >aria)le nom
Para =ue el lengua%e 4C5 nos escri)a en pantalla 6print98' el >alor de una >aria)le tipo cHar' es
necesario utiliEar el indicador de 0ormato# P-
Varia)le cHar P-
#er- su)stituido por el >alor de la >aria)le
3a sentencia, -can0(:P-;Q nom)N
Inmo>iliEar- la e%ecucin del programa' $asta =ue nosotros escri)amos alguna cosa.
3o =ue escri)amos se guardar- en la >aria)le de nom)re nom
Vemos de introducir el indicador de 0ormato, P-' correspondiente a datos 4tipo car-cter5 para
=ue lo =ue escri)amos sea interpretado como una cadena de caracteres.
Rcan0 igual =ue !rint0 es una 9uncin del 9ic$ero de ca)ecera, -tdioH
d) )i!o- de Dato-
- Prog**L.cpp
/* Prog00;.cpp */
Programacin C/C++ Ferm Vil 1*
#include <stdio.h>
void main()
{
float a:):c#
printf(&nPrimer sumando8 )#
scanf(9f:<a)#
printf(&n*egundo sumando8 )#
scanf(9f:<))#
c=a>)#
printf(&n&n'a suma de 9f ? 9f es 9f:a:):c)#
$
3a sentencia, 0loat aQ *Q c N
0e9ine 6declara8 3 >aria)les 6a') y c8 num9rica- tipo 0loat 6nDmeros reales8.
)i!o- de Varia*le- m"- im!ortante-#
IN) nSmero entero
32N& nSmero entero de do*le !reci-in
F324) nSmero real
D2A,3E nSmero real de do*le !reci-in
El rango de >alores =ue puede tener cada tipo de >aria)le 6nDmero de d<gitos8 depende del
compilador de 4C5.
En otro e%ercicio >eremos la 9orma de descu)rirlo.
El indicador P0
3a utiliEacin de >aria)les 0loat' determina =ue el indicador de 9ormato sea P0
Varia)le, CO45 Indicador de 9ormato, P-
F324) P0
IN) Pd
D2A,3E Pl0
El s<m)olo T
Gna >aria)le -im!le de)e aparecer en el -can0 precedida del s<m)olo T, scan964W95'X)8
En el programa anterior Prog//+, scan964Ws5'nom8
Ho esta)a precedida de T' por=ue la >aria)le nom' no era una >aria)le -im!le 6un solo >alor8'
sino com!ue-ta 6llamada tam)i+n array o >ector8' por=ue toma)a un m-Cimo de '/ >alores
6caracteres8.
Ra >eremos m-s adelante' eCactamente lo =ue indica X
3a sentencia, cUa+*
Es la 9orma de asignar el >alor de una >aria)le' a partir del >alor de otras.
Programacin C/C++ Ferm Vil 11
e) 4-ignacin de 1aria*le-
- Prog**5.cpp
/* Prog00@.cpp */
#include <stdio.h>
void main()
{
dou)le num#
printf(&n-scri)e un nAmero= )#
scanf(9lf:<num)#
printf(&n-l cuadrado de 9lf es 9lf:num:num*num)#
printf(&n-l cu)o de 9lf es 9lf:num:num*num*num)#
$
()ser>a la sint-Cis completa de !rint0,
Print0(: Pl0 Pl0 :Q 1aria*le(Q 1aria*le')N
- Prog**7.cpp
/* Prog00B.cpp */
#include <stdio.h>
void main()
{
int valor#
valor=1@#
printf(Calor= 9d:valor)#
valor=%D#
printf(&nCalor= 9d:valor)#
valor=valor>@#
printf(&nCalor= 9d:valor)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog//.c!! en TuCarpeta.
#e su)stituye por el
>alor de la
>aria)le1
#e su)stituye por el
>alor de la
>aria)le2
Ho es necesario de9inir una nue>a
>aria)le 6asignacin8' ya =ue
4>aria)le2P>aria)le1 Y >aria)le15
Programacin C/C++ Ferm Vil 12
E%ecDtalo un par o tres de >eces
()ser>a cmo podemos cam)iar el >alor de una >aria)le' durante la e%ecucin del programa sin ningDn
tipo de pro)lema.
3a sentencia 1alorU1alor+VN indica =ue el nue1o >alor es igual al antiguo >alor m-s 5 unidades.
0) )i!o de dato- :long;
- Prog**7.cpp
/* Prog00D.cpp */
#include <stdio.h>
void main()
{
int inta:int)#
long longa:long)#
inta=5%@00#
longa=E%0005;%@%D#
printf(-l valor de inta es = 9d:inta)#
printf(&n -scri)e un entero negativo menor de 5%.DBF 8 )#
scanf(9d:<int))#
printf(&n -l valor de int) es = 9d:int))#
printf(&n&n)#
printf(&n -l valor de longa es = 9ld:longa)#
printf(&n -scri)e un entero positivo menor de %.100.000.000 = )#
scanf(9ld:<long))#
printf(&n -l valor de long) es = 9ld:long))#
$
long 6a)re>iatura de -igned long int P entero largo con signo8 corresponde a un nDmero entero =ue puede
ser mayor 6o menor8 a un int.
()ser>a el 9ormato correspondiente, Pld' a di9erencia del Pd =ue correspond<a a int.
g) 5ango de Dato-
- Prog**!.cpp
/* Prog00F.cpp */
#include <stdio.h>
#include <values.h>
void main()
{
printf(&n -scri)e el mGHimo nAmero entero8 9d:,0I2./)#
Programacin C/C++ Ferm Vil 13
printf(&n -scri)e el mGHimo nAmero entero largo8 9ld:,0I'+.J)#
printf(&n -scri)e el m(nimo nAmero float8 9e:,2.K'+0/)#
printf(&n -scri)e el mGHimo nAmero float8 9e:,0IK'+0/)#
printf(&n -scri)e el m(nimo nAmero dou)le8 9e:,2.L+MN'-)#
printf(&n -scri)e el mGHimo nAmero dou)le8 9e:,0IL+MN'-)#
$
M4?IN)Q M4?32N&Q MINF324)Q M4?F324)Q MIND2A,3EQ M4?D2A,3E son constantes
=ue est-n de9inidas en el 9ic$ero 1alue-H' por lo tanto para =ue 9uncione el programa necesitamos la
l<nea, Finclude G1alue-HI
El cdigo de 9ormato Pe indica =ue =ueremos >isualiEar el nDmero en notacin eCponencial 6cient<9ica8.
3a constante M4?32N& nos da el m-Cimo nDmero entero 6entero largo P long8.
#i utiliEas el compilador D%&PP o)ser>ar-s =ue M4?IN) U M4?32N&' es decir en este compilador
de NCO' int es e=ui>alente a long
H) Cadena- de caractere-# :!ut- W get-;
- Prog**".cpp
/* Prog00O.cpp */
#include <stdio.h>
void main()
{
char teHto6B@7#
printf(-scri)e tu nom)re ? dos apellidos8 )#
scanf(9s:teHto)#
printf(&n0ca)as de escri)ir 8 9s:teHto)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog//Xc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
()ser>a =ue el >alor de la >aria)le 4teCto5 es todo lo =ue $emos escrito antes del primer espacio.
- Prog*1*.cpp
/* Prog010.cpp */
Programacin C/C++ Ferm Vil 1L
#include <stdio.h>
void main()
{
char teHto6B@7#
puts(-scri)e tu nom)re ? dos apellidos8 )#
gets(teHto)#
puts(0ca)as de escri)ir 8 )#
puts(teHto)#
$
()ser>a =ue a$ora s<' escri)e todo lo =ue $emos escrito ante la pregunta.
3a 9uncin get-(te>to) es e=ui>alente a -can0' pero con dos di9erencias 9undamentales,
#lo 9unciona para cadenas de caracteres
)arca todo el teCto =ue escri)amos $asta =ue pulsamos la tecla T:eturnU. Por lo tanto es la =ue nos
interesa si $ay espacios en )lanco.
!ut- es e=ui>alente a !rint0' pero con dos di9erencias 9undamentales,
#lo 9unciona para cadenas de caracteres.
Ho podemos utiliEar cdigos de 9ormato para 4imprimir5 >aria)les.
i) MeBoremo- la -alida !or !antalla
- Prog*11.cpp
/* Prog011.cpp */
/* Programa Pue despliega un mensaQe de
)ienvenida en la pantalla */

#include<stdio.h>
#include<conio.h>

void main()
{
clrscr()#
/* 'a funci"n anterior )orra la pantalla. -stG en <conio.h>
solo tiene sentido si utiliRas el LSJPP
*/
printf(&n&n&n&n&n&n)# /* B lineas en )lanco */
printf(&t&t)# /* % ta)uladores */
printf(N2-.C-.2L+ 0' !M1*+ L- ! -*/0.L01)#
printf(&n&n&n&n&n&n&n&n)# printf(&t&t&t&t)#
printf(Pulsa cualPuier tecla para terminar...&n)#
getch()#
/* 'a funci"n anterior inmoviliRa la eQecuci"n del programa
hasta Pue pulsamos una tecla */
Programacin C/C++ Ferm Vil 15
clrscr()#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/((c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
()ser>a detenidamente los comentarios =ue aparecen en el programa.
El :mani!ulador; Zn determina)a una l<nea en )lanco' es decir es e=ui>alente a pulsar la tecla T:eturnU.
El manipulador $t es e=ui>alente a pulsar la tecla de ta)ulacin.
()ser>a =ue podemos colocar >arias sentencias de C en una misma l<nea de programa' siempre y cuando
separemos cada sentencia con un punto y coma.
- Prog*12.cpp
/* Prog01%.cpp */
/*Programa Pue calcula el nAmero de dias vividos*/

#include<stdio.h>
#include<conio.h>

void main()
{
char nom)re6@07#
int edad#
clrscr()#

printf(&n&n&t&t&tT!"mo te llamasU )#
scanf(9s:nom)re)#
printf(&n&n&t&t&tT!uGntos aVos tienesU )#
scanf(9d:<edad)#

edad=edad*5B@#

printf(&n&n&n&t&t9s: has vivido 9d dias:nom)re:edad)#

printf(&n&n&n&n&t&t&t&t&tPulsa cualPuier tecla para
terminar...&n)#
getch()#

$
#upongo =ue estamos de acuerdo en =ue es muy 9-cil me%orar la salida por pantalla del programa.
- Prog*13.cpp
Programacin C/C++ Ferm Vil 17
/* Prog015.cpp */
/*Programa Pue saca el promedio de 5 nAmeros*/

#include<stdio.h>
#include<conio.h>


void main()
{
float numero#
float promedio=0#

printf(Lame el primer nAmero8 )#
scanf(9f:<numero)#
promedio>=numero#
/* 'a eHpresi"n anterior es ePuivalente a
promedio=promedio>numero */
printf(Lame el segundo nAmero8 )#
scanf(9f:<numero)#
promedio>=numero#
printf(Lame el tercer nAmero8 )#
scanf(9f:<numero)#
promedio>=numero#
promedio/=5#
/* 'a eHpresi"n anterior es ePuivalente a
promedio=promedio/5 */
clrscr()#printf(&n&n&n&n&n&t&t&t)#
printf(-l promedio es 9f:promedio)#
printf(&n&n&t)#
printf(Presione cualPuier tecla para terminar...&n)#
getch()#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/(+c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
.oma nota del signi9icado de, !romedio+Unumero o !romedio/U+
Es decir en la primera eCpresin, 4el nue>o >alor de !romedio es igual al >alor antiguo de !romedio & el
>alor de numero5.
En la segunda eCpresin, 4el nue>o >alor de !romedio es igual al antiguo >alor de !romedio partido por
35.
Programacin C/C++ Ferm Vil 17
4A)2EV43A4CI@N (
() El siguiente programa tiene errores. Escri)elo 6gr-)alo con el nom)re EV43(4 en TuCarpeta8 y
corr<gelo para =ue 9uncione,
Finclude G-tdioHI
1oid main()
J
0loat radioN
!iU+(Y(VX'
!rint0(Z5adioU Z)N
-can0(ZP0ZQradio)N
!rint0(Z$n$n3ongitud U P0ZQ'E!iEradio)N
!rint0(Z$n$n[rea U P0 ZQ!iEradioEradio)N
K
') VaE un programa =ue 9uncione de la siguiente 9orma,
- El programa nos pregunta en =u+ po)lacin >i>imos.
- El programa nos pide =ue introduEcamos la )ase de un tri-ngulo.
- El programa nos pide =ue introduEcamos la altura de un tri-ngulo.
- El programa nos da el resultado del -rea del tri-ngulo correspondiente.
- El programa nos despide con la 9rase, :4di- Ha*itante de : y a continuacin nos escri)e la
po)lacin =ue $emos escrito al principio.
- 2ra)a el programa con el nom)re EV43(, en TuCarpeta.
+) VaE un programa =ue sir>a para calcular un determinante de 2[ orden.
:ecuerda,
\ a ) \
\ c d \ es igual a, aYd-cY)
2ra)a el programa con el nom)re EV43(C en TuCarpeta.
Y) VaE un programa =ue sir>a para calcular el -rea y el per<metro de un rect-ngulo.
6;reaP )ase C altura y PerimetroP 2>eces la )ase & 2>eces la altura8
2ra)a el programa con el nom)re EV43(D en TuCarpeta.
Programacin C/C++ Ferm Vil 1!
V) VaE un programa =ue nos pide nuestro nom)re y tel+9ono. Como resultado el programa nos escri)e
una 9ic$a aproCimadamente igual a la siguiente,
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
N2M,5E# (el nom*re 8ue Hemo- introducido)
)E3\F2N2# (el tel90ono 8ue Hemo- introducido)
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU
2ra)a el programa con el nom)re EV43(E en TuCarpeta.
.) VaE un programa =ue nos pida un nDmero entero y a continuacin el programa nos escri)e los 2
enteros siguientes al =ue $emos introducido.
2ra)a el programa con el nom)re EV43(F' en TuCarpeta.
]) ]^u+ di9erencia $ay entre un programa con eCtensin CPP o 2,%
^) Cita un programa de ordenador muy popular =ue est+ escrito con el lengua%e de programacin :C;.
X) ]^u+ =uiere decir un lengua%e de programacin de 43)2 NIVE3 y ,4%2 NIVE3_
(/) ]Por=u+ el 4C5 es un lengua%e de programacin con caracter<sticas de 43)2 NIVE3 y de ,4%2
NIVE3_
(() :elaciona el 4C5 con otros lengua%es de programacin.
(') Vuel>e a $acer el programa EV43(E' pero en lugar del nom)re =ue apareEca el nom)re y apellidos
2r-)alo con el nom)re EV43(& en TuCarpeta.
(+) :epite el EV43(C pero utiliEando Zn y Zt' de 9orma =ue =uede )onito.
2r-)alo con el nom)re EV43(O en TuCarpeta.
(Y) :epite el EV43(D pero =ue =uede 4)onito5.
2r-)alo con el nom)re EV43(I en TuCarpeta.
Programacin C/C++ Ferm Vil 1"
(V) Idem con el EV43(F
2r-)alo con el nom)re EV43(% en TuCarpeta.
Programacin C/C++ Ferm Vil 2*
Programacin C/C++ Ferm Vil 21
II_ E-tructura- de Programacin
2!eradore- 3gico- = 5elacionale-
IQ IUQ GQ GU
UU igualdad
`U di0erente
TT =
a a o
` no
3a E-tructura IF W E3RE
- Prog*1L.cpp
/* Prog01;.cpp */
#include <stdio.h>
void main()
{
float a: )#
printf(&n-scri)e el primer nAmero a= )#
scanf(9f:<a)#
printf(&n-scri)e el segundo nAmero )= )#
scanf(9f:<))#
if (a==)) printf (&n'os dos nAmeros son iguales&n)#
if (aW=)) printf(&n'os dos nAmeros son distintos&n)#
if (a>)) printf(&n-l nAmero 9f es ma?or Pue 9f&n :a:))#
else printf(&n-l nAmero 9f no es ma?or Pue 9f&n:a:))#
if ((a>)) << (100>a))
{
printf(&n-l nAmero 9f es ma?or Pue 9f :a:))#
printf(&n0demGs los dos son menores de 100)#
$
else
{printf(&n-l nAmero 9f no es ma?or Pue 9f :a:))#
printf( + uno de los dos nAmeros es ma?or de 100)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/(Yc!! en TuCarpeta.
Programacin C/C++ Ferm Vil 22
E%ecDtalo un par o tres de >eces
E%ecDtalo en los siguientes casos' o)ser>ando detenidamente lo =ue aparece,
18 #i aP 7* y )P 2
28 #i aP 5* y )P3*
38 #i aP 7 y )P 11
L8 #i aP 1** y )P 5*
58 #i aP 5* y )P 1**
Estudio del programa P52&/(Y,
()ser>a el uso de los o!eradore- relacionale- = lgico-#
6a PP )8 4a5 igual a 4)5
6a KP )8 4a5 di9erente a 4)5
66a`)8 XX 61**`a88
4a5 es mayor =ue 4)5 y adem-s 41** es mayor =ue 4a5
()ser>a tam)i+n =ue cada relacin $emos de encerrarla entre par+ntesis.
E-tructura de !rogramacin IF_E3RE
()ser>a en primer lugar la sint-Cis di9erente entre los L 4IF5 del programa,
3os 2 primeros son iguales y m-s simples, IF (condicin) -entenciaN
^ue =uiere decir, Ri -e cum!le la :condicin; -e eBecutar" la -entencia.
El tercer 4IF5,
IF (condicin) -entencia( N
el-e -entencia' N
^ue =uiere decir, Ri -e cum!le la (condicin) -e eBecutar" la -entencia(Q en ca-o contrario -e
eBecutar" la -entencia'
El cuarto 4IF5 es el m-s completo,
IF (condicin)
J
-entencia(N
-entencia'N
K
el-e
J
-entencia+N
-entenciaYN
K
^ue =uiere decir, Ri -e cum!le la :condicin; -e eBcutar" la -entencia( = la -entencia'Q en
ca-o contrario -e eBecutar" la + = la Y.
3a E-tructura bOI3E
- Prog*15
/* Prog01@.cpp */
Programacin C/C++ Ferm Vil 23
#include <stdio.h>
void main()
{
int H#
H=0#
Xhile (H<B)
{
printf(&n-l valor de H es 9d :H)#
H=H>1#
$
$
E-tructura de !rogramacin bOI3E#
bHile (condicin)
J
-entencia(N
-entencia'N
-entencia+N
____________N
____________N
K
^ue =uiere decir, mientras se cumpla la 4condicin5' e%ecuta las sentencias =ue $ay entre lla>es.
()ser>emos nuestro programa,
18 0e9inimos una >aria)le entera 6int8 de nom)re, >
28 InicialiEamos el >alor de la >aria)le :>; a /
38
B$ile 6Ca78
b
print96cZnEl >alor de C es Wd c'C8d
CPC&1d
e
Es decir, Mientra- el 1alor de la 1aria*le :>; -ea in0erior al nSmero .
E-cri*e en !antalla el 1alor de :>;
El 1alor de :>; e- igual al anterior 1alor de :>; !ero + (
Veamos,
Inicialmente el >alor de CP*' por lo tanto se cumple la condicin del 4A$ile5,
En pantalla aparecer- /
R el nue>o >alor de 4C5 ser- (.
Cmo el >alor actual de 4C5 es 1' se cumple la condicin,
En pantalla aparecer- (
R el nue>o >alor de 4C5 ser- 2.
Cmo el >alor actual de 4C5 es 2' se cumple la condicin,
En pantalla aparecer- '
R el nue>o >alor de 4C5 ser- 3.
Cmo el >alor actual de 4C5 es 3' se cumple la condicin,
En pantalla aparecer- +
R el nue>o >alor de 4C5 ser- L.
Cmo el >alor actual de 4C5 es L' se cumple la condicin,
En pantalla aparecer- Y
R el nue>o >alor de 4C5 ser- 5.
Cmo el >alor actual de 4C5 es 5' se cumple la condicin,
Programacin C/C++ Ferm Vil 2L
En pantalla aparecer- V
R el nue>o >alor de 4C5 ser- 7.
Cmo el >alor actual de 4C5 es 7' ya no cumplir- la condicin. Es decir 4saldremos
del A$ile5 y se aca)a nuestro programa.
El contador,
3a sentencia >U>+( se llama 4contador5 y es muy usada en programacin como ir-s >iendo.
Contadore-#
- Prog*17
/* Prog01B.cpp */
#include <stdio.h>
void main()
{
int i:Q#
i=%#
Q=D#
Xhile (i<Q)
{
printf(&n i= 9d EEE Q= 9d :i:Q)#
i>>#
QEE#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/(.c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Estudio del Prog/(.,
i++
Es e=ui>alente a escri)ir iUi+(
Bc
Es e=ui>alente a escri)ir BUB_(
Vamos a $acer un programa =ue repita 1* >eces nuestro nom)re. Est- claro =ue la solucin al pro)lema es
el uso de un 4contador5 dentro de un 4A$ile5.
Programacin C/C++ Ferm Vil 25
- Prog*17
/* Prog01D.cpp */
#include <stdio.h>
void main()
{
int H#
char nom6%07#
H=1#
printf(&n-scri)e tu nom)re8 )#
scanf(9s:nom)#
Xhile (H<=10)
{
printf(9d E :H)#
printf(9s &n:nom)#
H>>#
$
$
- Prog*1!
/* Prog01F.cpp */
#include <stdio.h>
void main()
{
dou)le num:sum:pro#
sum=0#
pro=1#
printf(&n-scri)e un nAmero diferente de 0 = )#
scanf(9lf:<num)#
Xhile (num W= 0)
{
sum=sum>num#
pro=pro*num#
printf(&n.Amero= 9lf *uma= 9lf Producto= 9lf :num:sum:pro)#
printf(&n.uevo nAmero (para aca)ar escri)e 0)= )#
scanf(9lf:<num)#
$
printf(&n&n&n*uma /otal= 9lf Producto /otal= 9lf:sum:pro)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/(^c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
()ser>a,
Contador RAM4#
-um U -um + num
Es la 9orma =ue conseguimos acumular en la suma 6>aria)le -um8 los di9erentes >alores de num.
Programacin C/C++ Ferm Vil 27
Contador P52DAC)2#
!ro U !ro E num
Es la 9orma =ue conseguimos acumular en el producto 6>aria)le !ro8 los >alores de num.
()ser>a tam)i+n =ue la -uma $emos de inicialiEarla por cero y el !roducto por uno.
3a E-tructura de Programacin F25
- Prog*1"
/* Prog01O.cpp */
#include <stdio.h>
void main()
{
int H#
for(H=1#H<=10#H=H>1)
{
printf(&n-structura K+1 )#
printf(0hora H= 9d:H)#
$
$
Estudio del P52&/(X#
3a E-tructura F25#
9or6>alor inicial'>alor 9inal' paso8
b
sentencia 1d
sentencia 2d
-------------d
-------------d
e
^ue =uiere decir, 5e!ite la eBecucin de la- -entencia- de !rograma 8ue Ha= encerrada-
entre lla1e-Q tanta- 1ece- como te indico en :1alor inicialQ 1alor 0inalQ !a-o;
0or(>U(N>GU(/N>U>+()
3as l<neas de programa de nuestro 49or5 se repetiran, desde CP1 $asta CP1* de 1 en 1' es decir 1*
>eces.
#i escri)i+ramos, 0or(>U'+N>GU].N>U>+Y)' =uerr<a decir, repite las l<neas de programa desde
CP23 $asta CP77 de L en L.
Podr<amos $acerlo m-s so9isticado, 0or(iU_/'+NiIU_.]]^NiUi_(V.]). ^ue traducido dice, repite
las l<neas de programa =ue $ay dentro del 49or5 desde 1P*.23 $asta iP-77.7! de S1.577 en S1.577
- Prog*2*
/* Prog0%0.cpp */
Programacin C/C++ Ferm Vil 27
#include <stdio.h>
void main()
{
int edad:indice#
char nom6%@7#
printf(&-scri)e tu nom)re8 )#
scanf(9s:nom)#
printf(&n-scri)e tu edad8 )#
scanf(9d:<edad)#
for(indice=1#indice<=edad#indice>>)
printf(&n9s:nom)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/'/c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
()ser>a,
#i es una sola la sentencia a repetir por el 49or5' no se encierra entre lla>es 6en este aspecto
9unciona igual =ue la estructura IF-E3#E8.
:ecuerda =ue indice++ es e=ui>alente a indiceUindice+(
Podemos introducir en 4los l<mites del 9or5 una >aria)le 6en nuestro caso edad8
- Prog*21
/* Prog0%1.cpp */
#include <stdio.h>
void main()
{
int mult#
float total#
total=0#
for(mult=11#mult<5000#mult=mult>11)
{
printf(9dE:mult)#
total=total>mult#
$
printf(&n&n*uma= 9f:total)#
$
E%ecDtalo >arias >eces $asta descu)rir lo =ue $ace el programa.
Vamos a $acer un programa =ue sir>a para calcular el 0actorial de un nDmero. :ecuerda =ue el 9actorial
de un nDmero > es 1Y2Y3YL....YC
Programacin C/C++ Ferm Vil 2!
- Prog*22
/* Prog0%%.cpp */
#include <stdio.h>
void main()
{
int i:num#
dou)le fa#
printf(&n!Glculo del factorial del nAmero8 )#
scanf(9d:<num)#
fa=1#
for(i=1#i<=num#i>>) fa=fa*i#
printf(&n-l Kactorial de 9d es 9lf:num:fa)#
$
()ser>a la l<nea =ue contiene el 0or, como slo contiene una instruccin' puede escri)irse todo el
:ciclo 0or; en una sla l<nea de programa.
Vamos a $acer un programa =ue calcule la suma de los 1* primeros mDltiplos del nDmero =ue =ueramos.
- Prog*23
/* Prog0%5.cpp */
#include <stdio.h>
void main()
{
int num:i#
dou)le sum:mult#
printf(&n,Altiplos de PuY nAmero8 )#
scanf(9d:<num)#
sum=0#
for(i=1#i<=10#i>>)
{
mult=num*i#
printf(&n,Altiplo= 9lf:mult)#
sum=sum>mult#
printf(&n*uma Parcial= 9lf:sum)#
$
printf(&n*uma /otal= 9lf:sum)#
$
Vamos a $acer un programa =ue calcule la ta*la de 1alore- de una 9uncin dada.
- Prog*2L
/* Prog0%;.cpp */
#include <stdio.h>
Programacin C/C++ Ferm Vil 2"
void main()
{
float H1:H%:paso#
float ?:i#
printf(&n/a)la de valores para la funci"n Z=I*IE@*I>10)#
printf(&n&n2ntroduce el valor menor de I8 )#
scanf(9f:<H1)#
printf(&n2ntroduce el valor ma?or de I8 )#
scanf(9f:<H%)#
printf(&n2ntroduce el incremento del valor de I8 )#
scanf(9f:<paso)#
for(i=H1#i<=H%#i=i>paso)
{
?=i*iE@*i>10#
printf(&nI= 91@f Z= 91@f:i:?)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/'Yc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
3a notacin P(V0 indica =ue la >aria)le correspondiente ocupar- (V e-!acio- en pantalla.
l e%ecutar el programa anterior' nos podemos encontrar con una serie de pro)lemas' por e%emplo si
introducimos en el >alor menor de > 6C18' un >alor =ue sea mayor =ue el introducido en la >aria)le >'' o
tam)i+n puede suceder =ue en la >aria)le !a-o escri)amos un nDmero negati>o.
Escri)e a partir del programa Prog/'Y#
- Prog*25
/* Prog0%@.cpp */
#include <stdio.h>
void main()
{
float H1:H%:paso#
float ?:i#
printf(&n/a)la de valores para la funci"n Z=I*IE@*I>10)#
printf(&n&n2ntroduce el valor menor de I8 )#
scanf(9f:<H1)#
printf(&n2ntroduce el valor ma?or de I8 )#
scanf(9f:<H%)#
if (H1>H%)
{
printf(&n'o siento: vuelve a intentarlo)#
return#
$
printf(&n2ntroduce el incremento del valor de I8 )#
scanf(9f:<paso)#
if(paso<=0)
Programacin C/C++ Ferm Vil 3*
{
printf(&n'o siento: vuelve a intentarlo)#
return#
$
for(i=H1#i<=H%#i=i>paso)
{
?=i*iE@*i>10#
printf(&nI= 91@f Z= 91@f:i:?)#
$
$
E%ecDtalo >arias >eces' pro)ando los casos 4con9licti>os5, C1`C2 o pasoP* o paso negati>o.
Est- claro =ue la sentencia return' sir>e para aca)ar el programa.
F) 3a *i*lioteca GmatHHI
- Prog*27
/* Prog0%B.cpp */
#include <stdio.h>
#include <math.h>
void main()
{
dou)le catet1:catet%:hipot#
printf(&n!Glculo de la hipotenusa de un /.1.)#
printf(&n===================================)#
printf(&n&n2ntroduce el valor de un cateto8 )#
scanf(9lf:<catet1)#
printf(&n2ntroduce el valor del otro cateto8 )#
scanf(9lf:<catet%)#
hipot=sPrt(catet1*catet1>catet%*catet%)#
printf(&n&n42P+/-.M*08 9lf:hipot)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/'.c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Estudio del P52&/'.,
En el programa utiliEamos la 9uncin -8rt' =ue calcula la ra<E cuadrada.
Para poder utiliEar la 9uncin matem-tica -8rt' necesitamos 4incluir5 la )i)lioteca 4C5'
=ue contiene las 9unciones matem-ticas. En nuestro caso es la )i)lioteca, matHH' por
esta raEn necesitamos la sentencia Finclude GmatHHI
Hos gustar<a la posi)ilidad de calcular 3** $ipotenusas. Vamos a me%orar el programa anterior para =ue
sea m-s cmodo calcularlas.
Programacin C/C++ Ferm Vil 31
- Prog*27
/* Prog0%D.cpp */
#include <stdio.h>
#include <math.h>
void main()
{
dou)le catet1:catet%:hipot#
char pregunta617#
pregunta607=[s[#
Xhile ((pregunta607==[s[)\\(pregunta607==[*[))
{
printf(&n!Glculo de la hipotenusa de un /.1.)#
printf(&n===================================)#
printf(&n&n2ntroduce el valor de un cateto8 )#
scanf(9lf:<catet1)#
printf(&n2ntroduce el valor del otro cateto8 )#
scanf(9lf:<catet%)#
hipot=sPrt(catet1*catet1>catet%*catet%)#
printf(&n&n42P+/-.M*08 9lf:hipot)#
printf(&n&n&n*i Puieres calcular otra hipotenusa pulsa)#
printf( la tecla 6s7 ? a continuaci"n 61eturn7: en caso)#
printf( contrario pulsa cualPuier otra )#
scanf(9s:pregunta)#
$
$
- Prog*2!
/* Prog0%F.cpp */
#include <stdio.h>
#include <math.h>
/* Programa Pue calcula el tipo de soluciones */
/* de una ecuaci"n polin"mica de %] grado */
void main()
{
dou)le a:):c:discr#
/* a:):c representan los coeficientes de la */
/* ecuaci"n */
/* */
/* discr= es el discriminante de la ecuaci"n*/
/* discr= )*) E ;*a*c */
printf(&n-scri)e el coeficiente del tYrmino de %] grado8 )#
scanf(9lf:<a)#
if(a==0)
{
printf(&n-ste programa s"lo sirve para ecuaciones de %]
grado)#
return#
Programacin C/C++ Ferm Vil 32
$
printf(&n-scri)e el coeficiente del tYrmino de 1r. grado8 )#
scanf(9lf:<))#
printf(&n-scri)e el termino independiente8 )#
scanf(9lf:<c)#
discr=)*)E;*a*c#
printf(&nLiscriminante de la ecuaci"n= 9lf:discr)#
if(discr==0) printf(&n&n*oluci"n Lo)le)#
if(discr<0) printf(&n&n*oluciones 2maginarias)#
if(discr>0) printf(&n&n*oluciones 1eales ? diferentes)#
$
- Pru+)alo >arias >eces' por e%emplo para,
aP1' )P1' cP1
aP*
aP2' )P-7' cP-2*
aP1' )PL' cPL
- Prog*2"
/* Prog0%O.cpp */
#include <stdio.h>
#include <math.h>
void main()
{
dou)le 0:N:!:H1:H%:Lisc#
printf(1esoluci"n de la ecuaci"n 0H^%>NH>!=0 &n)#
printf(&n-scri)e los valores de 0: N ? !&n)#
printf(0=)#scanf(9lf:<0)#
printf(N=)#scanf(9lf:<N)#
printf(!=)#scanf(9lf:<!)#
if(0==0)
{
printf(&n-rrorW: esto es una ecuaci"n de 1r.
grado)#
return#
$
else
{
Lisc=N*NE;*0*!#
if(Lisc>0)
{
H1=(EN>sPrt(Lisc))/(%.0*0)#
H%=(ENEsPrt(Lisc))/(%.0*0)#
printf(&n*oluci"n H1= 9lf:H1)#
printf(&n*oluci"n H%= 9lf:H%)#
$
else
if(Lisc==0)
{
H1=(EN)/(%.0*0)#
printf(&n*oluci"n Lo)le= 9lf:H1)#
Programacin C/C++ Ferm Vil 33
$
else printf(&n-rror8 1aices 2maginarias)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/'Xc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
()ser>a el :anidamiento; de i0 W el-e.
- Prog*3*
/* Prog050.cpp */
#include <stdio.h>
#include <math.h>
void main()
{
dou)le gra:rad#
dou)le pi=5.1;1@O%#
printf( Jrados 1adianes *eno !oseno /angente)#
for(gra=0#gra<=%D0#gra=gra>1@)
{
rad=pi*gra/1F0#
printf(&n911lf 911lf 911lf 911lf
911lf:gra:rad:sin(rad):cos(rad):tan(rad))#
$
$
()ser>a,
-in()Q co-()Q tan() son 9unciones =ue contiene la )i)lioteca matHH
Como puedes o)ser>ar las 9rmulas anteriores 9uncionan en radiane- 6y dou*le8.
- Prog*31
/* Prog051.cpp */
#include <stdio.h>
#include <math.h>
void main()
{
dou)le num#
char volver617#
volver607=[s[#
Xhile ((volver607==[s[)\\(volver607==[*[))
{
printf(&n-scri)e un nAmero8 )#
scanf(9lf:<num)#
Programacin C/C++ Ferm Vil 3L
if (num<=0)
{
printf(&n'os logaritmos de este nAmero no eHisten)#
return#
$
printf(&n&n&n-l 'ogaritmo .eperiano de 9lf es 9lf
:num:log(num))#
printf(&n-l 'ogaritmo Lecimal de 9lf es 9lf
:num:log10(num))#
printf(&n&nT_uieres volver a comenRar (*/.)U )#
scanf(9s:volver)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/+(c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
^ue =uede claro =ue las 9unciones log()Q log(/() est-n en la )i)lioteca matHH. Es decir' cuando necesites
utiliEarlas de)er-s incluir en tu programa, Finclude GmatHHI
&) 3a- -entencia- ,5E46 = C2N)INAE
- Prog*32
/* Prog05%.cpp */
#include <stdio.h>
void main()
{
int H#
for(H=@#H<1@#H>>)
{
if(H==F) )rea`#
printf(&n H= 9d:H)#
$
printf(&n&n)#
for(H=@#H<1@#H>>)
{
if(H==F) continue#
printf(&n H=9d :H)#
$
$
Estudio del P52&/+'#
Programacin C/C++ Ferm Vil 35
3a sentencia *read nos o)liga a salir del ciclo 0or. Por esta raEn el primer 49or5 del programa'
slo escri)e del 5 $asta el 7.
3a sentencia continue salta al 9inal del ciclo 0or y continua e%ecutando el ciclo. Por esta raEn el
segundo ciclo 0or escri)e todos los nDmeros del 5 al 1L eCceptuando el !.
- Prog*33
/* Prog055.cpp */
#include <stdio.h>
void main()
{
int i#
char sn617#
char sn%617#
printf(%)#
for(i=;#i<=1000#i=i>%)
{
printf(&n_uieres continuar (*/.)U )#
scanf(9s:sn)#
if ((sn607==[n[)\\(sn607==[.[)) )rea`#
printf(&n_uieres Pue me salte el pr"Himo nAmero par (*/.)U
)#
scanf(9s:sn%)#
if ((sn%607==[s[)\\(sn%607==[*[)) continue#
printf(&n9d:i)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/++c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
O) 3a e-tructura de !rogramacin RbI)CO
- Prog*3L
/* Prog05;.cpp */
#include <stdio.h>
#include <math.h>
void main()
{
int H#
Programacin C/C++ Ferm Vil 37
dou)le num#
char sn617#
sn607=[s[#
Xhile ((sn607==[s[)\\(sn607==[*[))
{
printf(&n (1) -' /12P'-)#
printf(&n (%) -' !M0L10L+)#
printf(&n (5) '+J012/,+ .0/M10')#
printf(&n (;) '+J012/,+ L-!2,0')#
printf(&n (@) *-.+)#
printf(&n (B) !+*-.+)#
printf(&n&n&n -scri)e el nAmero de la opci"n Pue desees8
)#
scanf(9d:<H)#
sXitch(H)
{
case 18
printf(&n&n-scri)e el nAmero8 )#
scanf(9lf:<num)#
printf(&n-l triple de 9lf es 9lf:num:5*num)#
)rea`#
case %8
printf(&n&n-scri)e el nAmero8 )#
scanf(9lf:<num)#
printf(&n-l cuadrado de 9lf es 9lf:num:num*num)#
)rea`#
case 58
printf(&n&n-scri)e el nAmero8 )#
scanf(9lf:<num)#
printf(&n-l logaritmo neperiano de 9lf es
9lf:num:log(num))#
)rea`#
case ;8
printf(&n&n-scri)e el nAmero8 )#
scanf(9lf:<num)#
printf(&n-l logaritmo decimal de 9lf es
9lf:num:log10(num))#
)rea`#
case @8
printf(&n&n-scri)e el nAmero8 )#
scanf(9lf:<num)#
printf(&n-l seno de 9lf es 9lf:num:sin(num))#
)rea`#
case B8
printf(&n&n-scri)e el nAmero8 )#
scanf(9lf:<num)#
printf(&n-l coseno de 9lf es 9lf:num:cos(num))#
)rea`#
default8
printf(&n&n-sto no es ninguna opci"n )#
)rea`#
$
printf(&n&n&n_uieres volver a calcular (*/.)U )#
scanf(9s:sn)#
$
$
Programacin C/C++ Ferm Vil 37
Programacin C/C++ Ferm Vil 3!
E-tructura de !rogramacin RbI)CO#
-eitcH(>)
J
ca-e 1alor(#
lnea de !rograma(N
lnea de !rograma'N
_______________________N
_______________________N
*readN
ca-e 1alor'#
lnea de !rograma+N
lnea de !rogramaYN
_______________________N
_______________________N
*readN
de0ault#
lnea de !rograma(N
lnea de !rograma'N
_______________________N
_______________________N
*readN
K
#egDn el >alor =ue tome la >aria)le >' se e%ecutar-n las l<neas de programa del ca-e correspondiente.
()ser>a =ue cada ca-e termina con *read. #i la >aria)le > no toma el >alor de ningDn ca-e' se e%ecutar-n
las l<neas correspondientes al :de0ault;' =ue termina con el correspondiente *read.
I) 2tro cdigo de 0ormato# Po
- Prog*35
/* Prog05@.cpp */
/* Programa Pue convierte un nAmero decimal entero a octal */

#include<stdio.h>
#include<conio.h> /* PorPue utiliRo8 getch() */

void main()
{
int numero#
printf(.umero entero en decimal8 )#
scanf(9d: <numero)#
printf(&n&n*u representacion en octal es 9o)#
/* +)serva Pue no es necesario escri)ir el nom)re de la
varia)le. /oma nota del c"digo de formato de un
nAmero en octal8 9o */
Programacin C/C++ Ferm Vil 3"
printf(&nPresione cualPuier tecla para terminar...&n)#
getch()#
$
Gn nDmero entero en decimal =uiere decir en )ase 1*' un nDmero en octal =uiere decir en )ase !
#i tu)i+ramos de pasar un nDmero en )ase 1* a )ase ! 4a mano5' de)er<amos $acer lo siguiente' por
e%emplo con el nDmero !5,
!5, ! P 1*' restoP5
1*,! P 1' resto P 2
Ir<amos di>idiendo el nDmero y sus cocientes sucesi>os por !' $asta =ue no pudi+ramos m-s.
El nDmero correspondiente en )ase !' ser<an los di9erentes restos y el Dltimo cociente' escritos al re>+s' en
nuestro e%emplo, !5 en )ase 1* P 125 en )ase !. Como puedes compro)ar si e%ecutas el Prog/+Vc!! y
ante la pregunta :NSmero entero en decimal#; escri)es ^V
%) M"- 0uncione- de GmatHHI
- Prog*37
/* Prog05B.cpp */
/* Mso de las funciones8 poX ? fa)s de <math.h> */
/* Programa Pue encuentra las ra(ces de una ecuaci"n
cuadrada: de acuerdo a las f"rmulas8
(E)araiR()^%E;ac))/%a */
#include <stdio.h>
#include <math.h>
#include <conio.h>
void main()
{
float a:):c:H1:H%#
printf(-ste programa encuentra las ra(ces reales&n)#
printf(de la ecuaci"n de la forma&n)#
printf( aH^%>)H>c=0 &n)#
printf(0 continuaci"n: escri)a los coeficientes&n)#
printf(de la ecuaci"n8&n)#
printf(a= )#
scanf(9f:<a)#
printf()= )#
scanf(9f:<))#
printf(c= )#
scanf(9f:<c)#
H1=poX():%)#
/* 'a funci"n dou)le poX(dou)le )ase: dou)le eHp)
es una funci"n Pue se encuentra en math.h: Pue
devuelve )ase elevado a eHp. */
H1=H1E(;*a*c)#
H1=E)>sPrt(fa)s(H1))#
/* 'a funci"n dou)le fa)s(dou)le num) es una funci"n
Pue se encuentra en math.h: Pue devuelve el valor
Programacin C/C++ Ferm Vil L*
a)soluto de num */
H1=H1/(%*a)#
H%=poX():%)#
H%=H%E(;*a*c)#
H%=E)EsPrt(fa)s(H%))#
H%=H%/(%*a)#
printf(H1= 9f&n:H1)#
printf(H%= 9f&n:H%)#
getch()#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/+.c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
6) 3a 0uncin tou!!er
- Prog*37
/* Prog05D.cpp */
#include <ct?pe.h> /* funci"n toupper */
#include <stdio.h> /* funciones printf() ? scanf() */
#include <math.h> /* funci"n fa)s() */
#include <conio.h> /* funci"n getch() */
main()
{
char respuesta#
respuesta=[&0[#
Xhile (respuestaW=[.[)
{
float H#
printf(Lame un nAmero8 )#
scanf(9f:<H)#
H=fa)s(H)#
printf(*u valor a)soluto es8 9f&n:H)#
printf(Presione [.[ para salir...&n)#
respuesta=toupper(getch())#
/* 'a funci"n int toupper(int ch) Pue estG
en el fichero ct?pe.h: devuelve la
ma?Ascula de ch siempre ? cuando
sea una letra. */
$
$
- Prog*3!
/* Prog05F.cpp */
/* -ste programa ela)ora el tic`et de entrada ? los
resumenes de recaudaci"n de un espectaculo.
Programacin C/C++ Ferm Vil L1
-l precio del /ic`et depende de la edad del espectador
(niVo: Qoven: adulto o Qu)ilado). */
#include <stdio.h>
#include <conio.h>
#include <ct?pe.h>
void main()
{
const int precio=F00# /* Precio de la )utaca */
int edad:tarifa:)utacas:totalPtas#
char opcion:tecla#
totalPtas=0#)utacas=0#opcion=[ [#
Xhile (opcion W= [K[)
{
printf(&n+pci"n (/ic`et: 1esumen o Kin) U &n)#
opcion=getche()#
opcion=toupper(opcion)#
/* la funci"n [toupper[ estG en <ct?pe.h> ? devuelve
la letra ma?Ascula. */
printf(&n&n)#
if (opcion == [/[)
{
tecla=[ [#
Xhile (tecla W= [.[)
{
printf(&n -dad= U )#scanf(9d:<edad)#
)utacas=)utacas>1#
printf(&n======================================)#
printf(&n /2!b-/ L- -./10L0)#
if (edad<B)
{printf(&n \ .iVo \)#tarifa=0#$#
if ((edad>=B) << (edad<1F))
{printf(&n \ Soven
\)#tarifa=precio/%#$#
if ((edad>=1F) << (edad<B@))
{printf(&n \ 0dulto
\)#tarifa=precio#$#
if (edad>=B@)
{printf(&n \ Su)ilado
\)#tarifa=precio/;#$#
totalPtas=totalPtas>tarifa#
printf(&n&n Precio = 9@d:tarifa)#
printf(&n&n=====================================)#
printf(&n&n)#
printf(+tro /ic`et (*/.) U &n)#
tecla=toupper(getche())#
$#
$#
if (opcion==[1[)
{
printf(&n&n 1-*M,-. L- C-./0*)#
printf(&n========================================)#
printf(&n&n 9d Nutacas:)utacas)#
printf(&n&n /otal recaudado = 9d:totalPtas)#
printf(&n&n)#
$
Programacin C/C++ Ferm Vil L2
$
$
3) 3a e-tructura de !rogramacin :do W eHile;
- Prog*3"
/* Prog05O.cpp */
/* -l mismo Prog05D: pero utiliRando la estructura
do { $ Xhile ( )
+)serva8
do {
sentencia 1#
sentencia %#
EEEEEEEEEEEE
$ Xhile(condici"n)# */
#include <ct?pe.h>
#include<conio.h>
#include<stdio.h>
#include <math.h>
void main()
{
char respuesta#

do{
float H#
printf(Lame un nAmero8 )#
scanf(9f:<H)#
H=fa)s(H)#
printf(*u valor a)soluto es8 9f&n:H)#
printf(!ontinuar...&n)#
respuesta=toupper(getch())#
$Xhile(respuestaW=[.[)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/+Xc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Programacin C/C++ Ferm Vil L3
M) C"lculo en 0orma I)E54)IV4
- Prog*L*
/* Prog0;0.cpp */
/* *ucesi"n de K2N+.0!!2 (forma iterativa)
se trata de la siguiente8 0:1:1:%:5:@:F:15:...
-s decir8 cada tYrmino es igual a la suma de
los dos anteriores */
#include <stdio.h>
void main()
{
int anterior:ultimo:auH#
anterior=0#ultimo=1#
printf( 0)#
printf(&n 1)#
Xhile (ultimo<=%@000)
{
auH=anterior>ultimo#
anterior=ultimo#
ultimo=auH#
if (ultimo>0) printf(&n910d:ultimo)#
$
$
- Prog*L1
/* Prog0;1.cpp */
/* Kactorial de un nAmero sin recursividad (forma iterativa)
-l factorial de 1% es ;DO.001.B00
-l factorial de 15 es B.%%D.0%0.F00
-l mGHimo valor Pue puede tomar un long es %.1;D.;F5.B;D
Por lo tanto Yste programa s"lo puede calcular hasta el
factorial de 1%. */
#include <stdio.h>
void main()
{
int i:num:fin#
long fa#
long pepps#
num=%#
printf(&n&nKactoriales hasta el nAmero8 )# scanf(9d:<fin)#
if (fin>=15)
{
printf(&n .o puedo calcular tanto)#
return#
$
Xhile(num<=fin)
{
Programacin C/C++ Ferm Vil LL
fa=1#
for(i=1#i<=num#i>>)
{
fa=fa*i#
$
printf(&n -l factorial de 9d es &t&t 9ld:num:fa)#
/* 1ecuerda Pue el manipulador&t fuerRa un ta)ulador */
num>>#
$
$
N) 3a- 0uncione- getcHe = !utcHar
- Prog*L2
/* Prog0;%.cpp */
/* 'a funci"n [getche()[ lee un caracter. -spera hasta Pue se
pulsa una tecla ? entonces devuelve su valor. -l eco de la
tecla pulsada aparece automGticamente en la pantalla.
'a funci"n [putchar()[ imprime un carGcter en pantalla.
-stas dos funciones estGn en <conio.h> */
#include <stdio.h>
#include <conio.h>
void main()
{
char c#
printf(-scri)e una letra8 &n)#
c=getche()#
if (c==[0[) printf(&n4as escrito una [0[)#
else
printf(&n.o has escrito una [0[)#
printf(&n4as escrito8 )#
putchar(c)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/Y'c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
- Prog*L3
/* Prog0;5.cpp */
Programacin C/C++ Ferm Vil L5
/* *e trata de investigar si el uso de [getche[nos sirve
para analiRar cada una de las letras Pue escri)imos
en una frase. */

#include <stdio.h>
#include <conio.h>
void main()
{
char frase6D@7#
char c#
int i#
printf(&n&n-scri)e una frase mGH D; caracteres )#
printf(? pulsa un [.[ para aca)ar&n&n)#
for(i=0#i<=D;#i>>)
{
frase6i7=getche()#
if(frase6i7==[.[) )rea`#
$
printf(&n&n&n'a frase Pue has escrito es8 )#
printf(&n&n)#
for(i=0#i<=D;#i>>)
{
if (frase6i7==[.[) )rea`#
else
putchar(frase6i7)#
$#
printf(9c:frase6i7)#
$
- Prog044
/* Prog0;;.cpp */
/* 0l escri)ir un teHto Pue contiene algo entre parentesis
me interesa Pue el programa dY como resultado el teHto
original pero sin el teHto entre parYntesis */
#include <stdio.h>
#include <conio.h>
void main()
{
char frase6D@7:frasefin6D@7#
char c#
int i:Q#
printf(&n&n-scri)e una frase mGH D; caracteres )#
printf(? pulsa un [.[ para aca)ar&n&n)#
for(i=0#i<=D;#i>>)
{
frase6i7=getche()#
if(frase6i7==[.[) )rea`#
$
printf(&n&n)#
/* -n los espacios en )lanco escri)o el carGcter [c[ */
Programacin C/C++ Ferm Vil L7
for(i=0#i<=D;#i>>)
if (frase6i7==[ [)
{
frase6i7=[c[#
$#
/* /odo lo Pue ha? entre un [([ ? un [)[ escri)o caracteres
en )lanco. */
for(i=0#i<=D;#i>>)
{
if (frase6i7==[.[) )rea`#
if (frase6i7==[([)
{
for(Q=i#Q<=D;#Q>>)
{
if (frase6Q7 W= [)[) frase6Q7=[ [#
else
{
frase6Q7=[ [#
)rea`#
$#
$#
$#
$#
/* -limino todos los espacios en )lanco */
Q=0#
for(i=0#i<=D;#i>>)
{
if (frase6i7 W= [ [)
{
frasefin6Q7=frase6i7#
Q=Q>1#
$#
$#
/* 'os caracteres [c[ vuelvo a transformarlos en espacios en )lanco */
for(i=0#i<=D;#i>>)
{
if (frasefin6i7==[c[) frasefin6i7=[ [#
$#
/* -scri)o la cadena resultante. */
printf(&n)#
for(i=0#i<=D;#i>>)
{
if (frasefin6i7==[.[) )rea`#
else
putchar(frasefin6i7)#
$#
printf(9c:frasefin6i7)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/YYc!! en TuCarpeta.
Programacin C/C++ Ferm Vil L7
E%ecDtalo un par o tres de >eces
- Prog*L5
/* Prog0;@.cpp */
/* -l programa anterior pero en el caso de parYntesis
anidados. -s decir si escri)imos un teHto entre
parYntesis: ? en su interior ha? otro teHto
entre parYntesis */
#include <stdio.h>
#include <conio.h>
void main()
{
char frase6D@7:frasefin6D@7#
char c#
int i:Q#
printf(&n&n-scri)e una frase mGH D; caracteres )#
printf(? pulsa un [.[ para aca)ar&n&n)#
for(i=0#i<=D;#i>>)
{
frase6i7=getche()#
if(frase6i7==[.[) )rea`#
$
printf(&n&n)#
/* -n los espacios en )lanco escri)o el carGcter [c[ */
for(i=0#i<=D;#i>>)
if (frase6i7==[ [)
{
frase6i7=[c[#
$#
/* /odo lo Pue ha? entre un [([ ? un [)[ escri)o caracteres
en )lanco. */
for(i=0#i<=D;#i>>)
{
if (frase6i7==[.[) )rea`#
if (frase6i7==[([)
{
for(Q=i#Q<=D;#Q>>)
{
if (frase6Q7 W= [)[) frase6Q7=[ [#
else
{
frase6Q7=[ [#
)rea`#
$#
$#
$#
$#
Programacin C/C++ Ferm Vil L!
/* /odo lo Pue ha? entre un [ [ ? un [)[ escri)o caracteres
en )lanco. */
for(i=0#i<=D;#i>>)
{
if (frase6i7==[.[) )rea`#
if (frase6i7==[)[)
{

for(Q=i#Q>=0#Q=QE1)
{
if (frase6Q7 W= [ [) frase6Q7=[ [#
else
{
)rea`#
$#
$#
$#
$#
/* -limino todos los espacios en )lanco */
Q=0#
for(i=0#i<=D;#i>>)
{
if (frase6i7 W= [ [)
{
frasefin6Q7=frase6i7#
Q=Q>1#
$#
$#
/* 'os caracteres [c[ vuelvo a transformarlos en espacios en )lanco */
for(i=0#i<=D;#i>>)
{
if (frasefin6i7==[c[) frasefin6i7=[ [#
$#
/* -scri)o la cadena resultante. */
printf(&n)#
for(i=0#i<=D;#i>>)
{
if (frasefin6i7==[.[) )rea`#
else
putchar(frasefin6i7)#
$#
printf(9c:frasefin6i7)#
$
- Prog*L7
/* Prog0;B.cpp */
/********************************************************
Programacin C/C++ Ferm Vil L"
Programa Pue analiRa un teHto terminado en un punto ?
conta)iliRa los siguientes aspectos8
nAmero de caracteres.
nAmero de vocales
nAmero de [a[ o [0[
nAmero de [e[ o [-[
nAmero de [i[ o [2[
nAmero de [o[ o [+[
nAmero de [u[ o [M[
********************************************************/
#include <stdio.h>
#include <conio.h>
#include <ct?pe.h>
void main()
{
char c#
int n:v:a:e:i:o:u#
printf(&n-scri)e un teHto: ? aca)a con un punto&n&n)#
c=[ [#n=0#v=0#a=0#e=0#i=0#o=0#u=0#
Xhile(c W= [.[)
{
c=toupper(getche())#
if (c==[0[)
{
v=v>1#
a=a>1#
$
if (c==[-[)
{
v=v>1#
e=e>1#
$
if (c==[2[)
{
v=v>1#
i=i>1#
$
if (c==[+[)
{
v=v>1#
o=o>1#
$
if (c==[M[)
{
v=v>1#
u=u>1#
$
n=n>1#
$
printf(&n !aracteres = 9d Cocales = 9d:n:v)#
printf(&n0 = 9d - = 9d 2 = 9d + = 9d M = 9d :a:e:i:o:u)#
$
Programacin C/C++ Ferm Vil 5*
2) Varia*le au>iliar
- Prog*L7
/* Prog0;D.cpp */
/**************************************************************
Programa Pue lee la longitud de los 5 lados de un triGngulo
? analiRa PuY tipo de triGngulo es8 no es triGngulo:
ePuilGtero: is"sceles: escaleno: rectGngulo.
**************************************************************/
#include <stdio.h>
void main()
{
float lado1:lado%:lado5:auHiliar#
printf(&nPrimer lado 8 )#scanf(9f:<lado1)#
printf(&n*egundo lado 8 )#scanf(9f:<lado%)#
printf(&n/ercer lado 8 )#scanf(9f:<lado5)#
/* +rdenaci"n de los tres valores
toma nota del uso de una varia)le auHiliar */
if (lado1>lado%)
{
auHiliar=lado1#
lado1=lado%#
lado%=auHiliar#
$
if (lado5<lado1)
{
auHiliar=lado5#
lado5=lado%#
lado%=lado1#
lado1=auHiliar#
$#
if (lado5<lado%)
{
auHiliar=lado%#
lado%=lado5#
lado5=auHiliar#
$
/* !ompro)emos la ordenaci"n8 */
printf(&n lado 18 9f:lado1)#
printf(&n lado %8 9f:lado%)#
printf(&n lado 58 9f:lado5)#
/* !lasificaci"n del triGngulo */
if (lado5>=lado1>lado%) printf(&n-sto no es un triGngulo)#
else if ((lado1==lado%) << (lado%==lado5)) printf(&n/riGngulo
-PuilGtero)#
else if ((lado1==lado%)\\(lado1==lado5)\\(lado%==lado5))
printf(&n/riGngulo 2s"sceles)#
else printf(&n/riGngulo -scaleno)#
if ((lado5<lado1>lado%)<<(lado5*lado5==lado1*lado1>lado%*lado%))
printf(&nZ ademGs 1-!/0.JM'+)#
Programacin C/C++ Ferm Vil 51
$
En el Prog/Y/ ya utiliE-)amos una 1aria*le au>iliar.
P) Di*uBando con CCf
- Prog*L!
/* Prog0;F.cpp */
/*************************************************
Programa8 /riGngulo.
-ste programa imprime el )orde de un triGngulo
usando asteriscos.
*************************************************/
#include <stdio.h>
void main()
{
const int n=D# /* 0ltura del triGngulo */
int Q:`# /* !ontadores */
for (`=1#`<=nE1#`>>) printf( )#
printf(*)#
printf(&n)#
for (`=%#`<=nE1#`>>)
{
for (Q=1#Q<=nE`#Q>>) printf( )#
printf(*)#
for (Q=1#Q<=%*`E5#Q>>) printf( )#
printf(*)#
printf(&n)#
$
printf(*)#
for (`=1#`<=nE1#`>>)
{
printf( *)#
$#
$
- Prog*L"
/* Prog0;O.cpp */
/************************************************
Programa8 /riGngulo Nis
-ste programa imprime el )orde de un triGngulo
usando asteriscos. 'a altura del triGngulo:
en lineas de escritura se lee como dato.
Programacin C/C++ Ferm Vil 52
************************************************/
#include <stdio.h>
void main()
{
int n:Q:`#
printf(0ltura8 )#scanf(9d:<n)#
printf(&n)#
if (n>0)
{
for (`=1#`<=nE1#`>>) printf( )#
printf(*)#
printf(&n)#
$
for (`=%#`<=nE1#`>>)
{
for (Q=1#Q<=nE`#Q>>) printf( )#
printf(*)#
for (Q=1#Q<=%*`E5#Q>>) printf( )#
printf(*)#
printf(&n)#
$
if (n>1)
{
printf(*)#
for (`=1#`<=nE1#`>>)
{
printf( )#
printf(*)#
$
printf(&n)#
$#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/YXc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
- Prog*5*
/* Prog0@0.cpp */
/**************************************************
Programa8 1om)o de asteriscos
Li)uQa un rom)o simYtrico de asteriscos.
/omando como dato
el nAmero de asteriscos Pue tiene el lado.
**************************************************/
#include <stdio.h>
void main()
Programacin C/C++ Ferm Vil 53
{
int fila:Q:n#
printf(&n'adoU )#scanf(9d:<n)#
printf(&n&n)#
for (fila=1#fila<=n#fila>>)
{
for (Q=1#Q<=nEfila#Q>>) printf( )#
for (Q=1#Q<=fila#Q>>) printf(* )#
printf(&n)#
$
#
for (fila=1#fila<=nE1#fila>>)
{
for (Q=1#Q<=fila#Q>>) printf( )#
for (Q=1#Q<=nEfila#Q>>) printf(* )#
printf(&n)#
$#
$
4A)2EV43A4CI@N '
18 El siguiente programa tiene errores. Escr<)elo 6gr-)alo con el nom)re EV43'4 en TuCarpeta8 y
corr<gelo para =ue 9uncione,
/E e1al'a E/
Finclude G-tdioHI
/E Con1er-in de )em!eratura-
1oid main()
J
int cuentaN
int 0arenHeitN
int cel-iu-N
!rint0(Z)em!eratura- FarenHeit = Cel-iu- /n$nZ)N
0or(cuentaU_'NcuentaGU('NcuentaUcuenta+()
J
cel-iu-U(/EcuentaN
0arenHeitU+'+(cel-iu-EX)/VN
!rint0(Z CU PYd FU PY0ZQcel-iu-Q0arenHeit)N
i0(cel-iu-UU/) !rint0(Z Punto de congelacin del 4&A4Z)N
i0(cel-iu-UU(//) !rint0(Z Punto de e*ullicin del 4&A4Z)N
!rint0(Z$nZ)N
K
K
28 VaE un programa =ue 9uncione de la siguiente manera,
Programacin C/C++ Ferm Vil 5L
- El programa nos pide =ue escri)amos dos nDmeros positi>os menores de 57
- El programa nos da como resultado el producto de los dos nDmeros.
- #i los nDmeros no son positi>os o son mayores o iguales a 57' el programa nos lo dice y se aca)a la
e%ecucin del mismo.
- El programa nos pregunta al 9inal si =ueremos >ol>er a empeEar.
2ra)a el programa con el nom)re EV43', en TuCarpeta.
38 Escri)e un programa =ue nos >aya pidiendo nDmeros. #i escri)imos el nDmero XXXX se aca)ad por
Dltimo el programa nos da como resultado el nDmero de nDmeros introducidos' eCceptuando el XXXX.
2ra)a el programa con el nom)re EV43'C
L8 VaE un programa =ue $aga lo mismo =ue el anterior' pero adem-s nos d+ la suma de todos los
nDmeros introducidos' eCceptuando el """".
2ra)a el programa con el nom)re EV43'D.
58 VaE un programa =ue $aga lo mismo =ue el anterior' pero adem-s =ue nos d+ el producto de los
nDmeros introducidos' eCceptuando el """".
2ra)a el programa con el nom)re EV43'E.
78 VaE un programa =ue escri)a todos los mDltiplos de 23 in9eriores a 1*** y por Dltimo nos d+ la suma
de todos ellos.
2ra)a el programa con el nom)re EV43'F' en TuCarpeta.
78 VaE un programa =ue sir>a para $acer una ta)la de >alores de la 9uncin, RPsen67I-58
- El programa nos pide los dos >alores de 4C5 6>alores m-Cimo y m<nimo8
- El programa nos pide el incremento 6>ariacin8 de la ?.
2ra)a el programa con el nom)re EV43'&' en TuCarpeta.
!8 VaE un programa =ue sir>a para calcular un cateto de un tri-ngulo rect-ngulo a partir del otro cateto y
la $ipotenusa' de la siguiente 9orma,
- El programa nos pide el >alor de la $ipotenusa.
- El programa nos pide el >alor de un cateto.
- #i el cateto es mayor =ue la $ipotenusa' el programa nos da un mensa%e de error y se aca)a
- El programa nos da como resultado el >alor del otro cateto y nos pregunta si =ueremos >ol>er a
empeEar.
2ra)a el programa con el nom)re EV43'O' en TuCarpeta.
"8 VaE un programa =ue sir>a para resol>er ecuaciones de 2[ grado del tipo aC
2
& )C P*
2ra)a el programa con el nom)re EV43'I
Programacin C/C++ Ferm Vil 55
1*8 VaE un programa =ue sir>a para resol>er sistemas de ecuaciones del tipo,
aC & )y P c
aOC & )OyPcO
2ra)a el programa con el nom)re EV43'%
118 VaE un programa con la posi)ilidad de $acer el EV43'I o el EV43'% 6de)es utiliEar la estructura
#AI.CV8
2ra)a el programa con el nom)re EV43'6' en TuCarpeta.
128 VaE un programa =ue escri)a la ta)la de >alores de la 9uncin yPaC
2
&)C&c' el programa nos pide los
>alores de a' )' c entre los >alores 4->5 y 4>5 6el programa nos pide el >alor del numero natural 4>58.
2ra)a el programa con el nom)re EV43'3' en TuCarpeta.
138 VaE un programa =ue escri)a los 15 primeros mDltiplos de 7' su suma y su producto. El programa $a
de tener la posi)ilidad de >ol>er a empeEar.
2ra)a el programa con el nom)re EV43'M' en TuCarpeta.
1L8 El siguiente programa tiene errores' ind<calos y eCplica detalladamente lo =ue $ace el programa,
Finclude G-tdioHI
1oid main()
J
int IN IU/N
eHile(IGV)N
J
!rint0(:$nNUP0;QI)N
I++N
K
K
2ra)a el programa con el nom)re EV43'N' en TuCarpeta.
158 VaE un programa =ue sir>a para calcular el -rea de un tri-ngulo o el -rea de un rect-ngulo o el -rea
de un c<rculo. El programa $a de tener la posi)ilidad de >ol>er a empeEar.
2ra)a el programa con el nom)re EV43'2' en TuCarpeta.
178 VaE un programa tal =ue, dados 2 >ectores del espacio' calcule su producto escalar' producto
>ectorial y adem-s nos d+ el mdulo de los dos >ectores y tam)i+n el mdulo del producto >ectorial.
2ra)a el programa con el nom)re EV43'P' en TuCarpeta.
178 VaE un programa =ue 4di)u%e5 un rectangulo de asteriscos a partir de la )ase y la altura.
2ra)a el programa con el nom)re EV43'g' en TuCarpeta.
Programacin C/C++ Ferm Vil 57
1!8 VaE un programa =ue di)u%e un cuadrado' con el car-cter =ue =uieras' a partir del lado.
2ra)a el programa con el nom)re EV43'5' en TuCarpeta.
1"8 VaE un programa =ue 4analice5 las >ocales' consonantes y espacios en )lanco de un teCto.
2ra)a el programa con el nom)re EV43'R' en TuCarpeta.
2*8 VaE un programa =ue nos pida un nDmero y d+ como resultado la ta)la de multiplicar del nDmero
introducido.
2ra)a el programa con el nom)re EV43')' en TuCarpeta.
218 VaE un programa =ue calcule el nDmero 4e5 mediante el desarrollo en serie, e P 1 & 1?61K8 & 1?62K8 &
1?63K8 & 1?6LK8 & ...
2ra)a el programa con el nom)re EV43'A' en TuCarpeta.
228 VaE un programa =ue calcule la anualidad' a partir del capital' el tanto por ciento anual' y los aFos de
amortiEacin de un cr+dito,
CapY61&i?1**8faFos Yi?1**
nualidad P ---------------------------------------
61&i?1**8faFos - 1
El programa tam)i+n de)e calcular para todos los aFos' la parte de la anualidad
dedicada al pago de intereses y la parte dedicada a la amortiEacin de la deuda.
2ra)a el programa con el nom)re EV43'V' en TuCarpeta.
Programacin C/C++ Ferm Vil 57
Programacin C/C++ Ferm Vil 5!
III_ Funcione-
Matrice- Vectore- 4rra=-
- Prog*51
/* Prog0@1.cpp */
#include <stdio.h>
void main()
{
int i#
char nom6B7#
printf(&n-scri)e una pala)ra de eHactamente B letras8 )#
scanf(9s:nom)#
for(i=0#i<B#i>>)
{
printf(&nnom69d7= :i)#
printf(9c:nom6i7)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/V(c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Estudio del P52&/V(
3a >aria)le nom' es una >aria)le compuesta 6por esta raEn en el -can0 no $emos de poner el
s<m)olo T antes del nom)re de la >aria)le8.
este tipo de >aria)les se les llama tam)i+n >ectores' matrices o arrays' por=ue una sla
>aria)le 6nom8' contiene di9erentes >alores 6en nuestro caso 7 caracteres8.
()ser>a la di9erencia con los identi0icadore- de 0ormato 6string S c$ar8
Ws , si =ueremos mostrar la pala)ra 6todos los >alores de la matriE8.
Wc , si =ueremos mostrar uno de los >alores de la matriE.
()ser>a tam)i+n la 9orma de acceder a uno de los >alores de la matriE, nomL'M indica el 3r.
>alor' ya =ue empieEa por * 6el llamado <ndice de la matriE8.
Es decir,
c$ar nomT7U, de9ine una matriE de 7 caracteres.
nomT*U, indica el 1[
nomT1U, indica el 2[
-----------------------
nomT5U, indica el Dltimo 67[8.
El array del programa anterior era una matriE de caracteres' >eamos =ue tam)i+n podemos construir
4arrays5 de nDmeros,
Programacin C/C++ Ferm Vil 5"
- Prog*52
/* Prog0@%.cpp */
#include <stdio.h>
void main()
{
int valors61%7#
int i#
for(i=0#i<1%#i>>) valors6i7=%*(i>;)#
for(i=0#i<1%#i>>)
printf(&n -l valor de valors69d7 es 9d:i:valors6i7)#
$
Estudio del P52&/V',
int 1alor-L('M
0e9inimos una >aria)le 6matriE' >ector o array8 de 12 >alores enteros.
signamos >alores a la matriE anterior,
i P * , >alorsT*U P 2Y6*&L8 P !
i P 1 , >alorsT1U P 2Y61&L8 P 1*
gggggggggggggg
gggggggggggggg
i P 11 , >alorsT11U P 2Y611&L8 P 3*
()ser>a =ue en una matriE entera 6int8 no $ay pro)lema en cuanto al identi9icador, siempre es
Pd.
- Prog*53
/* Prog0@5.cpp */
#include <stdio.h>
void main()
{
float vector1657:vector%657#
int i#
float proesc#
/* 2ntroducci"n del primer vector */
printf(&n 2ntroduce las componentes del primer vector&n)#
scanf(9f 9f 9f:<vector1607:<vector1617:<vector16%7)#
/* 2ntroducci"n del segundo vector */
printf(&n 2ntroduce las componentes del segundo vector&n)#
scanf(9f 9f 9f:<vector%607:<vector%617:<vector%6%7)#
printf(& Cector 1= ( 9f: 9f: 9f ):vector1607:vector1617:vector16%7)#
printf(& Cector %= ( 9f: 9f: 9f ):vector%607:vector%617:vector%6%7)#
/* !Glculo del producto escalar */
for(i=0#i<5#i>>) proesc=proesc>vector16i7*vector%6i7#
/* 1esultado */
Programacin C/C++ Ferm Vil 7*
printf(&n&n -l producto escalar es = 9f:proesc)#
$
3a utilidad de los arrays est- clara, o)ser>a de =ue 9orma m-s 9-cil calculamos el !roducto e-calar.
- Prog*5L
/* Prog0@;.cpp */
#include <stdio.h>
void main()
{
float f1657:f%657:f5657#
int i#
float det#
/* 2ntroducci"n de la primera fila del determinante */
printf(&n 2ntroduce los elementos de la primera fila&n)#
scanf(9f 9f 9f:<f1607:<f1617:<f16%7)#
/* 2ntroducci"n de la segunda fila del determinante */
printf(&n 2ntroduce los elementos de la segunda fila&n)#
scanf(9f 9f 9f:<f%607:<f%617:<f%6%7)#
/* 2ntroducci"n de la tercera fila del determinante */
printf(&n 2ntroduce los elementos de la tercera fila&n)#
scanf(9f 9f 9f:<f5607:<f5617:<f56%7)#
printf(&n \ 911f 911f 911f \:f1607:f1617:f16%7)#
printf(&n \ 911f 911f 911f \:f%607:f%617:f%6%7)#
printf(&n \ 911f 911f 911f \:f5607:f5617:f56%7)#
/* !Glculo del determinante */
det=f1607*f%617*f56%7>f%607*f5617*f16%7>f1617*f%6%7*f5607E
f16%7*f%617*f5607Ef%607*f1617*f56%7Ef5617*f%6%7*f1607#
/* 1esultado */
printf(&n&n -l Leterminante es = 9f:det)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/VYc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Programacin C/C++ Ferm Vil 71
Funcione-
- Prog*55
/* Prog0@@.cpp */
#include <stdio.h>
#include <math.h>
void mediageo()#
void main()
{
printf(&n Programa Principal Pue llama a una )#
printf(&n&n funci"n de nom)re mediageo)#
mediageo()#
printf(&n&n&n *e aca)" lo Pue se da)a)#
$
void mediageo()
{
float a:)#
printf(&n 2ntroduce los dos nAmeros8 &n)#
scanf(9f 9f:<a:<))#
printf(&n&n 'a ,edia JeomYtrica de 9f ? 9f es 9f:a:):sPrt(a*)))#
$
Estudio del P52&/VV#
3a sentencia 1oid mediageo()N indica al compilador' =ue el programa contiene una 9uncin
de9inida por nosotros de nom)re mediageo 6llamado tam)i+n su)rutina o su)programa8.
El programa principal 6>oid main688' llama al su)programa en la l<nea, mediageo()N
()ser>a de =u+ 9orma construimos el su)programa, 1oid mediageo() sin punto y coma' y a
continuacin' entre lla>es' las l<neas o sentencias del programa.
()ser>a tam)i+n =ue cuando se aca)a la e%ecucin del su)programa' el control pasa al programa
principal' en la l<nea siguiente a la llamada del su)programa. En nuestro caso se e%ecuta la l<nea,
!rint0(:$n$n$n Re aca* lo 8ue -e da*a;)N
- Prog*57
/* Prog0@B.cpp */
#include <stdio.h>
#include <math.h>
void suma()#
void raiR()#
void logaritmo()#
void a?uda()#
void main()
{
char c617#
Programacin C/C++ Ferm Vil 72
c617=[H[#
Xhile(c607 W= [/[)
{
printf(&n ===============================)#
printf(&n Pulsa *: para *M,01)#
printf(&n Pulsa 1: para 102d !M0L10L0)#
printf(&n Pulsa ': para '+J012/,+)#
printf(&n Pulsa 0: para 0ZML0)#
printf(&n Pulsa /: para /-1,2.01 &n)#
scanf(9s:c)#
if (c607==[*[) suma()#
if (c607==[1[) raiR()#
if (c607==['[) logaritmo()#
if (c607==[0[) a?uda()#
$
$
void suma()
{
float a:)#
printf(&n *umandos8 &n)#
scanf(9f 9f:<a:<))#
printf(&n 9f > 9f = 9f:a:):a>))#
$
void raiR()
{
float H#
printf(&n 1adicando8 &n)#
scanf(9f:<H)#
printf(&n 1aiR cuadrada de 9f = 9f:H:sPrt(H))#
$
void logaritmo()
{
float l#
printf(&n 'ogaritmo de 8 &n)#
scanf(9f:<l)#
printf(&n -l logaritmo neperiano de 9f es 9f:l:log(l))#
$
void a?uda()
{
printf(&n -s )astante tonto Pue me pidas a?uda:)#
printf(&n pero aPu( la tienes8)#
printf(&n&n&n Pulsa *: para *M,01)#
printf(&n Pulsa 1: para 102d !M0L10L0)#
printf(&n Pulsa ': para '+J012/,+)#
printf(&n Pulsa 0: para 0ZML0)#
printf(&n Pulsa /: para /-1,2.01 &n)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/V.c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Programacin C/C++ Ferm Vil 73
Funcione- 8ue retornan !ar"metro-
- Prog*57
/* Prog0@D.cpp */
#include <stdio.h>
int cuenta(char nom6%@7)#
void main()
{
int longit#
char pala)ra6%@7#
printf(&n -scri)e una pala)ra de %@ caracteres como mGHimo8 )#
scanf(9s:pala)ra)#
longit=cuenta(pala)ra)#
printf(&n&n 'ongitud de 9s = 9d:pala)ra:longit)#
$
int cuenta(char nom6%@7)
{
int i#
i=0#
Xhile(nom6i7 W= [&0[) i>>#
return i#
$
Estudio del P52&/V],
3a l<nea de programa int cuenta(cHar nomL'VM)N indica al compilador =ue adem-s del programa
principal 6>oid main8' $ay una 9uncin de nom)re cuenta()' =ue utiliEar- una >aria)le tipo -tring
con un m-Cimo de 25 caracteres y adem-s dic$o su)programa retornar- un >alor tipo int' a
di9erencia de las 9unciones anteriores =ue no retorna)an nada 6>oid8.
3a l<nea de programa, longitU cuenta(!ala*ra)N' llama al su)programa cuenta() y en nDmero
entero =ue retorna' se asigna a la >aria)le entera longit
()ser>a de =u+ 9orma contamos los caracteres ocupados por la >aria)le nom, nomTiU KP NZ*O
()ser>a =ue la >aria)le utiliEada por la 9uncin cuenta()' no tiene por=u+ ser la misma, En el
programa principal es !ala*ra y en la 9uncin es nom. 0e todas 9ormas es imprescindi)le =ue
sea del mismo tipo, en los dos casos es cHar de 'V caractere-.
El >alor retornado por la 9uncin' no tiene por=u+ corresponder a la misma >aria)le, en el
programa principal es longit y en la 9uncin es i. 0e todas 9ormas es imprescindi)le =ue sean del
mismo tipo, en los dos casos es int.
- Prog*5!
/* Prog0@F.cpp */
#include <stdio.h>
#include <math.h>
void trigon(dou)le inicial:int num:dou)le paso)#
Programacin C/C++ Ferm Vil 7L
void main()
{
int num#
dou)le ini:paso#
printf(&n Calor inicial:nAmero de valores:paso U)#
scanf(9lf 9d 9lf:<ini:<num:<paso)#
trigon(ini:num:paso)#
$
void trigon(dou)le inicial:int num:dou)le paso)
{
int i#
dou)le v:s:c#
for(i=0#i<num#i>>)
{
v=inicial>i*paso#
s=sin(v)#
c=cos(v)#
printf(&n9lf 9lf 9lf:v:s:c)#
$
$
- Estudio del P52&/V^,
3a l<nea, 1oid trigon(dou*le inicialQ int numQ dou*le !a-o)N indica al compilador =ue el
programa contiene una 9uncin 6trigon8' =ue no retorna ningDn >alor 6>oid8' pero =ue tra)a%a con
tres >aria)les, la primera y Dltima dou*le y la 2h int.
3a llamada a la 9uncin por parte del programa principal 6main8' se encuentra en la l<nea,
trigon(iniQ numQ !a-o)N
En e9ecto, ini y !a-o son >aria)les dou*le y num es int.
En la 9uncin trigon' utiliEamos los >alores entrantes, ini' num y paso y de9inimos otros, iQ 1Q -Q
c.
Vamos a 4programar5 otra 9uncin con retorno de par-metro,
- Prog*5"
/* Prog0@O.cpp */
#include <stdio.h>
int diasmes(int mes)#
void main()
{
printf(&n -nero tiene 9d d(as:diasmes(1))#
printf(&n Ke)rero tiene 9d d(as:diasmes(%))#
printf(&n ,arRo tiene 9d d(as:diasmes(5))#
printf(&n 0)ril tiene 9d d(as:diasmes(;))#
printf(&n ,a?o tiene 9d d(as:diasmes(@))#
printf(&n Sunio tiene 9d d(as:diasmes(B))#
printf(&n Sulio tiene 9d d(as:diasmes(D))#
printf(&n 0gosto tiene 9d d(as:diasmes(F))#
printf(&n *eptiem)re tiene 9d d(as:diasmes(O))#
printf(&n +ctu)re tiene 9d d(as:diasmes(10))#
printf(&n .oviem)re tiene 9d d(as:diasmes(11))#
Programacin C/C++ Ferm Vil 75
printf(&n Liciem)re tiene 9d d(as:diasmes(1%))#
printf(&n -l mes 15 tiene 9d d(as: porPue no eHiste:diasmes(15))#
$
int diasmes(int mes)
{
int dias#
sXitch(mes)
{
case %8
dias=%F#
)rea`#
case 18
case 58
case @8
case D8
case F8
case 108
case 1%8
dias=51#
)rea`#
case ;8
case B8
case O8
case 118
dias=50#
)rea`#
default8
dias=0#
)rea`#
$
return dias#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/VXc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Estudio del P52&/VX#
int diame-( int me-)N
Indicamos al compilador =ue nuestro programa contiene una 9uncin =ue necesita un >alor int
6mes8 y de>ol>er- un >alor int.
El programa principal' con la sentencia diame-(() llama a la 9uncin diame- y +sta de>uel>e el
nDmero +(.
()ser>a la estructura -eitcH, si el case 1' 3' 5' 7' !' 1* no contienen nada' se e%ecuta el siguiente
ca-e =ue s< contiene algo, en nuestro caso el ca-e ('' =ue da a la >aria)le dia- el >alor +(.
El o!erador :re-to de la di1i-in entera;
- Prog*7*
Programacin C/C++ Ferm Vil 77
/* Prog0B0.cpp */
#include <stdio.h>
void main()
{
int n:i:resto#
printf(&-scri)e un nAmero8 )# scanf(9d:<n)#
for(i=%#i<nE1#i>>)
{
resto=n 9 i#
if ((resto==0) << (n W= %))
{
printf(&n .o es primo)#
return#
$
$
printf(&n 9d es un nAmero primo:n)#
$
Estudio del P52&/./#
n P i
Hos da el resto de la di>isin entera entre n y i 6W es un operador como lo es la suma o el producto8.
Vamos a $acer el mismo programa =ue el anterior pero a tra>+s de una 9uncin, int !rimo(int num)
- Prog*71
/* Prog0B1.cpp */
#include <stdio.h>
int primo(int num)#
void main()
{
int n#
printf(&n -scri)e un nAmero8 )#scanf(9d:<n)#
if (primo(n)==1) printf(&n&n -s primo)#
else printf(&n&n .o es primo)#
$
int primo(int num)
{
int resto:i:result#
for(i=%#i<numE1#i>>)
{
resto=num 9 i#
if((resto==0) << (num W= %)) return 0#
$
return 1#
$
- Prog*72
Programacin C/C++ Ferm Vil 77
/* Prog0B%.cpp */
/* Programa Pue dado un nAmero [.[ escri)e todos los
nAmeros comprendidos entre 1 ? 10.000: Pue cumplen
las siguientes reglas8
E 'a suma de sus cifras de)e ser un divisor de .
E -l producto de sus cifras de)e ser un mAltiplo de [.[ */
#include <stdio.h>
void main()
{
int n:i:c1:c%:c5:c;:suma:producto#
printf(&n-scri)e un nAmero8 )#scanf(9d:<n)#
for (i=1#i<=OOOO#i>>)
{
c1=int(i/1000)#
c%=int((i 9 1000)/100)#
c5=int(((i 9 1000) 9 100)/10)#
c;=(((i 9 1000) 9 100) 9 10)#
suma=c1>c%>c5>c;#
producto=c1*c%*c5*c;#
if ((n 9 suma == 0) << (producto 9 n == 0) <<
(suma <= n) << (producto >= n))
{
printf(9@d:i)#
printf(&n)#
$
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/.'c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
,i*lioteca- de !rograma-
Crea' utiliEando tu editor 9a>orito un 9ic$ero de nom)re FicH//( y eCtensin c y gr-)alo como siempre en
TuCarpeta,
- Fic$**1.c
/* Kich001.c */
/* Leterminaci"n de un nAmero primo */
int primo(int num)
{
int resto:i:result#
for(i=%#i<numE1#i>>)
Programacin C/C++ Ferm Vil 7!
{
resto=num 9 i#
if ((resto==0) << (num W= %)) return 0#
$
return 1#
$
ca)amos de crear un 9ic$ero )i)lioteca de nom)re FicH//(c =ue contiene de momento una sla
9uncin' no lo e%ecutes por=ue entre otras cosas no te 9uncionar-.
- Prog*73
/* Prog0B5.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich001.c
void main()
{
int n#
printf(&n -scri)e un nAmero8 )#scanf(9d:<n)#
if (primo(n)==1) printf(&n&n -s primo)#
else printf(&n&n .o es primo)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/.+c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
()ser>a de =u+ 9orma decimos al compilador =ue utilice las 9unciones =ue tenemos en FicH//(c,
Finclude :c#$)uCar!eta$FicH//(c;
Vamos a $acer un programa =ue escri)e el listado de nDmeros primos in9eriores a uno dado 6utiliEa la
9uncin !rimo() de FicH//(c
- Prog*7L
/* Prog0B;.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich001.c
void main()
{
int n:i#
int Q:panta#
char c#
printf(&n4asta PuY nAmero Puieres la lista de nAmeros primos8 )#
scanf(9d:<n)#
printf(&n)#
c=getchar()#
printf(&n1&n)#
Q=0#panta=1#
Programacin C/C++ Ferm Vil 7"
for(i=%#i<n#i>>)
if(primo(i)==1)
{
printf(910d:i)#
Q>>#
if(Q==1B0*panta)
{
printf(&n Pulsa 61eturn7 para continuar &n)#
c=getchar()#
panta>>#
$
$
if(primo(n)==1) printf(&n910d:n)#
$
0escomposicin de un nDmero en 9actores primos 6utiliEa la 9uncin !rimo() de FicH//(c8
- Prog*75
/* Prog0B@.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich001.c
void main()
{
int n:i#
int `#
printf(&n -scri)e el nAmero a descomponer8 &n)#
scanf(9d:<n)#
for(i=%#i<n#i>>)
{
`=1#
Xhile ((primo(i)==1) << (n 9 (`*i) ==0))
{
printf(9dE:i)#
`=`*i#
$
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/.Vc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
C-lculo del m-Cimo comDn di>isor @C0 por el m+todo de Euclides.
- Prog*77
/* Prog0BB.cpp */
Programacin C/C++ Ferm Vil 7*
/* !Glculo del ,.!.L de dos nAmeros */
#include <stdio.h>
void main()
{
int H:?#
int auH#
int resto#
printf(&n -scri)e un nAmero H8 )# scanf(9d:<H)#
printf(&n -scri)e otro nAmero ?8 )# scanf(9d:<?)#
if(H<?)
{
auH=H#
H=?#
?=auH#
$
if((H 9 ?) == 0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
printf(&n -l ,.!.L es8 9d:resto)#
$
El programa anterior pero utiliEando una 9uncin
- Prog*77
/* Prog0BD.cpp */
#include <stdio.h>
int ,!L(int:int)#
void main()
{
int a:)#
int mcd#
printf(&n .Amero8 )# scanf(9d:<a)#
printf(&n .Amero8 )# scanf(9d:<))#
mcd=,!L(a:))#
printf(&n&n -l ,!L de 9d ? 9d es 9d:a:):mcd)#
$
int ,!L(int H:int ?)
{
int auH#
int resto#
if(H<?)
{
auH=H#
H=?#
?=auH#
Programacin C/C++ Ferm Vil 71
$
if((H 9 ?) == 0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
return resto#
$
partir del FicH//(c escri)e el siguiente 9ic$ero' =ue de)er-s gra)ar donde siempre
- Fic$**2.c
/* Kich00%.c */
/* Leterminaci"n de un nAmero primo */
int primo(int num)
{
int resto:i:result#
for(i=%#i<numE1#i>>)
{
resto=num 9 i#
if ((resto==0) << (num W= %)) return 0#
$
return 1#
$
/* Leterminaci"n del ,.!.L de dos nAmeros */
int ,!L(int H:int ?)
{
int auH#
int resto#
if (H<?)
{
auH=H#
H=?#
?=auH#
$
if ((H 9 ?)==0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
return resto#
$
Ho compiles el 9ic$ero anterior ya =ue se trata de un 9ic$ero )i)lioteca
Vamos a pro)ar la 9uncin MCD' =ue aca)amos de incluir en FicH//'c
Programacin C/C++ Ferm Vil 72
- Prog*7!
/* Prog0BF.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich00%.c
void main()
{
int a:)#
int mcd#
char otra617#
otra607=[s[#
Xhile (otra607==[s[)
{
printf(&n .Amero8 )# scanf(9d:<a)#
printf(&n .Amero8 )# scanf(9d:<))#
mcd=,!L(a:))#
printf(&n&n -l ,!L de 9d ? 9d es 9d:a:):mcd)#
printf(&n&n _uieres otro ,!L (s/n)U )#
scanf(9s:otra)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/.^c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Vamos a $acer el mismo programa anterior pero =ue calcule tam)i+n el m<nimo comDn mDltiplo.
- Prog*7"
/* Prog0BO.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich00%.c
void main()
{
int a:)#
int mcd#
int prod#
char otra617#
otra607=[s[#
Xhile (otra607==[s[)
{
printf(&n .Amero8 )# scanf(9d:<a)#
printf(&n .Amero8 )# scanf(9d:<))#
prod=a*)#
mcd=,!L(a:))#
printf(&n&n -l ,!L de 9d ? 9d es 9d:a:):mcd)#
printf(&n&n -l mcm de 9d ? 9d es 9d:a:):prod/mcd)#
printf(&n&n _uieres otro cGlculo (s/n)U )#
Programacin C/C++ Ferm Vil 73
scanf(9s:otra)#
$
$
Programa =ue simpli9ica una 9raccin' utiliEando la 9uncin MCD' =ue tenemos en FicH//'c
- Prog*7*
/* Prog0D0.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich00%.c
void main()
{
int a:)#
int div#
printf(&n -scri)e el numerador8 )#
scanf(9d:<a)#
printf(&n -scri)e el denominador8 )#
scanf(9d:<))#
div=,!L(a:))#
printf(&n Kracci"n simplificada8 9d / 9d:a/div:)/div)#
$
Vamos a $acer el programa anterior pero con arrays.
- Prog*71
/* Prog0D1.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich00%.c
void main()
{
int f6%7:fs6%7#
int i:div#
printf(&n -scri)e el numerador8 )#
scanf(9d:<f607)#
printf(&n -scri)e el denominador8 )#
scanf(9d:<f617)#
div=,!L(f607:f617)#
for(i=0#i<%#i>>) fs6i7=f6i7/div#
printf(&n Kracci"n simplificada8 9d / 9d:fs607:fs617)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/](c!! en TuCarpeta.
Programacin C/C++ Ferm Vil 7L
E%ecDtalo un par o tres de >eces
Vamos a $acer el mismo programa pero a tra>+s de una 9uncin, -im!li0ica
- Prog*72
/* Prog0D%.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich00%.c
void simplifica(int :int )#
void main()
{
int f617#
int i#
printf(&n -scri)e el numerador8 )#
scanf(9d:<f607)#
printf(&n -scri)e el denominador8 )#
scanf(9d:<f617)#
simplifica(f607:f617)#
$
void simplifica(int a:int ))
{
int div#
div=,!L(a:))#
printf(&n Kracci"n *implificada8 9d / 9d:a/div:)/div)#
$
partir del FicH//'c escri)e el siguiente,
- Fic$**3.c
/* Kich005.c */
/* Leterminaci"n de un nAmero primo */
int primo(int num)
{
int resto:i:result#
for(i=%#i<numE1#i>>)
{
resto=num 9 i#
if ((resto==0) << (num W= %)) return 0#
$
return 1#
$
/* Leterminaci"n del ,.!.L de dos nAmeros */
int ,!L(int H:int ?)
Programacin C/C++ Ferm Vil 75
{
int auH#
int resto#
if (H<?)
{
auH=H#
H=?#
?=auH#
$
if ((H 9 ?)==0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
return resto#
$
/* *implifica una fracci"n */
void simplifica(int a:int ))
{
int div#
div=,!L(a:))#
printf(&nKracci"n *implificada8 9d / 9d:a/div:)/div)#
$
Vamos a pro)ar la 9uncin -im!li0ica =ue tenemos en FicH//+c
- Prog*73
/* Prog0D5.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich005.c
void main()
{
int f617#
int i#
printf(&n -scri)e el numerador8 )#
scanf(9d:<f607)#
printf(&n -scri)e el denominador8 )#
scanf(9d:<f617)#
simplifica(f607:f617)#
$
Vamos a $acer un programa =ue sume dos 9racciones.
- Prog*7L
/* Prog0D;.cpp */
Programacin C/C++ Ferm Vil 77
#include <stdio.h>
#include c8&/u!arpeta&Kich005.c
void main()
{
int f16%7:f%6%7#
int mcd:num#
printf(&-scri)e la 13 fracci"n8 &n)# scanf(9d 9d:<f1607:<f1617)#
printf(&-scri)e la %3 fracci"n8 &n)# scanf(9d 9d:<f%607:<f%617)#
mcd=(f1617*f%617)/,!L(f1617:f%617)#
num=(mcd/f1617)*f1607>(mcd/f%617)*f%607#
printf(&n&n *uma de 9d/9d > 9d/9d = :f1607:f1617:f%607:f%617)#
printf( 9d / 9d:num:mcd)#
printf(&n&n)#
simplifica(num:mcd)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/]Yc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Macro-
- Prog*75
/* Prog0D@.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich005.c
#define mcm(H:?) ((H*?)/,!L(H:?))
void main()
{
int f16%7:f%6%7#
int mcd:num#
printf(&-scri)e la 13 fracci"n8 &n)# scanf(9d 9d:<f1607:<f1617)#
printf(&-scri)e la %3 fracci"n8 &n)# scanf(9d 9d:<f%607:<f%617)#
mcd=mcm(f1617:f%617)#
num=(mcd/f1617)*f1607>(mcd/f%617)*f%607#
printf(&n&n *uma de 9d/9d > 9d/9d = :f1607:f1617:f%607:f%617)#
printf( 9d / 9d:num:mcd)#
printf(&n&n)#
simplifica(num:mcd)#
$
Estudio del P52&/]V,
El programa suma dos 9unciones pero utiliEa una macro para el c-lculo del m.c.m.
Programacin C/C++ Ferm Vil 77
3a macro est- de9inida en la l<nea,
Fde0ine mcm(>Q=) ((>E=)/MCD(>Q=))
R no es m-s =ue una 9uncin' pero resumida' es decir no es necesario de9inir el tipo de >aria)les.
()ser>a =ue la macro contiene una llamada a la 9uncin MCD =ue tenemos en FicH//+c' =ue
9unciona sin ningDn pro)lema siempre y cuando tengamos en el programa la l<nea, Finclude
:c#$)uCar!eta$FicH//+c;
Escri)e a partir del FicH//+ el siguiente,
- Fic$**L.c
/* Kich00;.c */
/* Leterminaci"n de un nAmero primo */
int primo(int num)
{
int resto:i:result#
for(i=%#i<numE1#i>>)
{
resto=num 9 i#
if ((resto==0) << (num W= %)) return 0#
$
return 1#
$
/* Leterminaci"n del ,.!.L de dos nAmeros */
int ,!L(int H:int ?)
{
int auH#
int resto#
if (H<?)
{
auH=H#
H=?#
?=auH#
$
if ((H 9 ?)==0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
return resto#
$
/* *implifica una fracci"n */
void simplifica(int a:int ))
{
int div#
div=,!L(a:))#
printf(&nKracci"n *implificada8 9d / 9d:a/div:)/div)#
$
/* ,acro Pue calcula el m.c.m. */
#define mcm(H:?) ((H*?)/,!L(H:?))
Programacin C/C++ Ferm Vil 7!
Vamos a $acer el mismo programa P52&/]V' pero con la macro en el 9ic$ero FicH//Yc
- Prog*77
/* Prog0DB.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich00;.c
void main()
{
int f16%7:f%6%7#
int mcd:num#
printf(&-scri)e la 13 fracci"n8 &n)# scanf(9d 9d:<f1607:<f1617)#
printf(&-scri)e la %3 fracci"n8 &n)# scanf(9d 9d:<f%607:<f%617)#
mcd=mcm(f1617:f%617)#
num=(mcd/f1617)*f1607>(mcd/f%617)*f%607#
printf(&n&n *uma de 9d/9d > 9d/9d = :f1607:f1617:f%607:f%617)#
printf( 9d / 9d:num:mcd)#
printf(&n&n)#
simplifica(num:mcd)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/].c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Crea a partir del FicH//Yc el siguiente 9ic$ero,
- Fic$**5.c
/* Kich00@.c */
/* Leterminaci"n de un nAmero primo */
int primo(int num)
{
int resto:i:result#
for(i=%#i<numE1#i>>)
{
resto=num 9 i#
if ((resto==0) << (num W= %)) return 0#
$
return 1#
$
/* Leterminaci"n del ,.!.L de dos nAmeros */
int ,!L(int H:int ?)
{
int auH#
int resto#
if (H<?)
Programacin C/C++ Ferm Vil 7"
{
auH=H#
H=?#
?=auH#
$
if ((H 9 ?)==0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
return resto#
$
/* *implifica una fracci"n */
void simplifica(int a:int ))
{
int div#
div=,!L(a:))#
printf(&nKracci"n *implificada8 9d / 9d:a/div:)/div)#
$
/* ,acro Pue calcula el m.c.m. */
#define mcm(H:?) ((H*?)/,!L(H:?))
/* ,acro Pue calcula el numerador de la suma de dos
fracciones */
#define *umaKrac.um(n1:d1:n%:d%)
(((mcm(d1:d%)/d1)*n1>(mcm(d1:d%)/d%)*n%))
- Prog*77
/* Prog0DD.cpp */
#include <stdio.h>
#include c8&/u!arpeta&Kich00@.c
void main()
{
int f16%7:f%6%7#
int den:num#
printf(&-scri)e la 13 fracci"n8 &n)# scanf(9d 9d:<f1607:<f1617)#
printf(&-scri)e la %3 fracci"n8 &n)# scanf(9d 9d:<f%607:<f%617)#
num=*umaKrac.um(f1607:f1617:f%607:f%617)#
den=mcm(f1617:f%617)#
printf(&n&n *uma de 9d/9d > 9d/9d = :f1607:f1617:f%607:f%617)#
printf( 9d / 9d:num:den)#
printf(&n&n)#
simplifica(num:den)#
$
5ecuerda#
Programacin C/C++ Ferm Vil !*
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/]]c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Est- claro lo =ue $emos conseguido en el FicH//Vc' una )i)lioteca de 9unciones y macros =ue podemos
utiliEar en nuestros programas sin m-s =ue incluir, Finclude :c#$)uCar!etaFicH//Vc;.
.odo programador' segDn el tipo de programas =ue de)e $acer dispone de su propia *i*lioteca de
0uncione- = macro-' de todas 9ormas $ay muc$as 4)i)liotecas de 9unciones y macros5 =ue son de
dominio pD)lico y =ue puedes )a%arte de Internet.
,a-e- de numeracin
- Prog*7!
/* Prog0DF.cpp */
/* Programa Pue convierte un nAmero heHadecimal a
decimal*/
#include <stdio.h>
#include<math.h>
#include<string.h>
#include<conio.h>

float heHedec(char cadena67)#
void main()
{
char heHa6107#
float numero#

clrscr()#
printf(.umero heHadecimal (ma?Asculas)8 )#
gets(heHa)#
printf(&n!adena= 9s:heHa)#
numero=heHedec(heHa)#
printf(&n-n decimal es 8 9.0f:numero)#
$

float heHedec(char cadena67)
{
int i:Q#
char letra#
float decimal=0#
float temp#
temp=0#
i=strlen(cadena)#
/* 'a funci"n strlen: Pue se encuentra en <string.h>
devuelve la longitud de la cadena. */

for (Q=0#i>0#Q>>:iEE)
{
Programacin C/C++ Ferm Vil !1
letra=cadena6iE17#
printf(&n 'etra= 9c:letra)#
sXitch(letra){
case [1[8temp=(1*poX(1B:Q))#
)rea`#
case [%[8temp=(%*poX(1B:Q))#
)rea`#
case [5[8temp=(5*poX(1B:Q))#
)rea`#
case [;[8temp=(;*poX(1B:Q))#
)rea`#
case [@[8temp=(@*poX(1B:Q))#
)rea`#
case [B[8temp=(B*poX(1B:Q))#
)rea`#
case [D[8temp=(D*poX(1B:Q))#
)rea`#
case [F[8temp=(F*poX(1B:Q))#
)rea`#
case [O[8temp=(O*poX(1B:Q))#
)rea`#
case [0[8temp=(0*poX(1B:Q))#
)rea`#
case [0[8temp=(10*poX(1B:Q))#
)rea`#
case [N[8temp=(11*poX(1B:Q))#
)rea`#
case [![8temp=(1%*poX(1B:Q))#
)rea`#
case [L[8temp=(15*poX(1B:Q))#
)rea`#
case [-[8temp=(1;*poX(1B:Q))#
)rea`#
case [K[8temp=(1@*poX(1B:Q))#
)rea`#
$

decimal>=temp#
$
return(decimal)#
$
- Prog*7"
/* Prog0DO.cpp */
/* Kunci"n Pue cuenta las cifras en )inario de un nAmero decimal */
#include <stdio.h>
int numerocifras(int n)#
void main()
{
int n#
printf(&n-scri)e un nAmero natural8 )#scanf(9d:<n)#
printf(&n&n-l nAmero de cifras en )inario es8 9d:numerocifras(n))#
$
Programacin C/C++ Ferm Vil !2
int numerocifras(int n)
{
int i#
i=1#
Xhile (n>=%)
{
n=int(n/%)#
i=i>1#
$
return i#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/]Xc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
- Prog*!*
/* Prog0F0.cpp */
/* Programa Pue escri)e un nAmero decimal en )inario */
#include <stdio.h>
#include <conio.h>
int numerocifras(int n)#
void main()
{
int numci:n:i:cifra#
printf(&n-scri)e un nAmero natural8 )#scanf(9d:<n)#
printf(&n&n-l nAmero en )inario es8)#
numci=numerocifras(n)#
i=0#
Xhile (n>=%)
{
cifra=n9%#
gotoH?(numciEi:F)#
printf(9d:cifra)#
n=int(n/%)#
i>>#
$
gotoH?(numciEi:F)#
printf(9d:n)#
$
int numerocifras(int n)
{
int i#
i=1#
Xhile (n>=%)
{
Programacin C/C++ Ferm Vil !3
n=int(n/%)#
i=i>1#
$
return i#
$
3a 9uncin goto>=(aQ*) =ue se encuentra en el 9ic$ero conioH' sitDa el cursor en la columna a' 9ila *. 0e
9orma =ue si escri)imos,
goto>=(+QX)N!rint0(:Oola;)N
aparecer- en la columna 3' 9ila " la pala)ra Oola.
- Prog*!1
/* Prog0F1.cpp */
/* Programa Pue escri)e un nAmero decimal en )ase 5 */
#include <stdio.h>
#include <conio.h>
int numerocifras(int n)#
void main()
{
int numci:n:i:cifra#
printf(&n-scri)e un nAmero natural8 )#scanf(9d:<n)#
// printf(&n&n-l nAmero en )ase 5 es8)#
numci=numerocifras(n)#
i=0#
Xhile (n>=5)
{
cifra=n95#
gotoH?(numciEi:F)#
printf(9d:cifra)#
n=int(n/5)#
i>>#
$
gotoH?(numciEi:F)#
printf(9d:n)#
$
int numerocifras(int n)
{
int i#
i=1#
Xhile (n>=5)
{
n=int(n/5)#
i=i>1#
$
return i#
$
- Prog*!2
Programacin C/C++ Ferm Vil !L
/* Prog0F%.cpp */
/* Programa Pue escri)e un nAmero decimal en )ase ; */
#include <stdio.h>
#include <conio.h>
int numerocifras(int n)#
void main()
{
int numci:n:i:cifra#
printf(&n-scri)e un nAmero natural8 )#scanf(9d:<n)#
printf(&n&n-l nAmero en )ase ; es8)#
numci=numerocifras(n)#
i=0#
Xhile (n>=;)
{
cifra=n9;#
gotoH?(numciEi:F)#
printf(9d:cifra)#
n=int(n/;)#
i>>#
$
gotoH?(numciEi:F)#
printf(9d:n)#
$
int numerocifras(int n)
{
int i#
i=1#
Xhile (n>=;)
{
n=int(n/;)#
i=i>1#
$
return i#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/^'c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Co!rimo-
0os nDmeros enteros se dicen co!rimo- si y slo si el MCD entre ellos es 1. Por e%emplo, m.c.d617'"18
P 1 luego 17 y "1 son coprimos
Programacin C/C++ Ferm Vil !5
- Prog*!3
/* Prog0F5.cpp */
/* Leterminar los dos [int[ mGs grandes Pue
sean [coprimos[ */
#include <stdio.h>
#include <values.h>
int ,!L(int H:int ?)#
void main()
{
int maH:num1:num%#
int i=1#
maH=,0I2./#
Xhile (,!L(maH:,0I2./Ei) W= 1) i>>#
num1=,0I2./#
num%=,0I2./Ei#
printf(&n 'os % nAmeros ma?ores coprimos tipo [int[ son 9d ?
9d:num1:num%)#
printf(&n&n ! + , P 1 + N 0 ! 2 + .8)#
printf(&n,GHimo 2./= 9d:,0I2./)#
printf(&n&n,!L de 9d ? 9d es 9d:num1:num%:,!L(num1:num%))#
$
int ,!L(int H:int ?)
{
int auH:resto#
if (H<?)
{
auH=H#
H=?#
?=auH#
$
if ((H 9 ?)==0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
return resto#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/^+c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
- Prog*!L
/* Prog0F;.cpp */
Programacin C/C++ Ferm Vil !7
/* ,atriR tal Pue 0iQ=1 si i:Q son coprimos
0iQ=0 si i:Q no son coprimos */
#include <stdio.h>
int ,!L(int H:int ?)#
void main()
{
int n# int i:Q#
int matr6%076%07#
printf(&n+rden de la matriR8 )# scanf(9d:<n)#
printf(&n&n)#
for(i=0#i<n#i>>)
{
for(Q=0#Q<n#Q>>)
{
if(,!L(i>1:Q>1)==1)
matr6i76Q7=1#
else
matr6i76Q7=0#
printf(9d :matr6i76Q7)#
$#
printf(&n)#
$
$
int ,!L(int H:int ?)
{
int auH:resto#
if (H<?)
{
auH=H#
H=?#
?=auH#
$
if ((H 9 ?)==0) resto=?#
Xhile ((H 9 ?) W= 0)
{
resto=HE?*(H/?)#
H=?#
?=resto#
$
return resto#
$
Programacin C/C++ Ferm Vil !7
4A)2EV43A4CI@N +
18 VaE un programa =ue calcule el producto >ectorial de 2 >ectores del espacio.
2ra)a el programa con el nom)re EV43+4.
28 VaE un programa =ue calcule el mdulo de un >ector en el espacio' utiliEando una 9uncin con
retorno de par-metro 6gu<ate por el P52&/V]8
2ra)a el programa con el nom)re EV43+,.
38 VaE un programa =ue calcule el -rea de un tri-ngulo en el espacio' dadas las coordenadas de los 3
>+rtices 6utiliEa la 9uncin del programa EV43+,8
2ra)a el programa con el nom)re EV43+C.
L8 VaE un programa =ue 9uncione de la siguiente 9orma,
- El programa nos pide 1* >alores 6serie estad<stica8.
- El programa calcula la media aritm+tica 69uncin con retorno de par-metro8.
- El programa calcula las des>iaciones respecto a la media.
- El programa calcula la des>iacin media 6llamada a la misma 9uncin de antes8.
- El programa calcula la des>iacin t<pica 6llamada a la misma 9uncin de antes8
2ra)a el programa con el nom)re EV43+D
58 Escri)e el siguiente programa,
/E e1al+e E/
Finclude G-tdioHI
Finclude GmatHHI
0loat modul(0loat 1L+M)N
1oid main()
J
int iN
0loat aL+MQ*L+MQcL+MN
0loat 1(L+MQ1'L+MN
0loat !ro1ectL+MN
Programacin C/C++ Ferm Vil !!
0loat moduQareaN
!rint0(Z$n Introduce la- coordenada- del !unto 4# $nZ)N
0or(iU/NiG'Ni++) -can0(ZP0ZQTaLiM)N
aL'MU/N
!rint0(Z$n Introduce la- coordenada- del !unto ,# $nZ)N
0or(iU/NiG'Ni++) -can0(ZP0ZQT*LiM)N
*L'MU/N
!rint0(Z$n Introduce la- coordenada- del !unto C# $nZ)N
0or(iU/NiG'Ni++) -can0(ZP0ZQTcLiM)N
cL'MU/N
!rint0(Z$n$n Punto 4 U (P0QP0QP0)ZQaL/MQaL(MQaL'M)N
!rint0(Z$n$n Punto , U (P0QP0QP0)ZQ*L/MQ*L(MQ*L'M)N
!rint0(Z$n$n Punto C U (P0QP0QP0)ZQcL/MQcL(MQcL'M)N
0or(iU/NiG+Ni++)
J
1(LiMU*LiM_aLiMN
1'LiMUcLiM_aLiMN
K
!rint0(Z$n$n Vector 4, U (P0QP0QP0)ZQ1(L/MQ1(L(MQ1(L'M)N
!rint0(Z$n$n Vector 4C U (P0QP0QP0)ZQ1'L/MQ1'L(MQ1'L'M)N
!ro1ectL/MU1(L(ME1'L'M_1'L(ME1(L'MN
!ro1ectL(MU1'L/ME1(L'M_1(L/ME1'L'MN
!ro1ectL'MU1(L/ME1'L(M_1'L/ME1(L(MN
!rint0(Z$n$n Producto Vectorial 4,h4C U (P0QP0QP0)ZQ!ro1ectL/MQ!ro1ectL(MQ!ro1ectL'M)N
moduUmodul(!ro1ect)N
!rint0(Z$n$n$n Mdulo del !roducto Vectorial U P0 ZQmodu)N
areaU/VEmoduN
!rint0(Z$n$n [rea del triangulo U P0ZQarea)N
K
0loat modul(0loat 1L+M)
J
0loat moduN
moduU-8rt(1L/ME1L/M+1L(ME1L(M+1L'ME1L'M)N
return moduN
K
- 2r-)alo con el nom)re EV43+E
- E%ecDtalo >arias >eces.
- ECplica =u+ es lo =ue $ace. Comp-ralo con el EV43+C.
78 VaE un programa de nom)re EV43+F =ue sir>a para ele>ar al cu)o un nDmero' pero utiliEando una
9uncin.
78 VaE un programa de nom)re EV43+& =ue $aga lo mismo =ue el anterior pero no a tra>+s de una
9uncin sino de una macro.
!8 VaE un programa de nom)re EV43+O =ue trans9orme un nDmero en )ase 1* a )ase L y 5
Programacin C/C++ Ferm Vil !"
"8 VaE un programa de nom)re EV43+I =ue $aga lo mismo =ue el EV43+4 pero utiliEa la 9uncin
goto>= para =ue la salida por pantalla sea m-s est+tica.
1*8 VaE un programa de nom)re EV43+% =ue construya el tri-ngulo de )artaglia o de Pa-cal.
Programacin C/C++ Ferm Vil "*
IV_ Puntero- = 4rra=-
a) Con-tante- Rim*lica-
- Prog*!5
/* Prog0F@ */
#include <stdio.h>
#include <math.h>
void sencos(float inicial:float paso)#
void main()
{
float inicial:paso#
printf(&n Calor inicial ? incremento U&n)#
scanf(9f 9f:<inicial:<paso)#
sencos(inicial:paso)#
$
void sencos(float inicial:float paso)
{
int i#
dou)le v6@07:s6@07:c6@07#
for(i=0#i<@0#i>>)
{
v6i7=(dou)le)(inicial>i*paso)#
s6i7=sin(v6i7)#
c6i7=cos(v6i7)#
$
for(i=0#i<@0#i>>) printf(&n910lf 910lf 910lf:v6i7:s6i7:c6i7)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/^Vc!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Estudio del P52&/^V#
Es importante =ue tengas el P52&/V^ a la >ista' para poder compararlo con el P52&/^V
En el P:(2*5! el nDmero de >alores de la ta)la de senos y cosenos correspond<a a una
>aria)le 6num8' en nuestro caso 6P:(2*!58 el nDmero de >alores es 9i%o, 5*.
En el P:(2*5! las >aria)les inicial y !a-o eran dou*le' encam)io en el P:(2*!5 las
declaramos 0loat.
El argumento de las 9unciones sin68 y cos68 69unciones =ue $ay en la li)rer<a mat$.$8 de)e
ser dou)le. Por esta raEn en el P:(2*!5 $emos de trans9ormar el argumento =ue es 9loat a
dou)le. R esto lo conseguimos de la siguiente 9orma, 1LiMU(dou*le)(inicial+iE!a-o)N Es
decir' )asta escri)ir dou)le entre parentesis antes de la eCpresin =ue es 9loat' tam)i+n entre
par+ntesis, 6inicial&iYpaso8
Programacin C/C++ Ferm Vil "1
En el P:(2*5! las >aria)les >' s' c son simples' encam)io en el P:(2*!5 utiliEamos
arrays, >T5*U' sT5*U y cT5*U
Hos gustar<a modi9icar el P:(2*!5 de 9orma =ue en lugar de 5* >alores' sea otro nDmero' pero =ue esta
modi9icacin sea 9-cil de $acer, >amos a utiliEar las llamadas con-tante- -im*lica-g
Escri)e' a partir del P:(2*!5' el siguiente programa,
- Prog*!7
/* Prog0FB.cpp */
#include <stdio.h>
#include <math.h>
#define tam @0
void sencos(float inicial:float paso)#
void main()
{
float inicial:paso#
printf(&n Calor inicial ? incremento U&n)#
scanf(9f 9f:<inicial:<paso)#
sencos(inicial:paso)#
$
void sencos(float inicial:float paso)
{
int i#
dou)le v6tam7:s6tam7:c6tam7#
for(i=0#i<tam#i>>)
{
v6i7=(dou)le)(inicial>i*paso)#
s6i7=sin(v6i7)#
c6i7=cos(v6i7)#
$
for(i=0#i<tam#i>>) printf(&n910lf 910lf 910lf:v6i7:s6i7:c6i7)#
$
Estudio del P52&/^.,
Fde0ine tam V/' de9inimos una con-tante -im*lica de nom)re tam y >alor igual a V/. En
el resto del programa' donde aparece tam' el compilador entiende V/.
3a utilidad de una constante sim)lica est- en =ue )asta cam)iar el nDmero V/' =ue $ay al
9inal de la l<nea de0ine' por el nDmero =ue =ueramos' para =ue el programa 9uncione
eCactamente igual pero con un >alor de tam igual al nue>o >alor introducido. Pru+)alo.
Programacin C/C++ Ferm Vil "2
*) 3a 0uncin rand()
- Prog*!7
/* Prog0FD.cpp */
#include <stdio.h>
#include <stdli).h>
#define num %0
void main()
{
int vect6num7#
int i#
char nada617#
printf(&n 'istado de nAmeros aleatorios entre 0 ? O &n)#
for(i=0#i<num#i>>)
{
vect6i7=rand() 9 10#
printf(&n 9d:vect6i7)#
$
printf(&n&n !ontinuo (s/n) U )# scanf(9s:<nada)#
if (nada607==[n[) return#
printf(&n 'istado de nAmeros aleatorios entre 0 ? 10 &n)#
for(i=0#i<num#i>>)
{
vect6i7=rand() 9 11#
printf(&n 9d:vect6i7)#
$
printf(&n&n !ontinuo (s/n) U )# scanf(9s:<nada)#
if (nada607==[n[) return#
printf(&n 'istado de nAmeros aleatorios entre 0 ? OO &n)#
for(i=0#i<num#i>>)
{
vect6i7=rand() 9 100#
printf(&n 9d:vect6i7)#
$
printf(&n&n !ontinuo (s/n) U )# scanf(9s:<nada)#
if (nada607==[n[) return#
printf(&n 'istado de nAmeros aleatorios entre 1 ? B &n)#
for(i=0#i<num#i>>)
{
vect6i7=(rand() 9 B)>1#
printf(&n 9d:vect6i7)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/^]c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Programacin C/C++ Ferm Vil "3
Estudio del P52&/^]#
En este programa utiliEamos una nue>a 9uncin, rand(). 0ic$a 9uncin se encuentra en la
)i)lioteca -tdli*H' por esta raEn necesitamos escri)ir la l<nea, Finclude G-tdli*HI
Funcionamiento de la 9uncin rand()#
rand68 W 1*, determina un nDmero aleatorio entre * y " 6incluidos los dos8,
rand68 W 11, 4 4 4 4 * y 1* 4
rand68 W 1**, , 4 4 4 4 * y "" 4
6rand68 W 78&1, 4 4 4 1 y 7 4
En realidad la 9uncin rand() genera nDmeros pseudoaleatorios' es decir cada >eE =ue
e%ecutemos el programa' la sucesin de nDmeros 4rand5 ser- la misma.
#i necesitamos 4series de rand()5 distintas' )asta anteponer una l<nea de contenido
-rand(-emilla)' 9uncin =ue tam)i+n est- en -tdli*H' con 4semilla5 un nDmero entero. Es
decir si escri)imos -rand(() la serie de nDmeros 4rand5 ser- distinta si escri)imos -rand(').
0ic$o de otra 9orma, segDn el >alor de 4semilla5 o)tendremos una serie de nDmeros
pseudoaleatorios u otra.
Vamos a $acer un programa =ue ordene un listado de 2* nDmeros.
- Prog*!!
/* Prog0FF.cpp */
#include <stdio.h>
#include <stdli).h>
void main()
{
int vect6%07#
int i:Q#
int auH#
char nada617#
printf(&n 'istado de nAmeros entre 0 ? 100 &n)#
for(i=0#i<%0#i>>)
{
vect6i7=rand() 9 100#
printf(&n -l nAmero 9d es 9d:i:vect6i7)#
$
printf(&n&n !ontinuo (s/n) U )# scanf(9s:<nada)#
if (nada607==[n[) return#
printf(&n Camos a ordenar los nAmeros)#
for(i=0#i<%0#i>>)
{
printf(&n Leterminando el nAmero Pue de)e ocupar el lugar
9d:i)#
for(Q=i>1#Q<%0#Q>>)
{
printf(.)#
if(vect6Q7<vect6i7)
Programacin C/C++ Ferm Vil "L
{
auH=vect6Q7#
vect6Q7=vect6i7#
vect6i7=auH#
$
$
$
printf(&n&n !ontinuo (s/n) U )# scanf(9s:<nada)#
if (nada607==[n[) return#
printf(&n&n 'a lista ordenada es8 &n&n)#
for(i=0#i<%0#i>>) printf(-l nAmero 9d es 9d &n:i:vect6i7)#
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/^^c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
Estudio del P52&/^^#
El pro)lema central es, 4dadas 2 >aria)les >ectT%U' >ectTiU cmo intercam)iamos sus
>alores5. Es decir' nos interesa asignar a >ectT%U el >alor de >ectTiU y >ice>ersa.
()ser>a la solucin,
aux=vect[j];
vect[j]=vect[i];
vect[i]=aux;
siendo au> una >aria)le auCiliar =ue $ace de puente.
Est- claro =ue con,
if(vect[j]<vect[i])
{
aux=vect[j];
vect[j]=vect[i];
vect[i]=aux;
}
Conseguimos colocar los nDmeros menores delante. En de9initi>a' lo =ue conseguimos es
ordenar los >alores del array 1ectL'/M
- Prog*!"
/* Prog0FO.cpp */
/* Programa8 ,ultiplicaciones
-l programa nos pide [T!uGntas multiplicacionesU[ Pueremos
-l programa nos las pregunta aleatoriamente.
0l final: el programa nos da la nota. */
#include <conio.h>
#include <stdio.h>
#include <stdli).h>
void main()
{
int n:a:):result#
Programacin C/C++ Ferm Vil "5
int i#
int )ien:mal#
)ien=0#mal=0#
printf(&nT!uGntas ,ultiplicacionesU )#scanf(9d:<n)#
for (i=1#i<=n#i>>)
{
clrscr()#
a=rand() 9 10#
)=rand() 9 10#
printf(9d H 9d = :a:))#scanf(9d:<result)#
if (result==a*))
{
printf(&n ,MZ N2-.)#
)ien=)ien>1#
printf(&n&nPulsa una tecla para continuar ...)#
getche()#
clrscr()#
$
else
{
printf(&n .+ -* !+11-!/+ )#
printf(&n 9d H 9d = 9d :a:):a*))#
mal=mal>1#
printf(&n&n Pulsa una tecla para continuar ...)#
getche()#
clrscr()#
$#
$
clrscr()#
printf(&n Nien = 9d ,al = 9d:)ien:mal)#
printf(&n&n .+/0 = 9d:int()ien*10/n))#
$
c) 4rra=- Multidimen-ionale-
Vasta a$ora los arrays =ue $emos utiliEado eran de una dimensin' >amos a >er a$ora un array
)idimensional 6ta)la de do)le entrada8.
- Prog*"*
/* Prog0O0.cpp */
#include <stdio.h>
#include <stdli).h>
void main()
{
int matriR6%076@7#
int i:Q#
int auH#
Programacin C/C++ Ferm Vil "7
char nada617#
printf(Camos a generar un listado de notas &n&n)#
for(i=0#i<%0#i>>)
{
printf(&n Kila 95d8 :i)#
for(Q=1#Q<@#Q>>)
{
matriR6i76Q7=rand() 9 10#
printf(9d:matriR6i76Q7)#
printf( )#
$
$
printf(&n&n !ontinuo (s/n) U )# scanf(9s:<nada)#
if (nada607==[n[) return#
printf(&n&n Camos a calcular la media &n&n)#
for(i=0#i<%0#i>>)
{
printf(&n 'a media de la fila 9%d es8 :i)#
auH=0#
for(Q=1#Q<@#Q>>) auH=auH>matriR6i76Q7#
matriR6i7607=auH/;#
printf(9@d:matriR6i7607)#
$
$
Estudio del P52&/X/#
El programa utiliEa un arra= )idimensional 6matriET2*UT5U8 de 2* 9ilas y 5 columnas' =ue
simula las notas de 2* alumnos en L asignaturas. En la columna * del array' el programa
coloca la media de las notas.
()ser>a la l<nea, matriiLiML/MUau>/YN
3a di>isin entre nDmeros enteros 6auC y L8' se trunca autom-ticamente para =ue sea otro
entero 6matriETiUT*U8
- Prog*"1
/* Prog0O1.cpp */
#include <stdio.h>
void main()
{
int m16%76%7#
int m%6%76%7#
int prod6%76%7#
int i:Q#
int auH#
/* 2ntroducci"n de las matrices */
printf(&n Primera matriR &n)#
for(i=0#i<%#i>>)
{
printf(&n -scri)e los elementos de la fila 9d8&n:i>1)#
for(Q=0#Q<%#Q>>) scanf(9d:<m16i76Q7)#
$
Programacin C/C++ Ferm Vil "7
printf(&n *egunda matriR &n)#
for(i=0#i<%#i>>)
{
printf(&n -scri)e los elementos de la fila 9d8&n:i>1)#
for(Q=0#Q<%#Q>>) scanf(9d:<m%6i76Q7)#
$
/* -scritura de las dos matrices */
printf(&n&n /enemos8 &n&n)#
for(i=0#i<%#i>>)
{
printf( \ )#
for(Q=0#Q<%#Q>>)
{
printf(95d:m16i76Q7)#
$
printf( \ \ )#
for(Q=0#Q<%#Q>>)
{
printf(95d:m%6i76Q7)#
$
printf( \ &n)#
$
/* !Glculo del producto */
prod607607=m1607607*m%607607>m1607617*m%617607#
prod617607=m1617607*m%607607>m1617617*m%617607#
prod607617=m1607607*m%607617>m1607617*m%617617#
prod617617=m1617607*m%607617>m1617617*m%617617#
/* -scritura del resultado */
printf(&n&n -l producto de las dos matrices es8 &n)#
for(i=0#i<%#i>>)
{
printf( \ )#
for(Q=0#Q<%#Q>>)
{
printf(9@d:prod6i76Q7)#
$
printf( \ &n)#
$
$
5ecuerda#
Escri)e el programa anterior utiliEando tu compilador.
2r-)alo con el nom)re Prog/X(c!! en TuCarpeta.
E%ecDtalo un par o tres de >eces
- Prog*"2
/* Prog0O%.cpp */
/* Programa Pue lee un sistema de 5 ecuaciones con 5 inc"gnitas
? escri)e la matriR ampliada */
#include <stdio.h>
Programacin C/C++ Ferm Vil "!
void main()
{
float a6576;7#
int Q#
/* 2ntroducci"n de datos */
printf(&n Primera ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a607657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6076Q7)#
$
printf(&n)#
printf(&n *egunda ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a617657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6176Q7)#
$
printf(&n)#
printf(&n /ercera ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a6%7657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6%76Q7)#
$
printf(&n)#
/* -scritura de la matriR ampliada */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
Programacin C/C++ Ferm Vil ""
$
- Prog*"3
/* Prog0O5.cpp */
/* Programa Pue lee un sistema de 5 ecuaciones con 5 inc"gnitas
? resuelve el sistema por el mYtodo de J0M**
*upongo la eHistencia de coeficientes distintos de cero
en las inc"gnitas
*upongo tam)iYn Pue el sistema es !ompati)le Leterminado. */
#include <stdio.h>
void main()
{
float a6576;7#
int Q:i:`#
float )#
float H657:auH6576;7#
/* 2ntroducci"n de datos */
printf(&n Primera ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a607657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6076Q7)#
$
printf(&n)#
printf(&n *egunda ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a617657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6176Q7)#
$
printf(&n)#
printf(&n /ercera ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a6%7657)#
)rea`#
$#
Programacin C/C++ Ferm Vil 1**
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6%76Q7)#
$
printf(&n)#
/* -scritura de la matriR ampliada */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
/* ,Ytodo de J0M**8 hemos de conseguir una matriR
triangular superior. */
for (i=0#i<=%#i>>)
{
)=a6i76i7#
// +)serva Pue esto? suponiendo a6i76i7 distinto de 0
for (Q=i#Q<=5#Q>>) a6i76Q7=a6i76Q7/)#
for (Q=i>1#Q<=%#Q>>)
{
)=a6Q76i7#
for (`=i>1#`<=5#`>>) a6Q76`7=a6Q76`7Ea6i76`7*)#
$
$
for (`=0#`<=%#`>>)
{
i=%E`#
)=0#
for (Q=i>1#Q<=%#Q>>) )=)>a6i76Q7*H6Q7#
H6i7=a6i7657E)#
$
a617607=0#
a6%7607=0#
a6%7617=0#
/* -scri)e la matriR resultante: +)serva Pue es
triangular superior. */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
Programacin C/C++ Ferm Vil 1*1
printf(&n&nI1= 9f I%= 9f I5= 9f :H607:H617:H6%7)#
$
Prue)a el !rog/X+ para los sistemas,
3C &2y S5E P -!
-2C SLy &E P -7
5C SLy &2E P 3
#i todo 9unciona correctamente nos sale, CP 1 d yP2 d EP3
*C S5y &3E P-25
3C &*y S5E P 22
2C S7y &*E P -17
En este caso no 9uncionar- por=ue aT*UT*UP *
1C &2y &3E P L
2C &5y &3E P 7
2C &Ly &5E P 3
#olucin, CP-37 d yP13 d EP5
- Prog*"L
/* Prog0O;.cpp */
/* Programa Pue lee un sistema de 5 ecuaciones con 5 inc"gnitas
? resuelve el sistema por el mYtodo de J0M** */
#include <stdio.h>
void main()
{
float a6576;7#
int Q:i:`#
float ):auH#
float H657#
/* 2ntroducci"n de datos */
printf(&n Primera ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a607657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6076Q7)#
$
printf(&n)#
printf(&n *egunda ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
Programacin C/C++ Ferm Vil 1*2
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a617657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6176Q7)#
$
printf(&n)#
printf(&n /ercera ecuaci"n&n )#
for (Q=0#Q<=5#Q>>)
{
if (Q==5)
{
printf(&t/Yrmino independiente8 &t)#
scanf(9f:<a6%7657)#
)rea`#
$#
printf(&t!oeficiente de H9d8 &t:Q>1)#
scanf(9f:<a6%76Q7)#
$
printf(&n)#
/* -scritura de la matriR ampliada */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
/* ,Ytodo de J0M**8 hemos de conseguir una matriR
triangular superior. */
for (i=0#i<=%#i>>)
{
if (a6i76i7==0)
{
Q=i>1#
Xhile (a6Q76i7==0) Q=Q>1#
if (Q==5)
{
printf(&n -* M. *2*/-,0 2.!+,P0/2N'-)#
return#
$
for (`=0#`<=5#`>>)
{
auH=a6i76`7#
a6i76`7=a6Q76`7#
a6Q76`7=auH#
$
$#
)=a6i76i7#
Programacin C/C++ Ferm Vil 1*3
for (Q=i#Q<=5#Q>>) a6i76Q7=a6i76Q7/)#
for (Q=i>1#Q<=%#Q>>)
{
)=a6Q76i7#
for (`=i>1#`<=5#`>>) a6Q76`7=a6Q76`7Ea6i76`7*)#
$
$
for (`=0#`<=%#`>>)
{
i=%E`#
)=0#
for (Q=i>1#Q<=%#Q>>) )=)>a6i76Q7*H6Q7#
H6i7=a6i7657E)#
$
a617607=0#
a6%7607=0#
a6%7617=0#
/* -scri)e la matriR resultante: +)serva Pue es
triangular superior. */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=5#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
printf(&n&nI1= 9f I%= 9f I5= 9f :H607:H617:H6%7)#
$
Prue)a el !rog/XY para los sistemas,
3C &2y S5E P -!
-2C SLy &E P -7
5C SLy &2E P 3
#i todo 9unciona correctamente nos sale, CP 1 d yP2 d EP3
*C S5y &3E P-25
3C &*y S5E P 22
2C S7y &*E P -17
#olucin, CP-1 d yP2 d EP -5
1C &2y &3E P L
2C &5y &3E P 7
2C &Ly &5E P 3
#olucin, CP-37 d yP13 d EP5
C & y & E P 3
Programacin C/C++ Ferm Vil 1*L
2C S5y SE P 5
3C SLy &*E P !
Es compati)le indeterminado' una de CP2 d yP-*'5 d EP 1'5
C &y &E P 2
C Sy &E P -3
2C &*y &2E P 1
Es un sistema incompati)le.
- Prog*"5
/* Prog0O@.cpp */
/* Programa Pue transforma una matriR en otra
ePuivalente: pero triangular superior: por
el mYtodo de J0M** */
#include <stdio.h>
void main()
{
float a657657#
int Q:i:`#
float ):auH#
/* 2ntroducci"n de datos */
printf(&n Primera fila de la matriR&n )#
for (Q=0#Q<=%#Q>>)
{
printf(&t!olumna 9d8 &t:Q>1)#
scanf(9f:<a6076Q7)#
$
printf(&n)#
printf(&n *egunda fila de la matriR&n )#
for (Q=0#Q<=%#Q>>)
{
printf(&t!olumna 9d8 &t:Q>1)#
scanf(9f:<a6176Q7)#
$
printf(&n)#
printf(&n /ercera fila de la matriR&n )#
for (Q=0#Q<=%#Q>>)
{
printf(&t!olumna 9d8 &t:Q>1)#
scanf(9f:<a6%76Q7)#
$
printf(&n)#
/* -scritura de la matriR */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
Programacin C/C++ Ferm Vil 1*5
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
/* ,Ytodo de J0M**8 hemos de conseguir una matriR
triangular superior. */
for (i=0#i<=%#i>>)
{
if (a6i76i7==0)
{
Q=i>1#
Xhile (a6Q76i7==0) Q=Q>1#
if (Q==%)
{
printf(&n.o sY hacerlo porPue ha? muchos ceros)#
return#
$
for (`=0#`<=%#`>>)
{
auH=a6i76`7#
a6i76`7=a6Q76`7#
a6Q76`7=auH#
$
$#
)=a6i76i7#
for (Q=i>1#Q<=%#Q>>)
{
)=a6Q76i7/a6i76i7#
for (`=i>1#`<=%#`>>) a6Q76`7=a6Q76`7Ea6i76`7*)#
$
$
a617607=0#
a6%7607=0#
a6%7617=0#
/* -scri)e la matriR triangular superior */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
$
@atem-ticamente no es del todo correcto' ya =ue en el caso aTiUTiUP*' permutamos las 9ilas de la matriE
Pru+)alo para la matriE de las incgnitas de los sistemas del programa anterior.
Programacin C/C++ Ferm Vil 1*7
- Prog*"7
/* Prog0OB.cpp */
/* Programa Pue calcula el determinante
por el mYtodo de J0M** */
#include <stdio.h>
void main()
{
float a657657#
int Q:i:`#
float ):auH:deter#
deter=1#
/* 2ntroducci"n de datos */
printf(&n Primera fila de la matriR&n )#
for (Q=0#Q<=%#Q>>)
{
printf(&t!olumna 9d8 &t:Q>1)#
scanf(9f:<a6076Q7)#
$
printf(&n)#
printf(&n *egunda fila de la matriR&n )#
for (Q=0#Q<=%#Q>>)
{
printf(&t!olumna 9d8 &t:Q>1)#
scanf(9f:<a6176Q7)#
$
printf(&n)#
printf(&n /ercera fila de la matriR&n )#
for (Q=0#Q<=%#Q>>)
{
printf(&t!olumna 9d8 &t:Q>1)#
scanf(9f:<a6%76Q7)#
$
printf(&n)#
/* -scritura del determinante */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
/* ,Ytodo de J0M**8 hemos de conseguir un determinante
triangular superior. */
for (i=0#i<=%#i>>)
{
if (a6i76i7==0)
{
Q=i>1#
deter=E1#
Programacin C/C++ Ferm Vil 1*7
Xhile (a6Q76i7==0) Q=Q>1#
if (Q==%)
{
printf(&n.o sY hacerlo porPue ha? muchos ceros)#
return#
$
for (`=0#`<=%#`>>)
{
auH=a6i76`7#
a6i76`7=a6Q76`7#
a6Q76`7=auH#
$
$#
)=a6i76i7#
for (Q=i>1#Q<=%#Q>>)
{
)=a6Q76i7/a6i76i7#
for (`=i>1#`<=%#`>>) a6Q76`7=a6Q76`7Ea6i76`7*)#
$
$
a617607=0#
a6%7607=0#
a6%7617=0#
/* -scri)e la matriR triangular superior */
printf(&n&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6076Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6176Q7)#
printf(&n)#
printf( \)#
for (Q=0#Q<=%#Q>>) printf(&t9D.%f:a6%76Q7)#
printf(&n)#
deter=deter*a607607*a617617*a6%76%7#
printf(&n-l determinante es 9f:deter)#
$
Prue)a els programa para los determinantes,
3 2 -5
-2 -L 1
5 -L 2
#olucin, -13L
* -5 3
3 * -5
2 -7 *
Programacin C/C++ Ferm Vil 1*!
#olucin, -13
1 2 3
2 5 3
2 L 5
#olucin, -1
1 1 1
2 -5 -1
3 -L *
#olucin, *
1 1 1
1 -1 1
2 * 2
#olucin, *
- Prog*"7
/* Prog0OD.cpp */
/* Programa Pue calcula un determinante
de orden [n[ (n<=10) */
#include <stdio.h>
void main()
{
float a61076107#
int Q:i:`:n:s#
float ):auH:deter#
deter=1#
printf(&n!Glculo de un determinante de orden U )#
scanf(9d:<n)#
s=1#
/* 2ntroducci"n de datos */
Xhile (s<=n)
{
printf(&n Kila 9d del determinante&n :s)#
for (Q=0#Q<=nE1#Q>>)
{
printf(&t!olumna 9d8 &t:Q>1)#
scanf(9f:<a6sE176Q7)#
$
printf(&n)#
s>>#
$#
/* -scritura del determinante */
printf(&n&n)#
for (s=0#s<=nE1#s>>)
{
printf( \)#
for (Q=0#Q<=nE1#Q>>) printf(&t9D.%f:a6s76Q7)#
Programacin C/C++ Ferm Vil 1*"
printf(&n)#
$
/* ,Ytodo de J0M**8 hemos de conseguir un determinante
triangular superior. */
for (i=0#i<=nE1#i>>)
{
if (a6i76i7==0)
{
Q=i>1#
deter=E1#
Xhile (a6Q76i7==0) Q=Q>1#
if (Q==nE1)
{
printf(&n.o sY hacerlo porPue ha? muchos ceros)#
return#
$
for (`=0#`<=nE1#`>>)
{
auH=a6i76`7#
a6i76`7=a6Q76`7#
a6Q76`7=auH#
$
$#
)=a6i76i7#
for (Q=i>1#Q<=nE1#Q>>)
{
)=a6Q76i7/a6i76i7#
for (`=i>1#`<=nE1#`>>) a6Q76`7=a6Q76`7Ea6i76`7*)#
$
$
for (i=1#i<=nE1#i>>)
{
for (`=0#`<=nE1#`>>)
{
Q=iE1E`#
a6i76Q7=0#
$#
$
/* -scri)e la matriR triangular superior */
printf(&n&n)#
for (s=0#s<=nE1#s>>)
{
printf( \)#
for (Q=0#Q<=nE1#Q>>) printf(&t9D.%f:a6s76Q7)#
printf(&n)#
$
for (i=0#i<=nE1#i>>) deter=deter*a6i76i7#
printf(&n-l determinante es 9f:deter)#
Programacin C/C++ Ferm Vil 11*
$
Pru+)alo para los determinantes,
5 2 -3 5
-1 1 2 7
1 * -1 7
3 1 * !
#olucin, -112
-3 * 1 3
2 -1 2 -2
1 2 3 L
-1 5 -L 5
#olucin, -31
* -1 * -1 *
1 2 * -1 1
2 1 -3 -2 2
-1 1 3 2 3
5 1 L -3 L
#olucin, 1!3
d) Direccione- de Memoria
Imaginemos =ue la memoria del ordenador es como una 9ila de casillas en las =ue podemos almacenar
datos. En cada una de ellas podemos almacenar una cantidad 9i%a de in9ormacin, ( *=te 6! )its P ! ceros
y unos =ue representan un car-cter8.
cada una de estas casillas de nuestro ordenador' le corresponde una direccin de memoria.
0e esta 9orma' cuando en nuestro programa usamos una >aria)le' internamente lo =ue estamos $aciendo
es re9erirnos a unas posiciones de memoria 6es decir un lugar de la memoria8' =ue $an sido reser>adas
cuando se produ%o la declaracin de +sta.
- Prog*"!
/* Prog0OF.cpp */
#include <stdio.h>
void main()
{
int num#
num=DF#
printf(&n 'a direcci"n de memoria de la varia)le num es 9p:<num)#
printf(&n -l valor de la varia)le num es 9d:num)#
$
Programacin C/C++ Ferm Vil 111
2ra)a el programa P52&/X^' en TuCarpeta.
E%ecDtalo >arias >eces.
Estudio del P52&/X^,
3a direccin de memoria de la >aria)le num' no es m-s =ue un numero en sistema de
numeracin $eCadecimal 6por eso aparecen letras8' =ue indica el lugar de la memoria donde
se guarda el >alor de la >aria)le.
0e)e =uedar clara la di9erencia entre 1alor de una 1aria*le = -u direccin de memoria.
Identi0icador de 0ormato#
Para el 1alor de una >aria)le int es Wd
Para la direccin de memoria es Wp
Para acceder a una >aria)le,
Hom)re de la >aria)le, accedemos a su >alor
Xnom)re de la >aria)le, accedemos a su direccin de memoria.
e) Ri-tema de numeracin He>adecimal#
Gna direccin de memoria >iene dada por un nDmero en sistema $eCadecimal. Veamos como
9unciona estog
Ri-tema ,inario#
El sistema de numeracin =ue nosotros conocemos es el decimal 6sistema de numeracin en )ase 1*8. #e
llama decimal por=ue cual=uier nDmero lo podemos eCpresar utiliEando Dnicamente los 1* d<gitos, *' 1' 2'
3' L' 5' 7' 7' !' ".
El sistema )inario 6sistema de numeracin en )ase 28 utiliEa slo dos d<gitos, *' 1
El pro)lema es cmo pasar del sistema )inario al decimal' para poder entendernos,
#ea (/(( un nDmero )inario' para $allar su e=ui>alente en decimal $emos de $acer lo siguiente,
1*11 P 1C2
*
& 1C2
1
& *C2
2
& 1C2
3
P 1 & 2 & ! P 11
El nDmero (/(( en )ase 2' es el nDmero (( en )ase 1*.
1 ,it es un 1 o un *' =ue representa en in9orm-tica' un circuito electrico por el =ue pasa corriente 618 o no
6*8.
1 ,=te P ! ,it- por esta raEn a 1 )yte se le llama tam)i+n octeto 6!8.
1 ,=te representa un car-cter' se al9a)+tico' num+rico o especial.
Por e%emplo,
El /yte, *1***1** P L & 7L P 7! 6en decimal8 corresponde al car-cter D 6cdigo #CIIP 7!8
El /yte, **1*11*1 P L5 6en decimal8 corresponde al car-cter W 6signo menos8 y se corresponde con el
cdigo #CIIP L5
El )yte, **111**1 P 57 corresponde al car-cter " 6d<gito "8 y se corresponde con el cdigo #CII P 57
Programacin C/C++ Ferm Vil 112
Ri-tema He>adecimal#
El sistema $eCadecimal utiliEa 17 d<gitos' =ue son, *' 1' 2' 3' L' 5' 7' 7' !' "' ' /' C' 0' E' F
El nDmero Y4/ en sistema $eCadecimal ser- ((^Y en sistema decimal' por=ue,
L* P *C17
*
& C17
1
& LC17
2
P *C1 & 1*C17 & LC257 P 11!L
3a utilidad del sistema $eCadecimal est- en =ue utiliEamos menos d<gitos para eCpresar un nDmero
mayor, El nDmero 11!L en decimal ocupa L d<gitos' encam)io el mismo nDmero en $eCadecimal 6L*8
ocupa 3.
Vol>iendo a nuestro lengua%e de programacin, en una >aria)le $emos de distinguir entre su >alor
6contenido de la celdilla o celdillas de memoria8 y su direccin de memoria 6lugar de la celdilla o celdillas
P nDmero en $eCadecimal8.
0) Puntero- (!ointer-)
- Prog*""
/* Prog0OO.cpp */
#include <stdio.h>
void main()
{
int *pint#
int *pint%#
printf(&n Lirecci"n de memoria de pint8 9p &n:pint)#
printf(&n Lirecci"n de memoria de pint%8 9p &n:pint%)#
*pint=10#
*pint%=%@#
printf(&n Calor de pint8 9d &n:*pint)#
printf(&n Calor de pint%8 9d &n:*pint%)#
pint%=pint#
printf(&n 0tenci"n aca)o de igualar los dos punteros &n)#
printf(&n Lirecci"n de memoria de pint8 9p &n:pint)#
printf(&n Lirecci"n de memoria de pint%8 9p &n:pint%)#
printf(&n Calor de pint8 9d &n:*pint)#
printf(&n Calor de pint%8 9d &n:*pint%)#
$
Estudio del P52&/XX#
Programacin C/C++ Ferm Vil 113
Gn puntero 6pointer8 es una >aria)le cuyo contenido no es un >alor' sino una direccin de
memoria.
3a 9orma de declarar un puntero es igual =ue para declarar una >aria)le normal y corriente
pero anteponiendo un asterisco.
0e esta 9orma, int E!intN
Int E!int'N
declaramos 2 punteros' es decir 2 direcciones de memoria =ue contendran datos enteros
6int8.
!rint0(:$n Direccin de memoria de !int# P! $n;Q!int)N
0e)ido a =ue !int es un puntero' en la instruccin anterior no $emos de anteponer T.
un=ue s< utiliEar el identi9icador de 9ormato correspondiente 6Wp8.
Est- claro =ue,
int !e!eN
!rint0(:$n Direccin de memoria de !e!e# P! $n;Q T!e!e)N
ser<a e=ui>alente.
Para acceder al dato correspondiente a un puntero' $emos de anteponer un asterisco. 0e esta
9orma, E!intU(/N sir>e para asignar a la >aria)le puntero 6pint8 el >alor entero (/.
#i o)ser>as detenidamente el resultado del programa P52&/XX' conseguimos 4eliminar5 la
direccin de memoria de la >aria)le !int'.
Vamos a intentar $acer un programa =ue $aga lo mismo =ue el anterior' pero sin utiliEar !untero-.
- Prog1**
/* Prog100.cpp */
#include <stdio.h>
void main()
{
int pint#
int pint%#
printf(&n Lirecci"n de memoria de pint8 9p &n:<pint)#
printf(&n Lirecci"n de memoria de pint%8 9p &n:<pint%)#
pint=10#
pint%=%@#
printf(&n Calor de pint8 9d &n:pint)#
printf(&n Calor de pint%8 9d &n:pint%)#
pint%=pint#
printf(&n 0tenci"n aca)o de igualar las dos varia)les &n)#
printf(&n Lirecci"n de memoria de pint8 9p &n:<pint)#
printf(&n Lirecci"n de memoria de pint%8 9p &n:<pint%)#
printf(&n Calor de pint8 9d &n:pint)#
printf(&n Calor de pint%8 9d &n:pint%)#
$
2r-)alo con el nom)re P52&(//
Programacin C/C++ Ferm Vil 11L
E%ecDtalo >arias >eces y comp-ralo con el P52&/XX
Estudio del P52&(//#
/-sicamente el P:(21** es e=ui>alente al P:(2*""' pero con una
di9erencia 9undamental, En el P:(2*"" igualamos el >alor de dos >aria)les'
pero eliminando 9<sicamente una direccin de memoria.
En el P:(21** igualamos 2 >aria)les pero continuamos con dos >aria)les
de memoria.
Podr<amos concluir, 4el uso de punteros permite a$orrar memoria5.
PrCimamente >eremos =ue el uso de punteros 6caracter<stico del lengua%e
C8' sir>e para )astantes m-s cosas.
l escri)ir, int !e!-N el compilador reser>a una posicin de memoria para
al)ergar la direccin de una >aria)le 4int5 y de nom)re :Epeps5. Es decir,
4peps5 guardar- la direccin de memoria de la >aria)le entera 4Ypeps5' se
dice =ue 4peps5 apunta a la >aria)le entera 4Ypeps5.
l escri)ir,
int 1aria*QE!intN
!intUT1aria*N
diremos =ue 4pint5 apunta a la >aria)le 4>aria)5.
nte la orden :int 1aria*; el compilador 4reser>a5 un grupo de )its 6los
correspondientes a un nDmero entero8' podr<amos de9inir una 1aria*le
como un conBunto de *it-. Encam)io 4pint5 es una direccin de
memoria' en nuestro e%emplo, la direccin de memoria de la >aria)le
4>aria)5 6pintPX>aria)8.
#i consideras el siguiente programa,
/E Prog(//*c!! E/
Finclude G-tdioHI
1oid main()
J
cHar 1ar(N
cHar E!cHarN
!cHarUT1ar(N
0or (1ar(UDaDN1ar(GUDiDN1ar(++) !rint0(:Pc;QE!cHar)N
K
E>identemente seria e=ui>alente en lugar de :!rint0(:Pc;QE!cHar);
escri)ir :!rint0(:Pc;Q1ar();
()ser>a =ue en la l<nea, !cHarUT1ar( inicialiEamos el puntero
6asignamos a !cHar la direccin de 1ar(8 y autom-ticamente
inicialiEamos 4Ypc$ar5 6asignamos a 4Ypc$ar5 la >aria)le 4>ar158'
aun=ue el >alor de 1ar( no lo asignamos $asta 0or(1ar(UDaDN )
Programacin C/C++ Ferm Vil 115
g) Funcione- 5ecur-i1a-
- Prog1*1
/* Prog101.cpp */
#include <stdio.h>
long fact(int n)#
void main()
{
int num#
printf(&n 2ntroduce un nAmero entero8 )#
scanf(9d:<num)#
printf(&n -l factorial de 9d es 9ld: num:fact(num))#
$
long fact(int n)
{
if (n<=1) return 1#
else return n*fact(nE1)#
$
2ra)a el programa con el nom)re P52&(/(' en TuCarpeta.
E%ecDtalo >arias >eces. Pro)a)lemente el programa no 9uncionar- para >alores mayores =ue 17 6piensa
=ue es una 9uncin =ue crece muy aprisa8.
Estudio del P52&(/(#
Gna 9uncin recursi>a es una 9uncin =ue se llama a s< misma, o)ser>a =ue en el 4interior5 de la 9uncin
0act()' $ay una llamada a s< misma, nE0act(n_()
- Prog1*2
/* Prog10%.cpp */
/* *ucesi"n de Ki)onacci (forma recursiva)
0:1:1:%:5:@:F:15:.... */
#include <stdio.h>
int fi)ona(int v)#
void main()
{
int r:valor#
Programacin C/C++ Ferm Vil 117
printf(0)#printf(&n1)#printf(&n1)#
for(valor=1#valor<=%0#valor>>)
{
r=fi)ona(valor)#
printf(&n9d:r)#
$
$
int fi)ona(int v)
{
if((v==0)\\(v==E1)) return 1#
else
return fi)ona(vE1)>fi)ona(vE%)#
$
H) Puntero- = Funcione-
- Prog1*3
/* Prog105.cpp */
#include <stdio.h>
void main()
{
int v1:v%:auH#
printf(&n Primer valor U )# scanf(9d:<v1)#
printf(&n *egundo valor U )# scanf(9d:<v%)#
auH=v1#
v1=v%#
v%=auH#
printf(&n&n .uevo primer valor8 9d:v1)#
printf(&n&n .uevo segundo valor8 9d:v%)#
$
Estudio del P52&(/+#
El programa lo =ue $ace es simplemente intercam)iar los >alores de 2 >aria)les
:ecuerda 6ya lo $icimos en el P:(2*!!8' =ue el intercam)io de >alores se consigue gracias
al uso de una >aria)le auCiliar,
auCP>1d
>1P>2d
>2PauCd
>1 ad=uirir- el >alor de >2 y >2 tomar- el >alor de >1.
El pro)lema del 4intercam)io5 se encuentra en el caso de una 9uncin' como >eremos a
continuacin.
Programacin C/C++ Ferm Vil 117
#e trata de $acer el programa anterior' pero el proceso de 4intercam)io5 lo pondremos en una 9uncin.
- Prog1*L
/* Prog10;.cpp */
#include <stdio.h>
void cam)iar(int v1:int v%)#
void main()
{
int v1:v%:auH#
printf(&n Primer valor U )# scanf(9d:<v1)#
printf(&n *egundo valor U )# scanf(9d:<v%)#
cam)iar(v1:v%)#
printf(&n&n .uevo primer valor8 9d:v1)#
printf(&n&n .uevo segundo valor8 9d:v%)#
$
void cam)iar(int v1:int v%)
{
int auH#
auH=v1#
v1=v%#
v%=auH#
$
#i todo 9unciona correctamente >er-s =ue el programa P52&(/Y no 9unciona' es decir, 4no se
intercam)ian los dos >alores5..
Vamos a solucionar el pro)lema' se trata de $acer el mismo programa P52&(/Y' pero tra)a%ando con
punteros.
- Prog1*5
/* Prog10@.cpp */
#include <stdio.h>
void cam)iar(int *pv1:int *pv%)#
void main()
{
int v1:v%:auH#
printf(&n Primer valor U )# scanf(9d:<v1)#
printf(&n *egundo valor U )# scanf(9d:<v%)#
cam)iar(<v1:<v%)#
printf(&n&n .uevo primer valor8 9d:v1)#
printf(&n&n .uevo segundo valor8 9d:v%)#
$
void cam)iar(int *pv1:int *pv%)
{
int auH#
auH=*pv1#
*pv1=*pv%#
Programacin C/C++ Ferm Vil 11!
*pv%=auH#
$
2ra)a el programa con el nom)re P52&(/V' en TuCarpeta.
E%ecDtalo >arias >eces.
()ser>a =ue el uso de punteros no sir>e slo para a$orrar memoria.
i) Puntero- = 4rra=-
- Prog1*7
/* Prog10B.cpp */
#include <stdio.h>
void main()
{
int i:t6@7:*pun#
for(i=0#i<@#i>>) t6i7=i#
printf(&n 'istado del arra?8 &n)#
for(i=0#i<@#i>>) printf(&n9d:t6i7)#
printf(&n 'istado del arra?: pero a travYs de punteros8 &n)#
for(i=0#i<@#i>>)
{
pun=t>i#
printf(9d&n:*pun)#
$
$
Estudio del P52&(/.#
El nom)re de un array 6t' en nuestro caso8 es sinnimo de la direccin de memoria del
primer )yte de sus elementos. Por lo tanto, !unUt+i al >ariar iU /Q (Q 'Q +Q Y no es m-s =ue
las direcciones de memoria de los 5 >alores del array.
- Prog1*7
/* Prog10D.cpp */
#include <stdio.h>
Programacin C/C++ Ferm Vil 11"
void main()
{
int i:t6@7:*pun#
for(i=0#i<@#i>>) t6i7=i#
printf(&n 'istado del arra?8 &n)#
for(i=0#i<@#i>>) printf(&n9d:t6i7)#
pun=<t6;7#
printf(&n 0rra? en orden inverso8 &n)#
for(i=0#i<@#i>>)
{
printf(9d&n:*pun)#
pun=punE1#
$
$
- Prog1*!
/* Prog10F.cpp */
#include <stdio.h>
void main()
{
int i:Q:mat6@76@7#
for(i=0#i<@#i>>)
for(Q=0#Q<@#Q>>)
mat6i76Q7=@*i>Q#
printf(&n 'istado de la matriR8&n)#
for(i=0#i<@#i>>)
for(Q=0#Q<@#Q>>)
printf(9dE:mat6i76Q7)#
printf(&n 'istado de la matriR pero utiliRando
punteros8 &n)#
for(i=0#i<@#i>>)
{
for(Q=0#Q<@#Q>>)
printf(9dE:*(*(mat>i)>Q))#
printf(&n)#
$
$
Compara el P:(21*7 y el P:(21*!' parecen complicados ]>erdad_. Ciertamente =ue s<' pero de)es
tener en cuenta las siguientes reglas,
() El nom)re de un array unidimensional es un sinnimo de la direccin de memoria de su primer
)yte.
') El contenido del elemento 4i5 de un array unidimensional de nom)re 4pepe5 se o)tiene como
E(!e!e+i)
+) Gna ta)la )idimensional no es sino una matriE unidimensional cuyos elementos son' a su >eE'
arrays unidimensionales.
Programacin C/C++ Ferm Vil 12*
- Prog1*"
/* Prog10O.cpp */
#include <stdio.h>
float invertir(float *numero)#
void main()
{
float i#
printf(&n -scri)e un nAmero8 )# scanf(9f:<i)#
if (invertir(<i) W= 0) printf(&n -l inverso es 9f:i)#
else printf(&n .o tiene inverso)#
$
float invertir(float *numero)
{
if(*numero==0) return 0#
else
{
*numero=1/(*numero)#
return *numero#
$
$
- Prog11*
/* Prog110.cpp */
/* -Qemplo de funciones por valor ? por referencia (direcci"n de
memoria) */
/* !alcula dos veces el procentaQe de gastos: la primera veR
utiliRando una funci"n por valor ? la segunda por referencia
(punteros) */

#include<stdio.h>
#include <conio.h>
void porcentaQeeHvalor(float ingreso: float egreso)#
void porcentaQeeHref(float *ingreso:float *egreso)#
void main()
{
float entrada:salida#
clrscr()#
printf(-ntradas8 )#
scanf(9f:<entrada)#
printf(*alidas8 )#
scanf(9f:<salida)#
porcentaQeeHvalor(entrada:salida)# /*'lamada a la funci"n
porcentaQe
utiliRando paso de parGmetros por valor*/
printf(&n&n)#
Programacin C/C++ Ferm Vil 121
porcentaQeeHref(<entrada:<salida)# /*MtiliRaci"n de la funci"n
porcentaQe
con paso de parGmetros por referencia*/
getch()#
$
void porcentaQeeHvalor(float ingreso: float egreso)
{
egreso=((egreso/ingreso)*100)#
printf(Msted gasta el 9.%f por ciento de lo Pue gana:egreso)#
$

void porcentaQeeHref(float *ingreso:float *egreso)
{
*egreso=(((*egreso)/(*ingreso))*100)#
printf(Msted gasta el 9.%f por ciento de lo Pue gana:*egreso)#
$
B) Varia*le- din"mica-
Vasta a$ora ten<amos una serie de >aria)les =ue declaramos al principio del programa o de cada 9uncin.
Estas >aria)les =ue reci)en el nom)re de e-t"tica-' tienen un tamaFo asignado desde el momento en =ue
se crea el programa.
Pensemos en la 4programacin de una agenda5, tenemos una serie de 9ic$as y nos interesa aFadir m-s. #i
pensamos en 1aria*le- e-t"tica-' preparar<amos la agenda para 1*** 9ic$as aun=ue creamos =ue no
>amos a pasar de 3**. Est- claro =ue esto es desperdiciar memria.
El uso de 1aria*le- din"mica- se )asa en reser>ar un poco de memoria para cada nue>o elemento =ue
nos $aga 9alta y enlaEarlo a los =ue ya ten<amos. Cuando =ueramos )orrar un elemento' enlaEamos el
anterior a +l con el posterior a +l y li)eramos la memoria =ue esta)a ocupando.
s< =ue para seguir' necesitamos sa)er cmo reser>ar memoria y cmo li)erarla.
R entre otras cosas necesitamos :lo- !untero-;g.
:ecordemos,
int numd ?? 4num5 es un nDmero entero
int Yposd ?? 4pos5 es un puntero a entero P direccin de memoria en la =ue podemos guardar
?? un entero.
numP1d ?? a$ora 4num5 >ale 1
posP1***d ?? 4pos5 a$ora es la direccin 1***. Es peligroso ya =ue en la direccin de memoria
?? =ue contiene 4pos5 no sa)emoa lo =ue $ay y podemos pro>ocar una cat-stro9e.
YposP25d ?? en la direccin de memoria de 4pos5 guardamos un 25
posPXnumd ?? la >aria)le 4pos5 contiene la direccin de memoria de la >aria)le 4num5.
En la pr-ctica 4pedimos5 al compilador =ue nos reser>e un poco de memoria donde +l crea adecuado'
utiliEando la 9uncin :malloc;' =ue se encuentra en el 9ic$ero -tdli*H
Gna >eE $emos utiliEado esta memoria es con>eniente li)erarla' utiliEando la 9uncin :0ree;
Veamos,
Programacin C/C++ Ferm Vil 122
- Prog111
/* Prog111.cpp */
#include <stdio.h>
#include <stdli).h>
int num#
int *pos#
void main()
{
printf(num vale8 9d (ar)itrario)&n:num)#
printf('a direcci"n pos es8 9p (ar)itrario)&n:pos)#
num=1#
printf(num vale8 9d (fiQado)&n:num)#
pos=(int *) malloc(siReof(int))# /* reservamos espacio */
printf('a direcci"n pos es8 9p (asignado)&n:pos)#
printf(-l contenido de pos es8 9d (ar)itrario)&n:*pos)#
*pos=%@#
printf(-l contenido de pos es8 9d (fiQado)&n:*pos)#
free(pos)#
pos=<num#
printf(Z ahora el contenido de pos es8 9d (valor de num)&n:*pos)#
$
9ree6pos8d
li)era la memoria =ue ocupa)a 4pos5.
posP6int Y8 malloc6siEeo96int88d
siEeo96int8, espacio a reser>ar' como el tamaFo de)e corresponder a un entero. siEeo96int8 corresponde
al tamaFo de un entero.
4malloc5 nos de>uel>e un puntero sin tipo 6>oid Y8' como =ueremos guardar un dato entero' $emos de
$acer una con1er-in de ti!o-, de 4puntero sin tipo 6>oid Y85 a 4puntero a entero 6int Y85.
Gna >eE e%ecutado el programa' o)ser>emos,
Inicialmente 4num5 >ale * 6no podemos 9iarnos de =ue siempre sea as<' ya =ue no lo $emos
inicialiEado nosotros8
Inicialmente 4pos5 es *. Es un puntero nulo' para el cual no se $a asignado un espacio en
memoria.
- Prog112
/* Prog11%.cpp */
/* !reaci"n de un arra? dinGmicamente */
#include <stdio.h>
#include <stdli).h>
int *num# /* puntero a numero entero */
int *temporal# /* temporal: para recorrer el arra? */
Programacin C/C++ Ferm Vil 123
int i# /* para )ucles */
void main()
{
/* 1eservamos espacio para 10 nAmeros (arra? dinGmico) */
num=(int *) malloc(10*siReof(int))#
for(i=0#i<10#i>>) /* 1ecorremos el arra? */
num6i7=i*%# /* Lando valores */
printf('a direcci"n de comienRo del arra? es8 9p&n:num)#
printf(Calores del arra?8 )#
for(i=0#i<10#i>>) /* 1ecorremos el arra? */
printf( 9d :num6i7)# /* mostrando los valores */
printf(&n Calores del arra? (como puntero)8 )#
temporal=num#
for(i=0#i<10#i>>) /* 1ecorremos como puntero */
printf( 9d :*temporal>>)# /* mostrando los valores ?
aumentando */
free(num)# /* 'i)eramos lo reservado */
$
Como se >e' en 4C5 $ay muy poca di9erencia entre arrays y punteros, $emos declarado 4num5
como un puntero' pero $emos reser>ado espacio para m-s de un dato' y $emos podido recorrerlo como si
$u)i+semos de9inido, int numL(/MN
0) Cadena- de te>to
Gna cadena de teCto en 4C5 es un array de caracteres
Como a todo array' se le puede reser>ar espacio est-ticamente o din-micamente,
Est-ticamente, c$ar teCtoT!*Ud
0in-micamente, c$ar YteCtod reser>ando espacio con 4malloc5 cuando nos $aga 9alta.
0e todas 9ormas una cadena de caracteres siempre terminar- con un car-cter nulo 6Z*8
Es decir,
#i necesitamos 7 letras para un tel+9ono, c$ar tele9onoT!Ud
7 letras del tel+9ono & Z*
Para copiar el >alor de una cadena de teCto en otra' no podemos $acer, te>to( U te>to'' por=ue
estar<amos igualando dos punteros. En >eE de eso' de)emos usar una 9uncin de )i)lioteca, -trc!= =ue se
encuentra en -tringH
#trcpy6destino' origen8d
El pro)lema est- en =ue en la cadena destino $aya su9iciente espacio reser>ado para copiar lo =ue
=ueremos,
- #i =ueremos copiar slo los primeros 4n5 )ytes de origen' usamos,
strncpy6destino'origen'n8d
- Para aFadir una cadena al 9inal de otra 6concatenarla8' usamos, -trcat(origenQde-tino)N
- Para comparar dos cadenas al9a)+ticamente 6para >er si son iguales o para ordenarlas' por e%emplo8'
usamos,
-trcm!(cad(Qcad')N
Programacin C/C++ Ferm Vil 12L
P * si las cadenas son iguales.
a* si cad1acad2
`* si cad1`cad2
- #egDn el compilador tenemos, -tru!r(cadena)N =ue con>ierte la cadena a mayDsculas
- Prog113
/* Prog115.cpp */
/* !adenas de teHto */
#include <stdio.h>
#include <stdli).h>
#include <string.h>
char teHto16F07=4ola# /* !adena -stGtica */
char *teHto%# /* !adena LinGmica */
void main()
{
/* 1eservo espacio para la cadena dinGmica */
teHto%=(char *) malloc (D0*siReof(char))#
strcp?(teHto%:0dios)# /* 'e do? un valor */
puts(teHto1)#
puts(teHto%)# /* -scri)o las dos */
strncp?(teHto1:teHto%:5)# /* copio las 5
primeras
letras */
puts(teHto1)#
strcat(teHto1:teHto%)# /* aVado teHt% al final */
puts(teHto1)#
printf(*i las comparamos o)tenemos8 9d:strcmp(teHto1:teHto%))#
printf((.umero negativo8 teHto1 es menor) &n)#
printf('a longitud de la primera es 9d &n: strlen(teHto1))#
printf(-n ma?Asculas es 9s &n:strupr(teHto1))#
free(teHto%)#
$
- Prog11L
/* Prog11;.cpp */
/* Programa Pue analiRa lo Pue escri)imos8 d(gitos numYricos
o caracteres alfa)Yticos. */
#include <stdio.h>
#include<string.h>
#include <stdli).h>
#include <conio.h>
int menu()#
/* funci"n Pue hace aparecer un menA con dos opciones8
18 s"lo nAmeros: %8 s"lo letras. Levuelve 1 o % */
Programacin C/C++ Ferm Vil 125
int numeros()#
/* funci"n Pue lee d(gitos numYricos en forma de caracteres
? devuelve el valor en entero. */
void captura(char pala)ra67)#
/* funci"n Pue lee en forma de caracteres ? analiRa si
son letras */
void main()
{
int cifra#
char Xord6%07#
clrscr()#

sXitch(menu())
{
case 18 cifra=numeros()#
printf(&n9d:cifra)#
)rea`#
case %8 captura(Xord)#
printf(&n9s:Xord)#
)rea`#
default8 eHit(0)#
$
getch()#
$

void captura(char pala)ra67)
{
char *letra#
char
alfa)eto67=0N!L-KJ42Sb',.f+P_1*/MCgIZda)cdefghiQ`lmnVopPrstuvXH?R#
int i#

pala)ra607=[&0[#
clrscr()#
do
{
*letra=getch()#
for (i=0#i<=@5#i>>)
{
if (alfa)eto6i7==*letra)
{
printf(9c:*letra)#
strcat(pala)ra:letra)#
/* la funci"n strcat aVade letra a pala)ra ?
aVade
al final el caracter nulo. *e encuentra en
<string.h> */

)rea`#
$
$
$Xhile((*letraW=15) << (strlen(pala)ra)<%0))#
$
Programacin C/C++ Ferm Vil 127

int numeros()
{
char cadena6107#
char car=[&0[#
int i=0#
int cantidad#

do
{
car=getch()#
sXitch(car)
{
case[0[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[1[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[%[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[5[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[;[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[@[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[B[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[D[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[F[8 cadena6i7=car#
printf(9c:car)#
)rea`#
case[O[8 cadena6i7=car#
printf(9c:car)#
)rea`#
default8 iEE#
)rea`#
$
i>>#
$Xhile((carW=15) << (i<@))#
cantidad=atoi(cadena)#
/* la funci"n atoi devuelve el nAmero entero
correspondiente
a cadena. *e encuentra en <stdli).h> */

return(cantidad)#
$
Programacin C/C++ Ferm Vil 127
int menu()

{
int numero#
printf(-scoge una opci"n8&n)#
printf(1. -scri)ir s"lo nAmeros&n)#
printf(%. -scri)ir Anicamente letras&n)#
printf(+pci"n8 )#
scanf( 9d:<numero)#
return(numero)#
$
Programacin C/C++ Ferm Vil 12!
- Prog115
/* Prog11@.cpp */
/* Programa Pue demuestra el procedimiento copia el cual:
copia una cadena en otra*/
#include<string.h>
#include <conio.h>
#include<stdio.h>

char *copia(char *cad1:char *cad%)#
void main()
{
char pala)ra16107#
char pala)ra%6107#
char pala)ra56%07#
printf(pala)ra1= )#
scanf(9s:pala)ra1)#
printf(pala)ra%= )#
scanf(9s:pala)ra%)#
copia(pala)ra%:pala)ra1)#
printf(pala)ra1>pala)ra%= 9s:pala)ra1)#
getch()#
$

char *copia(char *cad1: char *cad%)
{
char *inicio#
int i#
inicio=cad%#
Xhile(*cad%W=[&0[)
cad%>>#
Xhile(*cad1W=[&0[)
{
*cad%=*cad1#

cad%>>#
cad1>>#
$
*cad%=[&0[#
cad%=inicio#
$
g) E-tructura- (o regi-tro-)
Programacin C/C++ Ferm Vil 12"
Gna estructura es un nue>o tipo de dato' =ue consta de una agrupacin de datos 6como los arrays8' pero de
distinto tipo 6a di9erencia de los array8.
- Prog117
/* Prog11B.cpp */
/* Mso de estructuras. */
#include <stdio.h>
struct {
char inicial#
int edad#
float nota#
$ persona#
void main()
{
persona.edad=%0#
printf('a edad es 9d:persona.edad)#
$
4A)2EV43A4CI@N Y
() VaE un programa para calcular el -rea de un c<rculo' utiliEando una constante sim)lica para el
nDmero PI. 2ra)a el programa con el nom)re EV43Y4
') VaE un programa =ue 4simula una tirada aleatoria de 3 dados de parc$<s5 utiliEano la 9uncin rand().
2ra)a el programa con el nom)re EV43Y,.
+) GtiliEando la 9uncin rand() $aE un programa =ue simule una %ugada de los dados de pier. 2ra)a el
programa con el nom)re EV43YC.
Y) GtiliEando matrices )idimensionales $aE un programa =ue resuel>a por el m+todo de Cramer un
sistema de 2 ecuaciones con 2 incgnitas. 2ra)a el programa con el nom)re EV43YD.
V) GtiliEando matrices )idimensionales $aE un programa =ue calcule la media de las temperaturas
m-Cima y m<nima de una semana para un 4lugar determinado5. 2ra)a el programa con el nom)re
EV43YE.
.) VaE un programa =ue nos pida los elementos de una matriE de orden L y por Dltimo la escri)e en
pantalla 6)ien escrita8. 2ra)a el programa con el nom)re EV43YF.
]) VaE un programa =ue al escri)ir un nDmero en )ase 2 o )ase 3 lo escri)e en decimal. 2ra)a el
programa con el nom)re EV43Y&.
^) VaE un programa =ue multipli=ue 3 nDmeros y nos muestre la direccin de memoria de cada uno de
los 3 nDmeros y tam)i+n del producto. 2ra)a el programa con el nom)re EV43YO.
Programacin C/C++ Ferm Vil 13*
X) VaE un programa igual =ue el anterior pero utiliEando punteros 6EV43YI8.
(/) VaE un programa =ue calcule los 2* primeros t+rminos de la sucesin de t+rmino general,
3n&1
------
2n-1 utiliEando una 9uncin recur-i1a 6EV43Y%8.
(() VaE un programa igual =ue el EV43YD pero utiliEando una 9uncin con punteros =ue calcule los
determinantes de orden 2 6EV43Y68.
(') VaE un programa =ue escri)a el >ector 61' 2' 7' 2L' 12*' ...8 de 7 componentes utiliEando punteros
6EV43Y38.
(+) VaE un programa =ue escri)a la matriE, 1 1 1 1 1
* 1 1 1 1
* * 1 1 1
* * * 1 1
* * * * 1
utiliEando punteros 6EV43YM8.
(Y) VaE un programa =ue calcule el cu)o de un nDmero' utiliEando una 9uncin de argumento un puntero
6EV43YN8.
(V) VaE un programa =ue calcule la raiE cuarta de un nDmero' utiliEando una 9uncin con argumento un
puntero 6EV43Y28.
Programacin C/C++ Ferm Vil 131
Programacin C/C++ Ferm Vil 132
Oa-ta a8uQ la 1er-in no regi-trada del manual
Ri de-ea- la !arte 8ue 0altaQ e- decir#
V.- Entrada y #alida por Fic$eros.........................................................................................................131
VI.- El lengua%e de programacin C&&................................................................................................171
VII.- rrays' Punteros y Funciones en C&&.........................................................................................1!7
VIII.- Programacin (rientada a ()%etos............................................................................................2*5
p+ndice , Funcionamiento )-sico del .ur)o C&& 3.1.....................................................................223
p+ndice /, Instalacin y Funcionamiento )-sico del 012PP 2.1......................................................227
p+ndice C, 3a 4moderna5 P.(.( 6Visual C&& 7.*8...........................................................................22"
De*e- ad8uirir la 1er-in regi-tradaQ e- decir entera
E- mu= 0"cilQ Ha- de Hacer lo -iguiente#
() 5ellena el -iguiente 0ormulario con tu- dato-#
Nom*re = 4!ellido-#
Direccin#
Cdigo Po-tal# Po*lacin#
Ver-in com!leta del :C/C++ (Manual FV);
') En1ame el 0ormulario anterior !or correo ordinario Bunto con un :*illete; (lo 8ue
con-idere- Bu-to !or un di-8ueteQ ga-to- de mani!ulacinQ en1o = :e-tmulo !or mi !arte
!ara 8ue continue colgando en InternetQ mi- manuale-;)
4 mi direccin 8ue e-# FV
c) Valencia '(_'VQ 'j Q Yk
/^X(V W ,adalona (,arcelona)
E-!ala
+) 4 1uelta de correo reci*ir"- en tu direccinQ un di-8uete con la 1er-in com!leta del
manual :C/C++ (Manual FV);

Você também pode gostar