Está en la página 1de 380

www.FreeLibros.

me

www.FreeLibros.me

Introduccin a la programacin
estructurada en C
Primera edicin

Teresa G ab riela M rquez Frausto


Sonia O so rio ngel
Elzie Noem O lvera Prez
C entro U niversitario d e Ciencias Exactas
e Ing eniera s (CUCEI)
U niversidad d e Guadalajara
Revisin tcnica
Luis Arturo Jim nez Mendoza

Escuela Superior de Ingeniera Mecnica


y Elctrica (ESIM E), Zacatenco
Instituto Politcnico Nacional

Prentice Hall
M xico A rgentina B rasil C olom bia C osta R ica C hile E cuador
E spaa G uatem ala Panam Per P u erto R ico U ruguay V enezuela

www.FreeLibros.me

D ito s d e c a ta lo g a c i n b ib lio g rfica

M rquez F ra u sto , Tferesa G ab riela;


O sorio Angel, Sonia; O lvera P rez, E lzie Noem
Introduccin a la program acin e s tru c tu ra d a e n C.
Prim era edicin
PEA RSO N ED U C A C I N , M xico, 2011
ISBN: 978-607-32-0600-6
rea: C om putacin
Form ato: 18.5 X 23.5 cm

Pginas: 376

Edicin en espaol
Editor:

L uis M iguel C ruz Castillo


luis.cruz@ pearson.com
Editor de desarrollo:
B em ardino G utirrez Hernndez
Supervisor de produccin: Enrique T rejo Hernndez

PRIM ERA EDICIN, 2011


D.R. 2011 por Pearson Educacin de M xico, S.A. de C.V.
Atlacom ulco 500-5o. piso
Industrial A toto, C.P. 53519
Naucalpan de Jurez, Estado de M xico
E-mail: editorial.universidades@ pearsoned.com
C m ara Nacional de la Industria Editorial Mexicana. Reg. Nm. 1031.
Prentice Hall es una m arca registrada de Pearson Educacin de M xico, S.A. de C.V.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicacin pueden reproducirse,
registrarse o transm itirse, por un sistem a de recuperacin de informacin, en ninguna forma ni por
ningn m edio, sea electrnico, m ecnico, fotoqum ico, m agntico o electroptico, por fotocopia,
grabacin o cualquier otro, sin perm iso previo por escrito del editor.
El prstam o, alquiler o cualquier otra forma de cesin de uso de este ejem plar requerir tam bin la
autorizacin del editor o de sus representantes.
ISB N 978-607-32-0600-6
ISB N e-book 978-607-32-0601-3
ISB N e-chapter 978-607-32-0602-0
Im preso en M xico. P rnted in M xico.
1 2 3 4 5 6 7 8 9 0 - 14 13 12 11

Prentice Hall
es una marca de

PEARSON
www.pearsoneducacion.net

www.FreeLibros.me

ISBN: 978 -607 -3 2 -0600-6

Dedicado a Gabriel

www.FreeLibros.me

www.FreeLibros.me

C o n t e n id o

P re s e n ta c i n

C a p tu lo 1

x iii

In tro d u c c i n a l le n g u a je C
1.1
1.2
1.3
1.4
1.5

Conceptos .....................................................................................................
Lenguajes utilizados en una com putadora ..........................................
Etapas de desarrollo del softw are ..........................................................
El lenguaje C ..............................................................................................
Elem entos de un program a en C (conceptos bsicos) ......................
1.5.1 Identificadores ..................................................................................
1.5.2 T ipos de datos ..................................................................................
1.5.3 Variables .............................................................................................
1.5.4 C onstantes .........................................................................................
1.5.5 Palabras reservadas .........................................................................
1.5.6 C om entarios .......................................................................................
1.6 Entrada y salida de datos ..........................................................................
1.6.1 Salida de datos ..................................................................................
1.6.2 Entrada de datos ................................................................................
Resum en .........................................................................................................
E valuacin ....................................................................................................
Ejercicios propuestos ..................................................................................

www.FreeLibros.me

1
1
2
3
4
4
5
6
6
9
11
11
11
12
15
16
16
17

vi

C o n te n id o

C a p tu lo 2

A rit m tic a d e C
2.1
2.2

2.3
2.4
2.5
2.6

C a p tu lo 3

C a p tu lo 4

21
23
24
26
26
27
28
29
30
31
32
33

P ro g ra m a c i n e s t r u c tu r a d a

37

3.1
3.2
3.3

37
40
41
42
52
53
55

E structura de un program a en C ............................................................


D irectivas del preprocesador ...................................................................
E structuras de c o n tr o l .................................................................................
3.3.1 S e c u e n c ia c i n ....................................................................................
R esum en .........................................................................................................
Evaluacin ....................................................................................................
Ejercicios propuestos ..................................................................................

E s t r u c tu r a s d e c o n tro l s e le c t iv a s
4.1
4.2
4.3
4.4

C a p tu lo 5

Inicializacin y asignacin de variables ...............................................


O peradores aritm ticos ............................................................................
2.2.1 Prioridad de los operadores aritm ticos .....................................
2.2.2 O tros operadores d e a s ig n a c i n .....................................................
O peradores de increm ento y decrem ento .............................................
O peradores relacinales ............................................................................
O peradores lgicos .....................................................................................
O perador condicional .................................................................................
2.6.1 Prioridad de operadores ..................................................................
R esum en .........................................................................................................
Evaluacin ....................................................................................................
Ejercicios propuestos ..................................................................................

21

E structura selectiva sim ple ( i f ) ...............................................................


Selectiva doble ( f - e l s e ) ...................................................................
Selectiva doble anidada ............................................................................
Selectiva m ltiple (sw itc h - c a se ) ......................................................
R esum en .........................................................................................................
Evaluacin ....................................................................................................
Ejercicios propuestos ..................................................................................

59
60
63
69
73
84
85
86

E s t r u c tu r a s d e c o n tro l r e p e t it iv a s

93

5.1 E structura repetitiva w h ile .........................................................................


5.2 E structura repetitiva d o -w h ile .................................................................
5.3 E structura repetitiva f o n ............................................................................
R esum en .........................................................................................................
E valuacin ....................................................................................................
Ejercicios propuestos ..................................................................................

94
102
109
114
115
115

www.FreeLibros.me

C o n te n id o

C a p tu lo 6 D a to s d e t ip o e s tru c tu ra d o . A r r e g lo s
6.1
6.2
6.3
6.4

Arreglo o array .............................................................................................


Vectores o arreglos unidim ensionales .....................................................
M atrices o arreglos bidim ensionales .......................................................
Arreglo de caracteres y cadena de caracteres .......................................
Cadena de caracteres ..................................................................................
Funciones para m anejo de cadenas .........................................................
Resum en .........................................................................................................
Evaluacin ....................................................................................................
Ejercicios propuestos ..................................................................................

C a p tu lo 7 D a to s d e t ip o e s t ru c tu r a d o
7.1

E structura .....................................................................................................
E structuras anidadas ....................................................................................
Uso de t y p e d e f (definir el nom bre de un tipo de dato) .....................
7.2 A puntadores .................................................................................................
Resum en .........................................................................................................
Evaluacin ....................................................................................................
Ejercicios propuestos ..................................................................................

C a p tu lo 8 F u n c io n e s (p r o g r a m a c i n m o d u la r)
8.1 Funciones .....................................................................................................
8.2 Funciones que devuelven valores ..........................................................
8.3 Funciones con paso de parm etros ........................................................
8.3.1 Funciones con parm etros por valor ............................................
8.3.2 Parm etros por valor y por referencia .........................................
Resum en .........................................................................................................
Evaluacin ....................................................................................................
Ejercicios propuestos ..................................................................................

C a p tu lo 9 E je rc ic io s re s u e lt o s
9.1

Secuenciacin ...............................................................................................
9.1.1 Calcular el rea de una balastra .....................................................
9.1.2 C alcular el pago a realizar por nm ero
de apagadores y contactos ..............................................................
9.1.3 Calcular las coordenadas del vrtice
de una parbola ................................................................................
9.1.4 C alcular la m edida de los ngulos com plem entario
y suplem entario, dado el valor de un ngulo ............................

www.FreeLibros.me

125
125
126
141
151
153
154
162
162
163

167
167
173
176
185
191
191
192

197
199
205
210
211
215
227
229
230

231
231
231
232
233
233

C o n te n id o

9.1.5 C alcular la m agnitud de un vector dados


sus com ponentes ..............................................................................
9.1.6 C alcular las ppm (partes por m illn) en una solucin ............
9.1.7 C alcular el porcentaje de masa .....................................................
9.1.8 C alcular el nm ero de ladrillos que se necesitan .....................
9.1.9 C alcular el nm ero de escalones de una distancia ...................
9.1.10 Separa un nm ero de cuatro dgitos e n millares,
centenas, decenas y unidades .....................................................
9.1.11 Calcular el cam po elctrico .......................................................
9.1.12 C alcular la r e s is te n c ia ..................................................................
9.2 Selectiva sim ple ...........................................................................................
9.2.1 C alcular el coeficiente de variacin ............................................
9.2.2 C alcular el producto punto de un v e c t o r .....................................
9.2.3 C alcular la pendiente de una recta ..............................................
9.2.4 C alcular la frm ula VENA ...........................................................
9.2.5 C alcular las ecuaciones bsicas del gas .....................................
9.2.6 C alcular el costo indirecto de cada departam ento
de la com paa G ood M ark ...........................................................
9.2.7 C alcular la cantidad de piedra que se necesita
para un c im ie n to ................................................................................
9.2.8 C alcular el ndice de m asa m u s c u la r ............................................
9.2.9 D eterm inar e l tipo de com puesto ................................................
9.2.10 Sensor ptico para encender una luz .......................................
9.2.11 Tem porizador de una represa .....................................................
9.2.12 D escripcin de un com puesto qum ico segn
sus com ponentes ...........................................................................
9.2.13 Calcular corriente, potencia y resistencia
de un aparato elctrico ................................................................
9.3 Selectiva doble .............................................................................................
9.3.1 C alcular la cantidad de concreto requerido
segn la h u m e d a d ..............................................................................
9.3.2 Sensor para encender una luz .......................................................
9.3.3 C alcular resistencias en paralelo o e n serie ..............................
9.3.4 C alcular el nm ero de huevos que una viejecita
lleva en su cesta ................................................................................
9.3.5 Juego de m ultiplicaciones ..............................................................
9.3.6 C alcular el coeficiente de correlacin .........................................
9.3.7 Indicar si un com puesto es soluble o no .....................................
9.3.8 Identificar sem irreacciones, oxidacin o reduccin .................
9.3.9 Indicar el rendim iento terico de una reaccin .......................
9.4 Selectiva doble anidada ..............................................................................
9.4.1 Juego de adivinanza de nm eros ..................................................
9.4.2 Indicar el tipo de dato que el usuario introduzca .....................

www.FreeLibros.me

234
234
235
236
236
236
237
238
238
238
239
240
241
242
244
245
246
247
247
248
248
249
251
251
251
252
253
254
256
257
257
258
259
259
261

C o n te n id o

9.5

9.6

9.7

9.8

9.4.3 El nm ero m enor de cinco nm eros ............................................


9.4.4 Indicar e l tipo de ngulo introducido,
segn su m edida ................................................................................
9.4.5 Calcular el coeficiente de variacin ............................................
9.4.6 C alcular la desviacin de costos y m ateriales
de la m anufacturera C hoice ............................................................
9.4.7 Calcular las propiedades coligativas
de soluciones acuosas .....................................................................
Selectiva m ltiple ........................................................................................
9.5.1 Calcular la resistencia de un cable ............................................
9.5.2 Calcular la m agnitud de vectores ...............................................
9.5.3 Calcular las funciones bsicas d e un polgono r e g u la r
9.5.4 Juego de piedra, papel o tijera .....................................................
9.5.5 Calcular las propiedades coligativas de una solucin ...........
9.5.6 Calcular la solubilidad y sus variables ......................................
9.5.7 Calcular los costos unitarios de la empresa
G e ls tr a p ................................................................................................
9.5.8 Calcular el color de una onda de longitud ................................
E structura repetitiva w h i l e ........................................................................
9.6.1 C alcular la produccin de cualquier em presa
en un da, una sem ana o un m es ..................................................
9.6.2 Sum ar los elem entos de una progresin aritm tica ...............
9.6.3 Sum ar los elem entos de una progresin geom trica .............
9.6.4 O btener la nm ina de hom bres y mujeres,
y su prom edio ....................................................................................
9.6.5 Calcular el precio del concreto segn su resistencia .............
9.6.6 C alcular el coeficiente de correlacin
entre d o s variables ...........................................................................
9.6.7 Calcular el balance de m asa ........................................................
9.6.8 Im prim ir la fraccin mol de los elem entos
de un com puesto ..............................................................................
9.6.9 Calcular porcentaje en presin ...................................................
9.6.10 Calcular los tom os de un elem ento .......................................
E structura repetitiva d o - w h i l e ..................................................................
9.7.1 Calcular el determ inante, dados el cofactor
y el vector ...........................................................................................
9.7.2 Calcular la frecuencia relativa de datos ...................................
9.7.3 Juego del a h o r c a d o ..........................................................................
E structura repetitiva f o r ..............................................................................
9.8.1 C alcular la aceleracin de un cuerpo cada segundo,
los prim eros ocho s e g u n d o s ............................................................
9.8.2 D eterm inar la cantidad de productos defectuosos
y perfectos .........................................................................................

www.FreeLibros.me

ix

261
262
263
264
265
267
267
268
269
270
272
273
275
276
277
277
278
279
280
281
282
283
284
284
285
286
286
287
287
290
290
290

C o n te n id o

9.8.3 C alcular el salario de un trabajador, dependiendo


de las piezas que elabor ................................................................
9.8.4 C alcular diluciones por pasos .......................................................
9.8.5 Indicar los m oles de un elem ento ................................................
9.8.6 Indicar la cantidad de agua que se necesita
para diluir una solucin ..................................................................

291
292
293
294

9.8.7 C alcular la presin parcial de un com ponente ........................ 295


9.8.8 C alcular la varianza de X ............................................................... 296
9.8.9 C alcular la derivada de X a la n ...................................................
9.9 A rreglos u n id im e n sio n a le s.........................................................................
9.9.1 C alcular la m agnitud al cuadrado de un vector ......................
9.9.2 C alcular el producto cruz de dos v e c to r e s .................................
9.9.3 C alcular el reactivo lim itante de una re a c c i n ...........................
9.9.4 C alcular la proyeccin entre dos vectores
de n elem entos ..................................................................................
9.9.5 C alcular el ngulo en grados entre d o s vectores .....................
9.9.6 C alcular la desviacin estndar y varianza
m uestral de n datos .........................................................................
9.9.7 C alcular el producto punto entre tres vectores ..........................
9.9.8 C alcular los estim adores de la recta de r e g r e s i n .....................
9.9.9 C alcular el coeficiente de correlacin ........................................

296
297
297
298
298
299
301
302
303
304
305

9.9.10
Calcular la c o v a ria n z a ................................................................
9.9.11
Calcular ganancias y ventas de una p a s te le r a .....................
9.10 A rreglos bidim ensionales .......................................................................
9.10.1 Calcular la m atriz traspuesta .....................................................
9.10.2 C rear una tabla con los tipos de concreto disponibles,
ju n to con sus resistencias ...........................................................
9.10.3
C alcular la determ inante de un m atriz triangular ..............
9.10.4
C alcular la determ inante de una m atriz de 2 X2 ................

306
307
309
309

9.10.5 Devolver el inventario por s e m a n a ............................................


9.10.6 C alcular en qu tu m o de la empresa
se elaboran m s piezas ................................................................
9.10.7 Calcular la cantidad de grasa perdida
segn las horas de ejercicio realizadas ...................................
9.10.8 Calcular la raz cuadrada de una m a t r iz ...................................
9.10.9 Calcular la m ultiplicacin de una m atriz
por un escalar ................................................................................

312

9.10.10
9.10.11
9.10.12

310
310
311

313
314
315
316

D eterm inar si una m atriz es de identidad o no ................... 317


Calcular el producto punto de dos m atrices ....................... 318
Calcular la inversa de una m atriz cuadrada de 3 X 3 ----- 319

www.FreeLibros.me

C o n te n id o

9.10.13
9.10.14

xi

C alcular la inversa de una m atriz c u a d r a d a ........................... 320


C alcular la raz cuadrada de una m atriz ................................ 321

9.11 Funciones sin paso de p a r m e tro s ......................................................... 322


9.11.1 Calcular el costo de los artculos m anufacturados
por la em presa Kenner ................................................................ 322
9.11.2 C alcular los costos unitarios de la empresa
G elstrap ........................................................................................... 323
9.11.3 C alcular la
m olaridad de una s o lu c i n .......................... 324
9.11.4 C alcular el
porcentaje de m asa de una solucin ........ 325
9.11.5
9.11.6
9.11.7
9.11.8

C alcular la
norm alidad de una norm alidad .................
C alcular la
velocidad .......................................................
C alcular el
cam po elctrico ............................................
C alcular e l
nm ero de ladrillos y la cantidad
de cem ento necesarios para construir una pared ...................
9.12 Funciones con prototipo sin paso de parm etros ..............................
9.12.1 Calcular la
distancia entre dos puntos ..........................
9.12.2 Calcular la
excentricidad de una elipse
sin paso de parm etros ................................................................
9.12.3 Calcular la
derivada de X a la n .....................................
9.13 Funciones con paso de parm etros .......................................................
9.13.1 Calcular costos en la em presa G ood M ark C o m p a n y
9.13.2
9.13.3
9.13.4
9.13.5
9.13.6

Calcular
Calcular
Calcular
Calcular
Calcular

los costos unitarios de la em presa G elstrap .........


la excentricidad de una elipse ..................................
derivadas de X a la n .................................................
velocidad, tiem po y distancia ..................................
fuerza, m asa y a c e le ra c i n ........................................

D eterm inar si un com puesto es alcano,


alqueno o alquino .........................................................................
9.13.8 C alcular resistencia, am peraje o voltaje ...............................
9.13.9 C alcular cam po elctrico, fuerza y c a r g a ...............................
9.14 Funciones con arreglos ...........................................................................
9.14.1 M ostrar el inventario de una librera ......................................
9.14.2 C alcular e l salario de un trabajador
en consideracin de las piezas elaboradas ..............................
9.14.3 Calcular los gastos perdidos por piezas
defectuosas ....................................................................................
9.14.4 M ostrar el inventario de refrescos m s vendidos
de las m arcas de cola m s conocidas .......................................
9.14.5 Calcular la m asa m olecular de un com puesto ......................
9.14.6 Calcular el reactivo lim itante de un elem ento ......................

326
327
328
330
331
331
332
333
334
334
335
337
338
339
341

9.13.7

www.FreeLibros.me

342
343
345
347
347
348
350
351
352
353

C o n te n id o

9.14.7
9.14.8

Calcular la
Calcular el

m agnitud de un vector .................................. 354


producto cruz de un vector .......................... 355

n d ic e d e e je rc ic io s r e s u e lt o s

357

n d ic e d e e je m p lo s

359

n d ic e d e t a b la s

362

www.FreeLibros.me

P r e s e n t a c i n

E ste lib ro fu e c re a d o te n ie n d o e n m e n te a q u e llo s a lu m n o s q u e d e se a n a p re n d e r


a p ro g ra m a r u tiliz a n d o el le n g u a je d e C a tra v s d e u n s is te m a m u y p r c tic o .
R e su lta r m u y til p a ra e stu d ia n te s c o n p o c a o n in g u n a e x p e rie n c ia , p e ro co n
in ic iativ a p a ra re s o lv e r p ro b le m a s m e d ia n te el u so d e u n le n g u a je q u e e n tie n d a
la c o m p u ta d o ra .
El c o n te n id o d e l lib ro e s t c o n s id e ra d o p a ra d e s a rro lla rs e to ta lm e n te e n u n p rim e r
c u rso d e p ro g ra m a c i n ; c a d a te m a s e tra ta c o n s u fic ie n te p ro fu n d id a d y d e ta lle
p a ra s e r c o m p re n d id o p o r a lg u ie n q u e s e in ic ia el c o n o c im ie n to e n e sta d isc ip lin a .
El m to d o d e e n se a n z a s e b a s a e n el a n lis is d e u n p ro b le m a y la d e sc rip c i n
d e lo s p a so s n e c e sa rio s p a ra lle g a r a la so lu c i n . E l o b je tiv o p rin c ip a l es
m o stra r c o n d e ta lle c m o c re a r u n p ro g ra m a y c m o e n te n d e rlo . T o d o e sto
se c o m p le m e n ta c o n e je m p lo s y e je rc ic io s re s u e lto s , d e sg lo sa d o s e n c in c o
p a rte s p a ra u n a m e jo r c o m p re n si n . T a m b i n s e p re s e n ta la d e sc rip c i n
d e la s o p e ra c io n e s, lo s d a to s , la c o d ific a c i n y la e je c u c i n d e l c d ig o ,
a d em s d e u n a e x p lic a c i n d e ta lla d a d e l p ro c e d im ie n to .
El lib ro s e c o m p o n e d e n u e v e c a p tu lo s. E l c a p tu lo 1 h a b la d e lo s e le m e n to s d e
un p ro g ra m a ; el c a p tu lo 2 d e s c rib e la s o p e ra c io n e s a ritm tic a s q u e s e p u e d e n
re a liz a r y el u so d e o p e ra d o re s l g ic o s re la c i n a le s , y s e p re s e n ta n a lg u n o s
e je m p lo s. E n el c a p tu lo 3 s e m u e s tra n lo s p rim e ro s p ro g ra m a s c o n u n a e s tru c tu ra

www.FreeLibros.me

x iv

Presentacin

de c o n tro l (se c u e n c ia c i n ) y s e m e n c io n a n la s b ib lio te c a s d e u so c o m n .


El c a p tu lo 4 d e sc rib e la s e stru c tu ra s d e c o n tro l se le c tiv a s y su s d ife re n te s fo rm a s
de a p lic a rla s: s im p le , d o b le , c o n a n id a m ie n to s y m ltip le . E l c a p tu lo 5 c o n tie n e
las e s tru c tu ra s d e c o n tro l re p e titiv a s w h iie , d o -w h le y f o r , y s e in d ic a e n q u c a so
es p re fe rib le u s a r c a d a u n a. E l c a p tu lo 6 p re s e n ta lo s d a to s e stru c tu ra d o s tip o
a rra y y m u e s tra la d ife re n c ia e n tre a rre g lo s u n id im e n sio n a le s y b id im e n s io n a le s ,
y a rre g lo s d e c a ra c te re s; el c a p tu lo 7 d e sc rib e el d a to e s tru c tu ra d o s t r u c t c o m o
a q u e l q u e p u e d e c o n te n e r d ife re n te s tip o s d e d a to s , a d e m s d e u n a in tro d u c c i n
al m a n e jo d e a p u n ta d o re s . E l c a p tu lo 8 d e sc rib e la s fu n c io n e s, m o s tra n d o p o r
se p a ra d o la s q u e d e v u e lv e n u n v a lo r d e a q u e lla s q u e al s e r in v o c a d a s re q u ie re n
in fo rm a c i n (p a r m e tro s). E l c a p tu lo 9 s e c o m p o n e d e u n c o n ju n to d e e je rc ic io s
a g ru p a d o s e n e s tru c tu ra s d e c o n tro l, e s tru c tu ra s d e d a to s y fu n c io n e s. E stas
a p lic a c io n e s e s t n o rie n ta d a s a d ife re n te s c a rre ra s d e in g e n ie ra .
F in a lm e n te , s e a n e x a u n lis ta d o d e to d o s lo s e je rc ic io s y d e lo s e je m p lo s q u e se
in c lu y e n e n el lib ro .

www.FreeLibros.me

Introduccin
al lenguaje C

E ste libro a b o rd a el d esarro llo d e p ro g ram as e n le n g u a je de


p rogram acin C . E s t p la n e a d o p a ra u tiliz a rs e e n u n c u rs o d e u n
se m e s tre d e tre s h o ra s p o r se m a n a . E n e s te c a p tu lo re p a sa re m o s
p rim e ro lo s c o n c e p to s d e la s c ie n c ia s d e la c o m p u ta c i n , p a ra
d e sc rib ir d e sp u s lo s e le m e n to s d e u n p ro g ra m a e s c rito en
le n g u a je C , lo s d a to s, a s c o m o in stru c c io n e s d e e n tra d a y s a lid a
d e lo s m ism o s.

1.1 Conceptos
U n a com putadora es u n d isp o sitiv o e le c tr n ic o q u e p ro c e s a d ato s
(u n p ro g ra m a re p re s e n ta d o e n c d ig o d e m q u in a ). L a c o m p u ta d o ra
est fo rm a d a p o r a lg n tip o d e d is p o s itiv o d e e n tra d a (c o m n m e n te

www.FreeLibros.me

Captulo 1

In troduccin al le n g u a je C

el te c la d o ) , u n o o v a rio s d e s a lid a (c o m o u n m o n ito r), la u n id a d c e n tra l de


p ro c e sa m ie n to (C P U , c e n tra l p r o c e s s in g u n it) y c h ip s d e m e m o ria c o n o c id a c o m o
m e m o ria in te rn a , p rin c ip a l o R A M ( ra n d o m a c c e s s m e m o r y ).
Es im p o rta n te re c o rd a r q u e la c o m p u ta d o ra fu n c io n a c o n al m e n o s d o s tip o s
de m e m o ria : la in te rn a , p rin c ip a l o R A M , y a lg n d isp o sitiv o d e m e m o ria
e x te rn a (o se c u n d a ria ). L a p rim e ra es a la q u e el p ro c e s a d o r a c c e d e p a ra re a liz a r
sus o p e ra c io n e s; la se g u n d a s e e m p le a p a ra a lm a c e n a r a rc h iv o s d e m a n e ra
p e rm a n e n te .
E n la m e m o ria in te rn a s e c a rg a n lo s d a to s y el p ro g ra m a e n le n g u a je m q u in a
q u e e je c u ta r la C P U (a l p ro g ra m a q u e e s t e n e s ta d o d e e je c u c i n s e le
lla m a proceso). L a m e m o ria e x te rn a o s e c u n d a ria es c u a lq u ie r d is p o s itiv o de
a lm a c e n a m ie n to d isc o s fle x ib le s, C D , D V D , c in ta s m a g n tic a s , m e m o ria flash,
B lu eR ay , e tc te ra e n el q u e es p o sib le a lm a c e n a r a rc h iv o s.

1.2 Lenguajes utilizados en una com putadora


E n u n a c o m p u ta d o ra s e u tiliz a n d ife re n te s tip o s d e le n g u a je s , a lg u n o s e m p le a d o s
d ire c ta m e n te p o r el u su a rio , y o tro s q u e s lo e n tie n d e la c o m p u ta d o ra . L o s
p rim e ro s s e c o n o c e n c o m o le n g u a je s d e a lto n iv el, y s e u sa n p a ra re a liz a r la
p ro g ra m a c i n d e u n s is te m a o p e ra tiv o o d e u n s im p le p ro g ra m a q u e h a g a u n a
cu e n ta ; lo s o tro s lo s e m p le a d ire c ta m e n te la c o m p u ta d o ra , y a q u e e s t n e n un
le n g u a je in c o m p re n s ib le p a ra lo s h u m a n o s. A c o n tin u a c i n s e d e sc rib e n .

Los lenguajes de alto nivel g e n e ra lm e n te s e c o n o c e n c o m o le n g u a je s d e


p ro g ra m a c i n . C o n e llo s s e re d a c ta e n u n le n g u a je s im ila r al
n u e stro , a u n q u e la m a y o ra s e e n c u e n tra n e n in g l s. T ie n e n la v e n ta ja
de s e r p o rta b le s , es d e cir, p u e d e n e n te n d e rs e y e je c u ta rs e e n d iv ersas
c o m p u ta d o ra s; p o r o tro la d o , e sto s le n g u a je s p u e d e n s e r c o m p ila d o re s
o in t rp re te s .
U n in trp rete to m a u n a in s tru c c i n d e l p ro g ra m a , la tra d u c e a le n g u a je m q u in a
y la e je c u ta . E s te p ro c e s o s e re p ite c o n c a d a u n a d e la s in s tru c c io n e s del
p ro g ra m a ; el in t rp re te m s p o p u la r es B a sic .
U n com pilador to m a las in stru c c io n e s e s c rita s e n u n le n g u a je d e a lto n iv el, y
las tra d u c e a le n g u a je in te rm e d io (c d ig o o b je to ), q u e d e sp u s s e tr a d u c e a
le n g u a je m q u in a c re a n d o u n a rc h iv o q u e c o n tie n e el p ro g ra m a e je c u ta b le .
El le n g u a je C es u n c o m p ila d o r.

www.FreeLibros.me

1.3 Etapas d e d e sa rro llo d el so ftw a re

E l lenguaje ensam blador, o sim p le m en te en sam b lad o r, es u n le n g u a je d e b a jo nivel


qu e s e p ro g ram a se g n las in stru ccio n es q u e tiene definidas el procesador.
E l lenguaje m q u in a es u n p ro g ra m a e s c rito e n c e ro s y u n o s, m u y le ja n o a
n u e stra fo rm a d e e x p re si n , p e ro es el n ic o q u e e n tie n d e el p ro ce sa d o r.
U n p ro g ram a es u n c o n ju n to d e in s tru c c io n e s q u e tie n e u n o b je tiv o e sp e c fic o .
L as in s tru c c io n e s e st n e s c rita s u s u a lm e n te e n a lg n le n g u a je de
c o m p u ta d o ra ; d e sp u s, el p ro g ra m a s e tra d u c e a c d ig o o b je to y fin a lm e n te
a le n g u a je m q u in a , q u e es el n ic o q u e la c o m p u ta d o ra e n tie n d e ; s te se
c a rg a e n la m e m o ria p rin c ip a l d e la c o m p u ta d o ra p a ra s e r e je c u ta d o p o r la
C P U ; el re s u lta d o s o n la s a c c io n e s p a ra lo q u e fu e e sc rito .
H a y d o s g ra n d e s tip o s d e p ro g ra m a s: lo s d e a p lic a c i n y lo s de
siste m a s. L o s d e a p lic a c i n s o n lo s m s c o n o c id o s y s e u tiliz a n d ire c ta m e n te
en la c o m p u ta d o ra c o m o lo s p ro c e sa d o re s d e p a la b ra s y la s h o ja s d e c lc u lo .
Los d e siste m a s s o n u n c o n ju n to d e p ro g ra m a s q u e p e rm ite n q u e e x ista u n a
in terfaz d e c o m u n ic a c i n a m ig a b le e n tre el u su a rio y la c o m p u ta d o ra , alg u n o s
eje m p lo s son: lo s siste m a s o p e ra tiv o s , lo s c o m p ila d o re s, e tc te ra .

P ro g ram a d o r es el t r m in o u tiliz a d o p a ra d e n o m in a r a la p e rs o n a d e d ic a d a a
e sc rib ir p ro g ra m a s. F re c u e n te m e n te , u n a a p lic a c i n o s is te m a s e e la b o ra p o r
e q u ip o s e n te ro s d e p ro g ra m a d o re s.
S e d e n o m in a softw are a lo s p ro g ra m a s u tiliz a d o s e n u n a c o m p u ta d o ra .

1.3 Etapas de desarrollo del softw are


P b r lo g e n e ra l, el d e s a rro llo o c o n s tru c c i n d e u n p ro g ra m a a b a rc a la s sig u ie n te s
etapas:
A n lisis
Diseo
Programacin
Codificacin
Prueba
Mantenim iento
D ocument aci n

El a n lis is y d is e o d e p e n d e n d e l ta m a o y la fin alid a d d e l p ro g ra m a ; la


p ro g r a m a c i n es e sc rib ir la so lu c i n p ro p u e s ta e n el id io m a n a tiv o , la co d ifica ci n
consiste e n escrib ir el p ro g ram a c o n instrucciones e n u n len g u aje d e p ro g ram aci n , en

www.FreeLibros.me

Captulo 1

In troduccin al le n g u a je C

este c a s o e n C , c o n sid e ra n d o el d is e o (m d u lo s, a lg o ritm o s , d ia g ra m a s). E n


o casio n e s s e e m p le a in d is tin ta m e n te c o d ific a c i n y p ro g r a m a c i n p ara d e sig n a r
esta fa se d e l p ro c e so . P o ste rio rm e n te s e c o m p ila y p ru e b a el c d ig o ; s e re su e lv e n
los e rro re s d e sin tax is, e n c a so d e ex istir, y d e lo c o n tra rio s e p ro c e d e a la e je c u c i n
del p ro g ra m a p a ra p ro b a rlo y v erificar q u e s e o b te n g a lo p lan e ad o . S e d e te c ta n
y c o rrig e n los p o sib le s e rro res d e l g ic a. U n a v ez te rm in a d o el p ro g ra m a , p u e d e
re q u e rir m a n te n im ie n to p a ra re a liz a r c a m b io s o a ju ste s re la tiv a m e n te p e q u e o s.
L a c o m p ila c i n c o n s is te e n c o n v e rtir el p ro g ra m a e s c rito e n C a le n g u a je m q u in a
(C u tiliz a u n e n la z a d o r d e b ib lio te c a s o lin k er). A l fin a liz a r s e c re a u n a rc h iv o
e je cu tab le : es el q u e s e u tiliz a r p a ra e je c u ta r ( c o rre r ) el p ro g ra m a .

1.4 El lenguaje C
C es u n le n g u a je d e p ro g ra m a c i n d e p ro p s ito g e n e ra l, a s o c ia d o d e m o d o
u n iv ersal al s is te m a o p e ra tiv o U N IX . [Jo y a n es].
C es u n le n g u a je d e a lto n iv el, a u n q u e ta m b i n s e u tiliz a p a ra la p ro g ra m a c i n
de s is te m a s , y a q u e c o n tie n e in s tru c c io n e s p a ra el c o n tro l a b a jo n iv el. E s u n a
e v o lu c i n d e lo s le n g u a je s B y B C P L , lo s c u a le s c a re c a n d e la c a p a c id a d p a ra
m a n e ja r tip o s d e d a to s, u n a d e sv e n ta ja p a ra el p ro g ra m a d o r. E sto s tre s le n g u a je s
fu e ro n u tiliz a d o s e n lo s la b o ra to rio s B e ll p a ra c re a r e l s is te m a o p e ra tiv o U N IX .
E n 1978, c o n la p u b lic a c i n d e l lib ro T h e C P ro g ra m m in g L a n g u a g e , e s c rito
p o r B ria n K e rn ig h a n y D e n n is R itc h ie , s e in ic i fo rm a lm e n te el u so d e l le n g u a je
C. A n te el a u g e d e e s te n u e v o le n g u a je , fu e n e c e sa rio e s c rib ir u n e s t n d a r q u e
c u b rie ra la s n e c e sid a d e s d e c o m p a tib ilid a d y p o rta b ilid a d . E l e s t n d a r fu e
a p ro b a d o e n 1 9 8 9 p o r el c o m it t c n ic o X 3 J 11, d e l A m e ric a n N a tio n a l S ta n d a rd s
C o m m itte o n C o m p u te rs a n d In fo rm a tio n P ro c e ssin g .
El le n g u a je C h a e v o lu c io n a d o a C + + (c re a d o p o r B ja rn e S tro u s tru p e n 1986) y a
o tro s le n g u a je s q u e c o n se rv a n c a ra c te rs tic a s d e C , c o m o Ja v a .

1.5 Elem entos de un program a en C


(conceptos bsicos)
U n p ro g ra m a c o n tie n e v a rio s e le m e n to s (a u n q u e n o es o b lig a to rio q u e to d o s e st n
p resen te s sie m p re ). A c o n tin u a c i n s e m e n c io n a n lo s m s u su a le s.

www.FreeLibros.me

1.5 Elem entos d e un p rogram a en C (conceptos bsicos)

1.5.1 Identificadores
E n u n p ro g ra m a s ie m p re o p e ra n d iv e rso s e le m e n to s c re a d o s p o r el p ro g ra m a d o r
(v a ria b le s, c o n sta n te s , fu n c io n e s , e tc te ra ) o b ie n c re a d o s e n b ib lio te c a s
d e fu n c io n e s (c o m n m e n te lla m a d a s lib re ra s ) ju n to c o n el le n g u a je , c o m o la
fu n c i n p r i n t f . C a d a u n o d e e sto s e le m e n to s re q u ie re u n n o m b re e x c lu siv o p a ra
d ife re n c ia rs e d e o tro s e le m e n to s u sa d o s e n el m is m o p ro g ra m a ; a d ic h o s n o m b re s
se les lla m a id e n tific a d o re s.
E n C s e s ig u e n c ie rta s reg la s p a ra fo rm a r los id e n tific a d o re s:
U n id e n tific a d o r s e fo rm a a p a rtir d e d g ito s, le tra s y el c a r c te r d e su b ra y a d o
(g u i n b a jo ); n o s e p u e d e u tiliz a r n in g n o tro c arc ter.
E l p rim e r c a r c te r d e u n id e n tific a d o r s ie m p re d e b e s e r u n a le tra . A u n q u e
ta m b i n e s t p e rm itid o u tiliz a r el g u i n b a jo c o m o p rim e r c a r c te r, n o es m u y
co m n ; m s bien s e e m p le a p a ra fo rm a r id en tificad o res c o n m s d e u n a p a la b ra .
N o s e p u e d e u tiliz a r u n d g ito c o m o p rim e r c a r c te r e n u n id en tific ad o r.
E l n m e ro d e c a ra c te re s p u e d e s e r ilim ita d o ; es d e cir, d e sd e u n o h a s ta los
q u e el u s u a rio q u ie ra ; s in e m b a rg o a lg u n o s c o m p ila d o re s d e C re c o n o c e n
n ic a m e n te lo s p rim e ro s 8 c a ra c te re s y e n o tro s c a so s p u e d e re c o n o c e r h a sta
3 1. U n c o n s e jo es q u e los id e n tific a d o re s s e a n lo m s c o m p a c to s p e ro ta m b i n
se a n c la ra m e n te d e sc rip tiv o s.
E s p o s ib le u tiliz a r le tra s m a y s c u la s y m in s c u la s , p e ro s e re c o m ie n d a
un e m p le o c o n s is te n te , y a q u e el le n g u a je C es s e n s ib le a m a y s c u la s y
m in s c u la s , es d e cir, u n a a es d ife re n te d e u n a A.
N o s e p u e d e n u tiliz a r p a la b ra s re se rv a d a s d e C c o m o id e n tific a d o re s; ta m p o c o
sm b o lo s o e sp a c io s e n b la n c o .
A c o n tin u a c i n s e m u e s tra n e je m p lo s d e id e n tific a d o re s v lid o s:
A

Nombre

Nombre_alumno

X1

_codigo

CODIGO

resultado_3

A h o ra s e m u e s tra n e je m p lo s d e id e n tific a d o re s n o v lid o s y la ra z n .


Identificador

Explicacin

3i d

E l p r i m e r c a r c t e r debe s e r una l e t r a

Al umno#

El

c a r c t e r # no e s p e r m i t i d o

C od i go alumno

El

e s p a c i o en b l a n c o no es p e r m i t i d o

C o di g o -a l u mn o

El

carcter

- no e s p e r m i t i d o

"a l u m n o "

El

carcter

" no e s p e r m i t i d o

www.FreeLibros.me

Captulo 1

In troduccin al le n g u a je C

1.5.2 Tipos de datos


E n u n p ro g ra m a s ie m p re s e p ro c e s a n d a to s, lo s c u a le s p u e d e n s e r d e d istin ta
n a tu ra le z a . D e p e n d ie n d o d e s u tip o , s e re p re s e n ta r y a lm a c e n a r el d a to e n la
m e m o ria d e la c o m p u ta d o ra d e u n a m a n e ra e sp e c fic a ; es d e cir, el tip o d e d a to
d e te rm in a la c a n tid a d d e m e m o ria re q u e rid a p a ra a lm a c e n a rlo . A c o n tin u a c i n se
lista n lo s tip o s d e d ato s b sic o s d e C , a s c o m o la c a n tid a d d e m e m o ria q u e p u e d e
re q u e rir c a d a u n o . C a b e s e a la r q u e estas c a n tid a d e s s o n la s m s u s u a le s , y a q u e
p u e d e n v a ria r d e u n c o m p ila d o r a o tro ; el ra n g o d e a lg u n o s d e e sto s tip o s d e d ato s
b sic o s p u e d e n v a ria r si s e u tiliz a n lo s m o d ific a d o re s d e tip o c o m o sh o rt, lo n g ,
sig n e d , u n sig n e d .
L os tip o s d e d a to s b s ic o s (o p rim itiv o s ) son:
char
in t
float
do u b le

E n la ta b la 1.1 s e m u e s tra n tip o s d e d a to s b sic o s c o n m o d ific a d o re s , el ta m a o en


b y te s y el ra n g o d e v a lo re s q u e u su a lm e n te u tiliz a n .

1.5.3 Variables
P a ra p o d e r e je c u ta r u n p ro g ra m a , es n e c e s a rio q u e lo s d a to s e s t n a lm a c e n a d o s,
ju n to c o n la s in stru c c io n e s, e n la m e m o ria . M u c h a s v e c e s, d ic h o s d a to s s o n
p ro p o rc io n a d o s p o r el u s u a rio d e l p ro g ra m a d u ra n te la e je c u c i n d e l m is m o o
b ie n s e r n el re s u lta d o d e l p ro c e s a m ie n to d e o tro s d a to s. E s d e c ir, n o s ie m p re es
el p ro g ra m a d o r q u ie n d e fin e lo s d a to s , y su s v a lo re s n o s ie m p re s e c o n o c e n de
a n te m a n o . C m o e n to n c e s s e p u e d e a lm a c e n a r d a to s q u e n o s e c o n o c e n d e sd e el
in ic io ? C o n el u so d e v a ria b le s.
U n a v a ria b le es u n e s p a c io e n la m e m o ria q u e el p ro g ra m a d o r re s e rv a c o n el
fin d e a lm a c e n a r e so s d a to s d e s c o n o c id o s c u a n d o e m p ie z a la e je c u c i n d e un
p ro g ra m a o q u e p u e d e n ir c a m b ia n d o d u ra n te e s e p ro c e so . P a ra p o d e r re s e rv a r
tan to s e sp a c io s c o m o s e re q u ie ra n es n e c e s a rio d e c la ra r la s v a ria b le s.
D e claraci n d e variables
L a d e c la ra c i n d e v a ria b le s c o n s is te e n re s e rv a r lo s e sp a c io s d e m e m o ria q u e
re q u ie re el p ro g ra m a p a ra su e je c u c i n ; p a ra e llo es n e c e s a rio e s p e c ific a r e l tip o
de d a to , a s c o m o el id e n tific a d o r c o n q u e s e le h a r re fe re n c ia p o ste rio rm e n te .

www.FreeLibros.me

1.5 Elem entos d e un p rogram a en C (conceptos bsicos)

Ta b l a 1.1 Tipos de datos y m odificadores


Cantidad
de m e m o ria
Tipo

Descripcin

void

Define v a c o o v a l o r NULL.
Al macena un c a r c t e r .

char

requerid a

Rango

1 byte

-128 a 127

1 byte

0 a 255

2 bytes

-32767 a 32768

2 bytes

0 a 65, 53 5

2 bytes

-32767 a 32768

Puede

a lm a c e n a r un v a l o r c on s i g n o .

unsigned

Al macena un c a r c t e r o un v a l o r

char

s in signo.
Define un v a l o r n u m r i c o e n t e r o

in t

(sin fr a c c i n ) .

unsigned i n t

V alor entero s i n

signo.

Entero co rto ,

puede s e r i g u a l

al i n t o a l a

mitad.

short i n t
En p u n t o f l o t a n t e ( p uede s e r
float

una f r a c c i n

4 bytes

o un e n t e r o con

3.4x10+38

exponente).
En p u n t o f l o t a n t e d e l
tamao d e l
double

3.4x10-38 a

d o b l e de

float (ms c i f r a s

s ig n i f i c a t iv a s para l a

1. 7x10-308 a

fra cci n

8 bytes

1. 7x10 +308

o mayor p a r a e l e x p o n e n t e ) .
Define un e n t e r o c on s i g n o ,
long

u s u a l me nt e d e l

-2,147,483,648 a

d o b l e de tamao

4 bytes

2, 147, 4 8 3 , 64 7

al in t.
Entero s in

unsigned

signo.

4 bytes

0 a 4,294,967,295

long
lo n g double

Incrementa e l

tamao d e l

10 b y t e s

doubl.

3.4x10-4932 a
1.1x10+4932

L a sin ta x is p a ra la d e c la ra c i n d e v a ria b le s e n C .
<tipo_dato>

<identificador>;

E je m p lo s d e d e c la ra c i n d e v a ria b le s:
in t

a;

Se r e s e r v a un e s p a c i o en l a memori a l l a m a d o " a " , c on c a p a c i d a d


p a r a un e n t e r o .

www.FreeLibros.me

Captulo 1

float b , c , d ;

In troduccin a l le n g u a je C

Se r e s e r v a n 3 e s p a c i o s

en l a

memoria p a r a g u a r d a r 3 nmeros

r e a l e s , a l o s c u a l e s s e h a c e r e f e r e n c i a m e d i a n t e " b " , " c " y "d "


respectivam ente.
char j ;

Se

reserva

un

espacio

en

la

memoria

para

poder

alm acenar

c u a l q u i e r c a r c t e r y s e puede h a c e r r e f e r e n c i a a e s t e e s p a c i o
mediante e l i d e n t i f i c a d o r

"j".

C m o reservar m em oria
R e c u e rd e q u e la m e m o ria es u n c o n ju n to d e c eld as d ire c c io n a b le s; e s decir, se p u e d e
te n e r a c c e so a c a d a u n a m e d ia n te s u d irec ci n y e n ellas p u e d e a lm a c e n a r datos.
C u a n d o s e d e c la ra u n a v a ria b le e n u n c o m p ila d o r c o m o C , el p ro g ra m a d o r no
n e c e sita c o n o c e r la d ire c c i n a b so lu ta d e la c e ld a o las c e ld a s e n la s q u e v a a
a lm a c e n a r lo s d a to s d e s u p ro g ra m a ; s im p le m e n te d e c la ra su s v a ria b le s y el
c o m p ila d o r s e e n c a rg a d e l resto . L a sig u ie n te fig u ra m u e s tra d e m a n e ra d e sc rip tiv a
(n o e x a c ta ) c m o q u e d a ra la m e m o ria lu e g o d e h a b e r d e c la ra d o g r fic a m e n te las
v a ria b le s d e los e je m p lo s a n te rio re s.
0

a
14

10

11

12

13

20

21

22

23

9
j

15

16

17

18

24

25

26

27

28

19

S u p o n ie n d o q u e c a d a c e ld a m id ie ra u n b y te , los e sp a c io s so m b re a d o s re p re se n ta n
la re se rv a c i n d e m e m o ria q u e s e h a h e c h o d e a c u e rd o c o n la d e c la ra c i n de
v a ria b le s d e lo s e je m p lo s. E l id e n tific a d o r a o c u p a la s c e ld a s 3 y 4 (2 b y te s p o r se r
e n tero ). D e ig u al fo rm a s e re se rv a ro n las c eld as 10, 11, 12 y 13 (4 b y te s p o r s e r un
v a lo r rea l) p a ra el id e n tific a d o r b , a s c o m o la s c e ld a s d e la 15 a la 18 p a ra c y d e la
2 2 a la 25 p a ra

d\

fin a lm e n te s e re s e rv la c e ld a 9 (1 b y te p o r s e r c a r c te r) p a ra

j.

O b s e rv e q u e se a s ig n a ro n los e sp a c io s a rb itra ria m e n te , d a d o q u e e n la re a lid a d


las v a ria b le s n o n e c e s a ria m e n te q u e d a r n d e m a n e ra c o n se c u tiv a e n la m e m o ria ;
lo q u e im p o rta es q u e e x is ta e sp a c io s u fic ie n te p a ra las v a ria b le s a d eclarar.
R e su m ie n d o : u n a v a ria b le es u n e sp a c io e n la m e m o ria c u y o c o n te n id o p u e d e
c a m b ia r d u ra n te la e je c u c i n d e u n p ro g ra m a ; es d e cir, c u a n d o d e c la ra m o s u n a

www.FreeLibros.me

1.5 Elem entos d e un p rogram a en C (conceptos bsicos)

v a ria b le , s e a s ig n a u n e s p a c io e n la m e m o ria p a ra a lm a c e n a r e n l a lg n v a lo r
q u e sa b e m o s p u e d e c a m b ia r d u ra n te el p ro c e s a m ie n to d e d a to s q u e el p ro g ra m a
lle v a r a c a b o c u a n d o s e e je c u te .

1.5.4 Constantes
L as c o n sta n te s s o n e le m e n to s fre c u e n te m e n te u tiliz a d o s e n lo s p ro g ra m a s ; si ya
q u e d c la ro el c o n c e p to d e v a ria b le , s e r m s se n c illo e x p lic a r el d e c o n sta n te .
U n a c o n s ta n te es u n e s p a c io e n m e m o ria q u e re c ib e u n v a lo r p o r p rim e ra v e z y
g e n e ra lm e n te n o s e m o d ific a d u ra n te la e je c u c i n d e u n p ro g ra m a .
U n a c o n sta n te s e u tiliz a c u a n d o s e c o n o c e d e a n te m a n o el v a lo r d e a lg n d a to
p e ro a d e m s s e s a b e q u e e s te d a to n o d e b e c a m b ia r. P o r e je m p lo s e p u e d e p e n sa r
q u e e n u n p ro g ra m a (n o im p o rta p a ra q u sirv a ste ) s e re q u ie re tra b a ja r c o n el
v a lo r d e

tt;

sa b e m o s q u e tt g e n e ra lm e n te m a n e ja el v a lo r d e 3 .1 4 1 6 y q u e n o
p u e d e te n e r o tro . S e ra il g ic o p e n s a r e n re s e rv a r u n e s p a c io p a ra u n a v a ria b le si
d ic h o v a lo r n o tie n e p o r q u c a m b ia r e n el tra n s c u rs o d e l p ro g ra m a ; d e e s ta fo rm a ,
lo m s c o n v e n ie n te s e ra d e fin ir u n a c o n sta n te p a ra a lm a c e n a r 3 .1 4 1 6 .
E n C , la s c o n sta n te s s e c re a n u tiliz a n d o la d ire c tiv a d e l p re p ro c e s a d o r

ttdefine

(c o n sta n te s sim b lic a s d e fin id a s) o b ie n la p a la b ra re s e rv a d a c o n st (c o n s ta n te s


sim b lic a s d e c la ra d a s).
La co nstante sim b lica t t d e f i n e
E n el le n g u a je C ,

ttdefine

s e u tiliz a p a ra d e c la ra r c o n sta n te s s im b lic a s y c re a r

m a c ro s. E n e s te lib ro s lo s e u tiliz a r p a ra d e fin ir c o n sta n te s , m e d ia n te la


sig u ie n te sin ta x is:
ttdefine < i d e n t i f i c a d o r > <v a lo r>

E je m p lo s d e c o n sta n te s sim b lic a s:


ttdefine SALUDO "H o l a a t o d o s "
ttdefine P I 3.1 41 6
ttdefine NP 1506
ttdefine CAR ' a'

Los n o m b re s sim b lic o s s o n lo s id e n tific a d o re s; el p re p ro c e s a d o r d e C


su stitu y e lo s v a lo re s H o la a to d o s , 3 .1 4 1 6 , 1506 y a c a d a v e z q u e se
e n c u e n tra e n u n p ro g ra m a el n o m b re d e la s c o n sta n te s s im b lic a s S A L U D O ,
PI, N P y C A R , re sp e c tiv a m e n te .

www.FreeLibros.me

Captulo 1

In troduccin a l le n g u a je C

O b s e rv e q u e a las c o n sta n te s c re a d a s c o n

define ,

n o es n e c e s a rio e sp e c ific a rle s el

tip o d e d a to q u e d e b e r n te n e r; estas c o n sta n te s a d q u ie re n su tip o d e p e n d ie n d o de


la n a tu ra le z a d e l v a lo r a sig n a d o . A s , las c o n sta n te s d e fin id as a n te rio rm e n te son:

NP

constante entera,

PI

constante r e a l ,

CAR

c o n s t a n t e de c a r c t e r ,

SALUDO

constante

de

ya qu e r e p r e s e n t a l a

representa l a

c a d e na

de

c a n t i d a d de 1506.

c a n t i d a d de 3 .1 41 6.

y a que r e p r e s e n t a a l a
caracteres,

le tra

representa

la

'a'.
secuencia

"H o l a a t o d o s " .

C u a n d o s e u tiliz a define p a ra c re a r c o n sta n te s, e n re a lid a d lo s v a lo re s n o o c u p a n


u n e s p a c io e n la m e m o ria c o m o e n el c a s o d e la s v a ria b le s, s in o q u e el c o m p ila d o r
su s titu y e c a d a o c u rre n c ia d e l n o m b re sim b lic o p o r s u re s p e c tiv o valor, a n tes d e
a n a liz a r s in t c tic a m e n te el p ro g ra m a fu en te .
D ic h o d e o tro m o d o , c a d a v e z q u e a lg u n a in s tru c c i n u tilic e el id e n tific a d o r N P,
ste s e r s u s titu id o p o r el 1 5 0 6 co n q u e fu e d efinido.
La co nstante num rica c o n s t
P o r o tro la d o , u n a c o n s ta n te ta m b i n se p u e d e c re a r u tiliz a n d o la p a la b ra
re s e rv a d a

const;

si s e p ro c e d e d e e s ta m a n e ra , el d a to o c u p a u n e sp a c io en

m e m o ria c o m o si fu e ra u n a v a ria b le , e x c e p to p o rq u e s u c o n te n id o n o c a m b ia .
L a sin ta x is p a ra d e c la ra r u n a c o n s ta n te

const

es:

<const> < t i p o de d a t o > < i d e n t i f i c a d o r > = <valor>;

E jem p lo s:
c o n s t i n t NP=1506;
c o n s t f l o a t P I =3 . 1 4 1 6 ;
c o n s t c h a r CAR='a';
c o n s t c h a r SALUDO[ ]= " H o l a a t o d o s " ;

L as d e c la ra c io n e s a n te rio re s p o d ra n u tiliz a rse e n lu g a r d e l #define, la d ife re n c ia


c o n siste e n q u e

const

tie n e u n e s p a c io d e m e m o ria re s e rv a d o p a ra c a d a dato;

a d e m s d e s u sin ta x is, o b s e rv e q u e c o n s t s e sp e c ific a el tip o d e d a to d e c ad a


v a lo r; s e u tiliz a el o p e ra d o r = p a ra a s ig n a r d ic h o v a lo r y a d e m s c a d a se n te n c ia
(o in stru c c i n ) te rm in a c o n ;.

www.FreeLibros.me

1.6 Entrada y salida d e datos

1.5.5 Palabras reservadas


L as p a la b ra s re se rv a d a s d e C s o n a q u e lla s c u y o sig n ific a d o s e e n c u e n tra d e fin id o
en el le n g u a je : y a tie n e n u n u so e sp e c fic o . sta s s e e s c rib e n e n la s in stru c c io n e s
de lo s p ro g ra m a s.
L as p a la b ra s re s e rv a d a s d e C son:
auto

double

in t

struct

break

else

long

switch

case

enum

re g iste r

typedef

char

extern

return

unin

const

float

short

unsigned

continue

for

signed

void

de fau lt

goto

size o f

v o la tile

do

if

sta tic

w hile

O b se rv e q u e la lis ta d e p a la b ra s re se rv a d a s e s t e s c rita e n le tra s m in s c u la s ;


y ju s ta m e n te a s s e d e b e n u tiliz a r p a ra q u e c u m p la n s u p ro p s ito d e n tro d e un
p ro g ra m a . A u n q u e es p o s ib le u tiliz a r c u a lq u ie ra d e e llas e s c rita e n m a y sc u la s
c o m o id e n tific a d o r, e s to n o s e re c o m ie n d a e n la p r c tic a .

1.5.6 Com entarios


Los c o m e n ta rio s s o n c a d e n a s d e c a ra c te re s o te x to q u e d e s c rib e n p a rte s del
p ro g ra m a q u e el p ro g ra m a d o r d e s e a e x p lic a r; d ic h o te x to n o es p a rte d e l p ro g ra m a
fu en te , s in o u n a d e s c rip c i n d e l m is m o . L o s c o m e n ta rio s g e n e ra lm e n te e st n
d irig id o s a o tro s p ro g ra m a d o re s, n o a lo s u su a rio s.
P ra p o d e r u s a r c o m e n ta rio s e n u n p ro g ra m a e n C y q u e el c o m p ila d o r n o los
c o n sid e re c o m o in stru c c io n e s d e l p ro g ra m a fu e n te , s e u tiliz a n lo s sm b o lo s /* y * /
p a ra e n c e rra r el tex to : / * . . . t e x t o . . . */.

1.6 Entrada y salida de datos


U n p ro g ra m a es u n c o n ju n to d e in s tru c c io n e s q u e la c o m p u ta d o ra e je c u ta co n
el fin d e o b te n e r u n re s u lta d o o b ie n la s o lu c i n a u n p ro b le m a d e te rm in a d o .
C asi sie m p re , e s te re s u lta d o s e o b tie n e a p a rtir d e l p ro c e s a m ie n to d e lo s d ato s.
G e n e ra lm e n te , lo s d a to s d e p e n d e n d e l u s u a rio y s te te n d r q u e c o n o c e r los

www.FreeLibros.me

Captulo 1

In troduccin al le n g u a je C

re su lta d o s d e l p ro g ra m a q u e e s t u tiliz a n d o . P a ra e llo s e re q u ie re c o n ta r co n


in stru c c io n e s q u e p e rm ita n a lo s u su a rio s in tro d u c ir d a to s y o tra s q u e p e rm ita n
m o stra r lo s re s u lta d o s g e n e ra d o s p o r lo s p ro g ra m a s.
El le n g u a je C c u e n ta c o n la s fu n c io n e s s c a n f ( ) y p r i n t f ( ) p a ra e n tra d a y sa lid a
de d a to s re s p e c tiv a m e n te , la s c u a le s s e p u e d e n u tiliz a r a g re g a n d o el a rc h iv o de
c a b e c e ra M n c lu d e < std io .h > .

1.6.1 Salida de datos


L a c o m p u ta d o ra d is p o n e d e d iv e rso s m e d io s p a ra p ro p o rc io n a r la s a lid a de
d a to s, c o m o la im p re s o ra , a rc h iv o s o el m s u tiliz a d o : el m o n ito r. P re c is a m e n te
la fu n c i n

p rin tf(

) s e u tiliz a p a ra m o s tra r d a to s a trav s d e e ste d is p o s itiv o . Su

sin tax is es la sig u ie n te :


p rin tf("texto ,

cadena de c o n t r o l

de t i p o ",

argumentos);

d o n d e te x to y c a d e n a d e c o n tro l d e tip o s o n o p c io n a le s, d e p e n d ie n d o d e lo
q u e s e d e se e m ostrar. C a d e n a d e c o n tro l es u n a c a d e n a d e carac tere s % tip o q u e
in d ic a el tip o d e d a to a d e s p le g a r (lo re q u ie re la fu n c i n

p rin tf

( )) . P o r o tro

la d o , a rg u m e n to o a rg u m e n to s es el v a lo r o lo s v a lo re s q u e s e p re te n d e m o stra r, y
p u e d e n s e r v a ria b le s, c o n s ta n te s , e x p re sio n e s a ritm tic a s , re s u lta d o s d e fu n c io n e s
o sim p le m e n te te x to q u e e l p ro g ra m a d e b e m o s tra r al u su a rio . A c o n tin u a c i n se
m u e stra u n e je m p lo d e l u so y la e x p lic a c i n .
in t

a=7;

float b = 8 . 2 ;
c h a r c = ' s 1;

p r i n t f ( n96d , a ) ;

Se v i s u a l i z a

un 7, qu e e s e l

c o n t e n i d o de l a

v a r i a b l e a.
p r i n t f ( "%c/",

a+b);

Se v i s u a l i z a un 15, y a qu e e s

la

suma de a

+b

m o s t r a d a como v a l o r e n t e r o ,
p r i n t f ( "% f",

a+b);

Se v i s u a l i z a un 15.2,

y a que e s l a

suma de

a +

b m o s t r a d a como v a l o r r e a l ,
p r i n t f ( "% c",

c);

Se v i s u a l i z a l a l e t r a
de l a

p r i n t f C % c %c/ % f",

c,

a,b);

printf("H O LA");

v a r i a b l e c.

Se v i s u a l i z a
la s

' s ' que e s e l c o n t e n i d o

s 7 8 . 2 que son l o s

v a r i a b l e s c,

a y b respectivam ente.

Se v i s u a l i z a l a p a l a b r a HOLA.

www.FreeLibros.me

v a l o r e s de

1.6 Entrada y salida d e datos

Ta b l a 1.2 Cadenas de control de tipo para salida


Cadena de tipo

D e s cr ip ci n
El

d a t o es un e n t e r o d e c i m a l

El

d a t o es un e n t e r o .

El

d a t o es un e n t e r o o c t a l .

El

d a t o es un e n t e r o h e x a d e c i m a l .

El

d a t o es un e n t e r o s i n

%c

El

d a t o es un c a r c t e r

%e

El

d a t o es un r e a l e x p r e s a d o en b a s e y e x p o n e n t e ( f l o a t ) .

%f

El

d a t o es un r e a l e s c r i t o

El

d a t o es un r e a l

%2

%s

(in t).

s i g n o en d e c i m a l

(unsigned i n t ) .

(char).

con p u n t o d e c i m a l con s i g n o

(float).

(float).

E l d a t o e s una cadena de c a r a c t e r e s qu e f i n a l i z a co n e l
carcter nulo

%lf

El

\0 .

d a t o es r e a l

de t i p o l o n g d o u b l e .

O b s e rv e q u e c u a n d o s e im p rim e te x to n o es n e c e s a rio u tiliz a r a lg u n a c a d e n a de


tipo, s lo el te x to ta l c o m o s e d e s e a m o stra r, e n c e rra d o e n tre c o m illa s ( ). P a ra
m o stra r v a ria b le s es n e c e s a rio u s a r la c a d e n a d e tip o a d e c u a d a , ta m b i n d e n tro
de la s c o m illa s. E n la ta b la 1.2 s e p re s e n ta n las d ife re n te s c a d e n a s d e tip o q u e se
u tiliz a n e n C d e p e n d ie n d o d e lo s tip o s d e d a to s q u e s e d e s e a im p rim ir e n p a n ta lla .
C o m o y a s e h a m e n c io n a d o ,

p rin tf(

) p u e d e m a n e ja r m s d e u n a rg u m e n to , p a ra

ello es n e c e s a rio u s a r la s c a d e n a s d e tip o c o rre s p o n d ie n te s p o r c a d a a rg u m e n to


q u e s e re q u ie ra v isu a liz a r, c o m o e n el e je m p lo sig u ie n te :
p rin tff

, a, b, c ) ;

m u e stra e n p a n ta lla 7 8 .2 s, q u e s o n lo s v a lo re s q u e tie n e n a lm a c e n a d o s las


v a ria b le s q u e s e u s a ro n c o n la fu n c i n , p e ro la fo rm a e n q u e s e p re s e n ta n no
es m u y c o n v e n ie n te , p u e s s e ra m s p r c tic o q u e h u b ie ra u n e s p a c io e n tre c ad a
v alo r y n o m o s tra rlo s c o m o si fu e ra u n o so lo . C m o s e p u e d e s o lu c io n a r e s te
p ro b le m a ? U tiliz a n d o s e c u e n c ia s d e e s c a p e , d e ta l m o d o q u e si m o d ific a m o s la
lla m a d a a n te rio r as:
p r i n t f ( U96d \ t %f \ t % c", a , b , c ) ;

www.FreeLibros.me

Captulo 1

In troduccin a l le n g u a je C

al e je c u ta r s e la in s tru c c i n , m o stra ra lo sig u ie n te :


7

8.2

y a q u e la s e c u e n c ia d e e s c a p e \t q u e s e a a d i e n la lla m a d a a la fu n c i n , in se rta
u n a ta b u la c i n e n c a d a lu g a r e n q u e es c o lo c a d a .
L as se c u e n c ia s d e e s c a p e s o n ta m b i n c a d e n a s d e c a ra c te re s q u e tie n e n un
sig n ific a d o e sp e c ia l d e p e n d ie n d o d e la c a d e n a q u e s e u tilic e . L a ta b la 1.3 q u e se
p re s e n ta a c o n tin u a c i n m u e s tra la s se c u e n c ia s d e e s c a p e q u e u tiliz a el le n g u a je
C , a s c o m o su a cc i n .
A n a lic e m o s el sig u ie n te e je m p lo y s u salid a.
p r i n t f ( ' ,96d \n \ t

\n \ t \ t %c",

a,b,c);

7
8.2

Ta b l a 1.3 Secuencias de escape


S e c u e n c i a d e escape

Descripcin

\a

Alarm a

\b

Retroceso

\f

A v a n c e de p g i n a

\n

R e t o r n o de c a r r o y avan ce de l n e a

\r

R e t o r n o de c a r r o

\t

Tabulacin

\v

Tabulacin v e r t i c a l

\\

Diagonal i n v e r t i d a

\?

S i g n o de i n t e r r o g a c i n

C o m illa s dobles

\ 000

Octal

\ xhh

Hexadecimal

\0

Carcter nulo

www.FreeLibros.me

1.6 Entrada y salida d e datos

L a s a lid a s e m o s tra ra d e e s ta m a n e ra y a q u e d e sp u s d e im p rim ir e l v a lo r d e c ad a


v a ria b le s e im p rim e u n e n t e r se g u id o d e u n tab u lad o r.
T a m b i n es p o s ib le q u e e n a lg u n o s c a so s s e te n g a q u e m o s tra r a lg n v a lo r d e n tro
d e u n m e n s a je , c o m o en:
p r i n t f ("E l

v a l o r de l a

v a r i a b l e a e s %c/", a ) ;

y e n p a n ta lla s e v e ra d e l s ig u ie n te m odo:
E l v a l o r de l a

v a r i a b l e a es 7

p e ro si m o d ific a m o s la fu n c i n as:
p rin tf("% d Es e l

v a l o r de l a

v a r i a b l e a ",

a);

el re s u lta d o e n p a n ta lla sera:


7 Es e l

v a l o r de l a

v ariab le a

O b s e rv e q u e p re c is a m e n te e n el lu g a r q u e o c u p a la c a d e n a d e tip o d e n tro del


te x to , es d o n d e a p a re c e r el v a lo r d e la v a ria b le o el e le m e n to q u e s e v a a m o strar.

1.6.2 Entrada de datos


L a e n tra d a d e d a to s, u o p e ra c i n d e e s c ritu ra , s e p u e d e h a c e r a tra v s d e d ife re n te s
d isp o sitiv o s c o m o u n te c la d o o u n a rc h iv o , p o r e je m p lo . S in e m b a rg o , si s e u s a la
fu n c i n s c a n f ( ) s e tra ta d e u n a e n tra d a d e d a to s d e sd e el te c la d o . L a s in ta x is de
s ca n ff )

es la sig u ie n te :
s c a n f ( " c a d e n a de c o n t r o l de t i p o " ,

& va ria b le );

Ig u al q u e la fu n c i n p r i n t f ( ) , la fu n c i n s c a n f f ) re q u ie re la c a d e n a d e tip o
p o r c a d a v a ria b le o v a ria b le s q u e s e d e s e a leer, el s m b o lo & es u n a p u n ta d o r q u e
a p u n ta a la d ire c c i n a s ig n a d a a la v a ria b le q u e v ie n e a c o n tin u a c i n y s ta se r
el re a d e m e m o ria d o n d e s e a lm a c e n a r e s e d a to d e e n tra d a . E s in d is p e n s a b le
u tiliz a r e s te s m b o lo , d e lo c o n tra rio , el v a lo r n u n c a s e r g u a rd a d o e n la v a ria b le .
Ej e m p l o 1.1 Programa que lee dos datos y los muestra
in t

edad;

f loat e s t ;
p rin tf("T e cle a

tu edad");

scanf("%d",&edad);
(contina)

www.FreeLibros.me

Captulo 1

In troduccin al le n g u a je C

(continuacin)
p rin tf("T e cle a

t u e s t a t u r a ) ;

s c a n f ( % f , & e s t ) ;
p r i n t f ( " T i e n e s %c/ aos y m ide s %f m t s ." , e d a d , e s t ) ;

E n e s te e je m p lo s e d e c la ra n la s v a ria b le s
p rin tf

edad

y e s t ; p rim e ro s e u tiliz la fu n c i n

() p a ra m o s tra r e n p a n ta lla u n m e n s a je q u e s o lic ita al u s u a rio su e d ad ;

el u s u a rio d e b e e s c rib ir s u e d ad , p o r e je m p lo , 20, y e ste v a lo r s e a lm a c e n a r en


la v a ria b le e d a d q u e s e e s t u sa n d o c o m o a rg u m e n to e n la fu n c i n

s c a n f ( );

p o ste rio rm e n te a p a re c e o tro m e n s a je s o lic ita n d o s u e s ta tu ra , su p o n g a m o s q u e el


u su a rio te c le a 1 .7 5 , q u e s e a lm a c e n a e n

e s t ; fin a lm e n te

a p a re c e el m e n saje:

T i e n e s 20 aos y m ide s 1 . 7 5 mts.

G e n e ra lm e n te lo s p ro g ra m a s in te ra c t a n c o n el u s u a rio e n la le c tu ra d e d ato s.

Resum en
L a c o m p u ta d o ra es u n d isp o sitiv o e le c tr n ic o q u e p ro c e s a in s tru c c io n e s y d ato s.
E n e lla s e p u e d e n u tiliz a r v a rio s tip o s d e le n g u a je s c o m o lo s d e a lto n iv el, q u e
so n lo s c o m p ila d o re s; el le n g u a je e n sa m b la d o r, q u e es d e b a jo n iv el, y el le n g u a je
m q u in a , e n c e ro s y u n o s, q u e es el n ic o q u e la c o m p u ta d o ra e n tie n d e .
El le n g u a je q u e e s ta o b ra a b o rd a es el C , u n le n g u a je d e p ro g ra m a c i n de
p ro p sito g e n e ra l.
A lg u n o s d e lo s e le m e n to s u tiliz a d o s e n u n p ro g ra m a s o n id e n tific a d o re s,
v a ria b le s, c o n sta n te s y c o m e n ta rio s.
L a in s tru c c i n u sa d a c o m n m e n te p a ra le e r d a to s p o r la e n tra d a e s t n d a r (te c la d o )
es s c a n f ; p a ra m o s tra r e n la s a lid a e s t n d a r (m o n ito r) s e u tiliz a la in s tru c c i n
p rin tf.

Evaluacin
I. D escriba los siguientes conceptos.
1. Q u es u n p ro g ra m a ?
2 . Q u es la C P U ?
3 . A q u s e le lla m a so ftw a re ?
4. Q u es la m e m o ria p rin c ip a l?
5 . Q u es le n g u a je d e p ro g ra m a c i n ?

www.FreeLibros.me

17

Ejercicios p ro p u e s to s

6 . Q u es le n g u a je C ?
7 . Q u le n g u a je s p u e d e n u s a rs e e n u n a c o m p u ta d o ra ?
8 . C u le s s o n la s fo rm a s p a ra d e c la ra r u n a c o n sta n te ?
9. C m o s e d e c la ra u n a v a ria b le ?

n . R esponda las siguientes preguntas.


1. P o r q u n o s e d e b e u tiliz a r u n a v a ria b le a n te s d e a s ig n a rle u n v a lo r?
2 . P o r q u n o s e d e b e a sig n a r u n v alo r re a l a u n a v aria b le d e c la ra d a c o m o e n te ro ?
3 . L o s e rro re s d e ____________ so n d e te c ta d o s p o r el c o m p ila d o r y lo s e rro re s
____________ s lo p u e d e n s e r d e te c ta d o s p o r el p ro g ra m a d o r.
4. C u l es la e s tru c tu ra g e n e ra l d e u n p ro g ra m a e n C ?
5 . C u l es la ra z n d e q u e lo s sig u ie n te s id e n tific a d o re s s e a n in v lid o s?
a) .u n o
b ) lu n o
c) U no

H I. E scrib a lo que se pide a continuacin.


1. T re s id e n tific a d o re s v lid o s.
2 . T re s id e n tific a d o re s n o v lid o s.
3 . U n a v a ria b le d e tip o

char,

o tra tip o

in t,

o tra tip o

fioat

y o tra tip o

A s g n e le u n v a lo r 4 a c a d a u n a d e la s v a ria b le s c o n la in s tru c c i n
m u e s tre el c o n te n id o d e c a d a v a ria b le u sa n d o la in s tru c c i n
4. T re s c o n sta n te s u sa n d o c o n s t : c h a r , i n t y fioat.
5 . T re s c o n sta n te s u sa n d o

d o ub ie .
scanf

p rin tf.

ttdefme.

6 . C in c o p a la b ra s re se rv a d a s.
7 . U n c o m e n ta rio q u e c o n te n g a el n o m b re c o m p le to d e u s te d y la fe c h a d e hoy.

Ejercicios propuestos
I. D escriba qu im prim en los siguientes fragm entos de cdigo.
1.

char A;

p r i n t f ( u %c \ A ) ; __________________
p rin tfr

" , A ) ; ___________________

A = ' a ' + 10;


p r i n t f ( n %c U, A ) ; __________________
p r i n t f ( " %c/ \ A ) ;

__________________

www.FreeLibros.me

Captulo 1

In troduccin a l le n g u a je C

2 . i n t B;
B=5;
" , B ) ; __________________

p rin tff"
p r i n t f ( " %c

__________________

fl=5 + '>4';
p r i n t f ( m %c/ " , B ) ; __________________
p r i n t f ( u %c " , B ) ; __________________
3 . ttdefine num 15
p r i n t f ( " %c/ ,num); _________________
p rin tt("

%c U,num); _________________

4 . ttdefine num 15
num=5+'A';
p r i n t f ( " %c/ ,num); ___________________
p rin tt("

%c U,num); ___________________

5 . ttdefine p p r i n t f
in t

a =1 ,b= 2 ;

f l o a t x =3 , y - 4 ;
l o n g z=5;
short i n t

f=6;

u n s i g n e d i n t i =9;
u n s i g n e d l o n g g=7;
d o u b l e h=8;

PC

entero

p("

r e a l %f \ n " , ( f l o a t ) (a+b) ; ___________________

pC

l a r g o % lf \ n " , z ) ; ___________________

\ n " , a + b ) ; ___________________

p ( " s h o r t 96 d \ n " , f ) ; ___________________


p ( " u n s i g n e d i n t %c/ \ n " , i ) ;

___________________

p ( " u n s i g n e d l o n g % d \ n " , g ) ; ___________________


p ( " d o b l e % lf \ n " , h ) ; ___________________

n . Q u dato se alm acenara en las siguientes variables?


1.

in t

a;

C le e r

a=3 */

s c a n t ( "%d",&a);

___________________

scant("% f",&a);

___________________

s c a n t ("%c",&a);

___________________

www.FreeLibros.me

Ejercicios p ro p u e s to s

2 . c h a r x;
l * l e e r x=3 */
scanf("%d",&x);
s c a n f ( ' ' % f n, & x ) ;
s c a n f f "% c", & x ) ;

3.

f l o a t w;

/ * l e e r w=2.5 */
scanff"% d",& w );
s c a n f f "% f" , &w);
s c a n f f "%c",&w );

www.FreeLibros.me

www.FreeLibros.me

Aritmtica de C

E n e s te c a p tu lo s e re v is a el u so d e o p e ra d o re s , s e m e n c io n a n lo s m s
c o m u n e s, s u c la sific a c i n y a lg u n o s e je m p lo s.
U n o p e ra d o r es u n s ig n o (s m b o lo ) q u e in d ic a al c o m p ila d o r el tip o
d e o p e ra c i n q u e s e e fe c tu a r c o n lo s d a to s. E l le n g u a je C c u e n ta co n
d ife re n te s c a te g o ra s d e o p e ra d o re s , lo s m s e le m e n ta le s s o n a r itm tic o s ,
r e la c i n a le s y l g ic o s, y p o d e m o s e n c o n tra rlo s p r c tic a m e n te en
c u a lq u ie r o tro le n g u a je , a u n q u e p o s ib le m e n te s e re p re s e n te n d e o tra
m an era. A d e m s d e e sto s o p e ra d o re s , e x is te n o tro s q u e s o n p ro p io s d e C ,
y s e e x p lic a r n m s a d e la n te .

2.1 Inicializacin y asignacin de variables


In ic ia liz a r u n a v a ria b le y a d e c la ra d a c o n siste e n a s ig n a rle u n v a lo r a n tes
de q u e s e u tilic e e n u n p ro g ra m a ; u n a v e z in ic ia liz a d a s, la s v a ria b le s

www.FreeLibros.me

22

Captulo 2

A ritm tica d e C

p u e d e n m o d ific a r s u c o n te n id o c o n fo rm e s e re q u ie ra e n el p ro g ra m a m e d ia n te
n u ev as a sig n a c io n e s. S in e m b a rg o , c a b e a c la ra r q u e n o s ie m p re s e r n e c e sa rio
d a rle s u n v a lo r in ic ia l (e je m p lific a re m o s e s to m s a d e la n te ).
El le n g u a je C p e rm ite in ic ia liz a r el v a lo r d e la v a ria b le , y a s e a e n el m o m e n to de
la d e c la ra c i n o p o ste rio rm e n te ; el fo rm a to es el sig u ie n te :
< t i p o d a t o > < i d e n t i f i c a d o r > = <valor>;

d o n d e v a lo r p u e d e s e r u n a c o n s ta n te , u n a v a ria b le , u n a e x p re s i n a ritm tic a o la


lla m a d a a u n a fu n c i n ; m s a d e la n te s e d e ta lla s o b re lo s te m a s d e e x p re sio n e s y
fu n c io n e s. P o r e je m p lo :
in t

a = 3;

a = 5;
f loat b = 4 . 5 6 , c = 7 . 2 , d ;
d = b+c;

E n el p rim e r c a s o s e d e c la ra la v a ria b le e n te ra a y s u v a lo r in ic ia l es 3 ; e n la
se g u n d a a sig n a c i n s e a lm a c e n a u n 5 e n la v a ria b le a , lo c u a l h a c e q u e el 3
a n te rio r s e p ie rd a . L a v a ria b le c o n se rv a sie m p re el ltim o v a lo r a sig n a d o .
E n e s te e je m p lo s e d e c la ra n

j,

y d , tres v a ria b le s d e tip o re a l. A la s dos

p rim e ra s s e le s a s ig n a 4 .5 6 y 7 .2 re s p e c tiv a m e n te ;

n o s e in ic ia liz a , y a q u e se

le a s ig n a el re s u lta d o d e la e x p re s i n

a + b,

e je m p lo m s: s e d e c la ra la v a ria b le

c u y o v a lo r in ic ia l es la le tr a r.

char t

= 1 r

d a n d o c o m o re s u lta d o 1 1 .7 6 . U n

';

E n lo s e je m p lo s a n te rio re s s e h a u tiliz a d o el o p e ra d o r = (o p e ra d o r d e a sig n a c i n )


q u e , e n le n g u a je C , n o sig n ific a ig u a ld a d , c o m o e n o tro s c o n te x to s m s c o m u n e s.
E l o p e ra d o r a s ig n a c i n = s e u tiliz a p a ra a lm a c e n a r u n v a lo r e n u n a v a ria b le . S i la
v a ria b le y a e s t d e c la ra d a la s in ta x is d e a sig n a c i n es la sig u ie n te :
< v a r i a b l e > = <v alor>;

L a a s ig n a c i n s ie m p re s e r d e d e re c h a a iz q u ie rd a , p o r lo ta n to , d e l la d o iz q u ie rd o
del o p e ra d o r a s ig n a c i n sie m p re s e d e b e r u tiliz a r u n a v a ria b le ; e n c u a n to al
valor, c o m o y a s e m e n c io n , p u e d e s e r o tra v a ria b le , u n a c o n sta n te , u n a e x p re si n
a ritm tic a o el re s u lta d o d e u n a fu n c i n . S e m u e s tra n lo s sig u ie n te s e je m p lo s ,
a su m ie n d o q u e la s v a ria b le s y a e s t n d e c la ra d a s:
m-5;
m =m +3;

www.FreeLibros.me

2.2 O p erado res aritm ticos

23

n-m ;
z=m+5;
w = s q r t(9 );
E n el p rim e r e je m p lo a m s e le a s ig n a 5; e n la se g u n d a in s tru c c i n a la v a ria b le m
se le a s ig n a lo q u e tie n e m m s 3 (q u e d a n d o c o n 8 ); e n el te rc e r e je m p lo a n s e le
a sig n a el v a lo r d e m, es d e c ir 8; e n el s ig u ie n te e je m p lo a la v a ria b le z s e le a s ig n a
el re s u lta d o d e la s u m a d e m+s (1 3 ); y p o r ltim o , a la v a ria b le w s e le a s ig n a la
ra z c u a d ra d a d e 9, la c u a l s e c a lc u la u tiliz a n d o la fu n c i n s q r t ( ) d e la b ib lio te c a
mat h. h .
El le n g u a je C ta m b i n p e rm ite a s ig n a r v a lo re s d e la s ig u ie n te fo rm a:
i n t m=n-z= 0 ;
U tiliz a d a d e e s ta fo rm a es lla m a d a a s ig n a c i n m ltip le , y s ig n ific a q u e s e les
a sig n a el m is m o v a lo r (c e ro ) a to d a s la s v a ria b le s; la a s ig n a c i n s ie m p re es de
d e re c h a a iz q u ie rd a .

2.2 O peradores aritm ticos


L o s o p e ra d o re s a ritm tic o s s o n lo s q u e u tiliz a m o s n o rm a lm e n te p a ra re a liz a r las
o p e ra c io n e s b sic a s a ritm tic a s: su m a , re s ta , m u ltip lic a c i n , d iv is i n y re s id u o
o m d u lo . F re c u e n te m e n te e sc u c h a re m o s q u e a e sto s o p e ra d o re s s e le s c o n o c e
c o m o b in a rio s, e s to sig n ific a q u e s ie m p re s e u tiliz a n d o s o p e ra n d o s (d a to s ) p a ra
q u e fu n c io n e n . A c o n tin u a c i n la ta b la 2.1 lo s m u e stra .
TAb l a 2.1 O peradores aritm ticos con ejem plos
Tipo d e datos
Operador

Operacin

de los operandos

Ejemplo

Resultado

Suma

Enteros y re a le s

3 + 2

(pueden s e r

3.3 + 5

8.3

d iferen tes).

8 . 2 + 7.1

15.3

Enteros y re a le s

3 - 2

(pueden s e r

3 . 3 - 5

-1.7

d iferen tes).

8.2

1.1

Enteros y re a le s

3 * 2

(pueden s e r

3.3 * 5

16.5

d iferen tes).

8 . 2 * 7.1

5 8 .22

Resta

M u ltip lica ci n

- 7.1

(contina )

www.FreeLibros.me

Captulo 2

A ritm tica d e C

(continuacin)
/

D iv isi n

Enteros y re a le s

3 / 2

(pueden s e r

3 . 3 / 5

0.66

d iferen tes).

8. 2 / 7. 1

1. 1549296

Residuo o

S lo acepta operandos

3 % 2

mdulo

enteros.

3 .3 % 5

in v lid o

8 . 2 % 7.1

in v lid o

T odos lo s o p e ra d o re s a c e p ta n la c o m b in a c i n d e tip o s d e d a to s , e x c e p to m d u lo %,
qu e s lo s e u tiliz a c o n o p e ra n d o s e n te ro s o c a r c te r.
El tip o d e d a to d e l re s u lta d o d e la o p e ra c i n d e p e n d e d e lo s tip o s d e d a to s d e los
o p e ra n d o s q u e s e u tilic e n ; es d e cir, si s e u sa n s lo e n te ro s , el re s u lta d o s e r un
e n te ro , p e ro si s e c o m b in a n e n te ro s y re a le s , el re s u lta d o s e r u n v a lo r real.
P b r o tro la d o , o b s e rv e ta m b i n q u e e n lo s c a so s d e la s o p e ra c io n e s 3 / 2 y 3 % 2 e l
re s u lta d o es 1.
E sto es p o rq u e ta n to el c o c ie n te c o m o el re s id u o e n e s ta o p e ra c i n so n
p re c is a m e n te 1. V eam os e s to e n el e je m p lo sig u ie n te :
1 *- (c o c ie n t e )
23~

1 *- (re s id u o )

Y c o m o el o p e ra d o r re s id u o m a n e ja d a to s s lo d e tip o e n te ro , el re s u lta d o ta m b i n
se r d e tip o e n te ro . A s q u e si el d iv is o r es m e n o r q u e el d iv id e n d o , n o s e d e b e
e sp e ra r u n re s u lta d o c o n p u n to d e c im a l, a u n q u e s u n re s id u o ; p o r e je m p lo , el
re su lta d o d e la s ig u ie n te e x p re si n :
1 % 4

se r 1, y a q u e
0
4[4

1 *- (re s id u o )

2.2.1 Prioridad de los operadores aritmticos


C u a n d o e n u n a e x p re si n e x is te n o p e ra d o re s d ife re n te s, c u l s e e v a l a p rim e ro ?
E sto s o p e ra d o re s s ig u e n la s reg la s m a te m tic a s e n c u a n to a p re c e d e n c ia o
je ra rq u a d e o p e ra d o re s.

www.FreeLibros.me

2.2 O p erado res aritm ticos

L a ta b la 2 .2 m u e s tra e s a p re c e d e n c ia :

TAb l a 2.2 Precedencia de operadores aritm ticos


( )
+, -

E n p rim e r lu g a r a p a re c e el o p e ra d o r ( ), d e b id o a q u e e n la s m a te m tic a s
tra d ic io n a le s s e u tiliz a e s te s m b o lo p a ra d e te rm in a r la p rio rid a d d e o p e ra d o re s
en e x p re sio n e s g ra n d e s . E n se g u n d o lu g a r s e e v a l a n m u ltip lic a c i n , d iv is i n y
m d u lo , lo s tres c o n la m is m a p rio rid a d ; p o ste rio rm e n te s e e v a l a n la s u m a y la
resta.
Ej e m p l o 2.1 Expresiones vlidas y com entario a la solucin

E x p re s i n

Regl as

a)

3 + 4 - 5

Cuando en una e x p r e s i n s e e n c u e n t r a n o p e r a d o r e s con

7 - 5

l a misma p r i o r i d a d ,

resta,

la s

como en e s t e c a s o l a

o p e r a c i o n e s se r e a l i z a n

suma y l a

de i z q u i e r d a

derecha.
b)

8+5*9-6

Aunque l a

suma e s t p r i m e r o ,

8 + 4 5 - 6

j e r a r q u a e s l a m u l t i p l i c a c i n ; p o s t e r i o r m e n t e se

5 3 - 6

l l e v a a cabo l a

47

de i z q u i e r d a a d e r e c h a .

suma,

el

es d e c i r ,

o p e r a d o r de mayor

nuevamente s e e v a l a n

6/2+4*(5-2)

En e s t e e j e m p l o s e e f e c t a p r i m e r o l a

6/2+4*(3)

para e fe c t u a r l a

6/2+12

la

3+12

m u l t i p l i c a c i n . Con e s o s r e s u l t a d o s e s p o s i b l e

15

efectuar l a

d)

suma,

d iv isi n ;

es n e c e s a r i o l l e v a r

operacin entre p a r n te s is

(resta)

a cabo

y luego l a

suma.

6 +7 *( (3 -1 )%2)

Cuando en una e x p r e s i n e x i s t a n p a r n t e s i s a n i d a d o s ,

6+7*(2%2)

se e v a l u a r n de a d e n t r o h a c i a a f u e r a ,

6 + 7 * 0

evalan l o s

6 + 0

precedencia.

l u e g o se

dems o p e r a d o r e s de a c u e r d o a su

6
Nota: Para definir prioridad de operadores, C utiliza nicamente los smbolos ( ). Las { }
(llaves) y los [ ] (corchetes) en el lenguaje C no se utilizan para asociar. Su significado se
explicar ms adelante.

www.FreeLibros.me

Captulo 2

A ritm tica d e C

C u a n d o s e c o m b in a n v a ria b le s, c o n sta n te s y o tro s e le m e n to s m e d ia n te los


o p e ra d o re s a ritm tic o s, s e fo rm a n e x p re sio n e s a ritm tic a s ; el re s u lta d o d e u n a
e x p re si n a ritm tic a p u e d e s e r c u a lq u ie r v a lo r n u m ric o , to d o d e p e n d e d e los
o p e ra n d o s y la a s o c ia tiv id a d d e lo s o p e ra d o re s.

2.2.2 Otros operadores de asignacin


E x is te n o tro s o p e ra d o re s d e a s ig n a c i n m u y p a rtic u la re s d e l le n g u a je C .
+=
*=

/=
%=
Los c u a le s ta m b i n sirv e n p a ra su m a r, restar, m u ltip lic a r y d iv id ir,
re sp e c tiv a m e n te , re d u c ie n d o la s in stru c c io n e s, c o m o s e m u e s tra la ta b la 2.3.
S u p o n ie n d o q u e d e c la ra m o s
in t

a= 1 0 ;

Ta b l a 2.3 O peradores de asignacin


Ex presi n

Equivale a

Resultado

a+=2 ;

a=a+2 ;

12

a-= 2 ;

a=a- 2 ;

A* =2;

a=a* 2 ;

20

a l =2 ;

a=a! 2 ;

A%=2;

a=a%2 ;

2.3 O peradores de increm ento y decrem ento


A n te rio rm e n te s e m e n c io n q u e a lo s o p e ra d o re s a ritm tic o s b sic o s se
les s u e le c la s ific a r c o m o b in a rio s p o rq u e c a d a u n o e llo s re q u ie r e sie m p re
d e d o s o p e ra n d o s. S in e m b a rg o , el le n g u a je C c u e n ta c o n u n a s e rie de
o p e ra d o re s p ro p io s a lo s q u e s e le s lla m a u n a rio s . E s o s ig n ific a q u e n ic a m e n te
re q u ie re n d e u n o p e ra n d o c u a n d o s e u tiliz a n , lo c u a l p ro p o rc io n a c ie rta s
v e n ta ja s.

www.FreeLibros.me

2.4 O p erado res relacinales

E l o p erad o r de increm ento ++ s e u tiliz a p a ra m o d ific a r e l v a lo r d e la v a ria b le


su m n d o le 1 al v a lo r q u e tie n e.
a=9;

a++;
su p o n ie n d o q u e la v a ria b le a s e h a d e c la ra d o p re v ia m e n te , e n la p rim e ra
in stru c c i n s e le a s ig n a el v a lo r d e 9 y e n la s ig u ie n te s e in c re m e n ta s u v a lo r e n 1,
lo c u a l h a c e q u e la v a ria b le a a h o ra te n g a a lm a c e n a d o u n 10.
E ste o p e ra d o r red u ce el c d ig o , y a q u e la ex p re si n a+ + eq u iv ale a la ex p re si n
que d ich o e n p a la b ras sig n ifica a

la v ariab le

a=a+i,

a se le a sig n a lo q u e ten g a m s 1.

P o r o tro la d o ta m b i n s e c u e n ta c o n el o p e ra d o r d e c re m e n to

E s te o p e ra d o r

es lo c o n tra rio al a n te rio r, es d e cir, d is m in u y e e n 1 el v a lo r q u e te n g a la v a ria b le ,


c o m o e n el s ig u ie n te caso:
a =9;
a--;

de ig u a l m a n e ra s e le a s ig n a u n 9 a la v a ria b le a y p o ste rio rm e n te s e re d u c e su


v a lo r q u e d a n d o c o n v a lo r d e 8.
L o s o p e ra d o re s ++ y - - s e p u e d e n u s a r c o m o p refijo s o su fijo s: s e p u e d e n u sa r
an tes o d e sp u s d e la v a ria b le y a u n q u e e n a m b o s c a so s s ta s e in c re m e n ta o
re d u c e e n 1, e x is te c ie rta d ife re n c ia e n la fo rm a d e u tiliz a rlo s .
V eam os lo s sig u ie n te s e je m p lo s:
1)

a =W;

2)

X=++a;

a =10
x=a++;

E n el e je m p lo 1 la v a ria b le x re c ib e u n 11, p o rq u e a p rim e ro s e in c re m e n ta y lu e g o


se a sig n a . E n el e je m p lo 2 x re c ib e u n 10, y a q u e p rim e ro s e a s ig n a el v a lo r d e a y
p o ste rio rm e n te s e in c re m e n ta .

2.4 O peradores relacinales


E sto s o p e ra d o re s s e u tiliz a n p a ra e x p re s a r c o n d ic io n e s e n lo s p ro g ra m a s y a s
d e te rm in a r el o rd e n e n q u e s e e je c u ta r n las in s tru c c io n e s ; u n a c o n d ic i n e n C es
u n a e x p re s i n b o o le a n a c u y o re s u lta d o p u e d e s e r n ic a m e n te v e rd a d e ro o fa ls o .
L a ta b la 2 .4 m u e s tra lo s o p e ra d o re s re la c i n a le s.

www.FreeLibros.me

Captulo 2

A ritm tica d e C

Ta b l a 2.4 Operadores relacinales


Operador

D e s cr ip ci n

<

menor que

<=

menor o i g u a l que

>

mayor que

>=

mayor o i g u a l que

==

i g u a l que

!=

no i g u a l

que ( d i f e r e n t e

de)

E sto s o p e ra d o re s a c t a n c o n d o s o p e ra n d o s q u e p u e d e n s e r v a ria b le s , c o n sta n te s ,


e x p re sio n e s a ritm tic a s o fu n c io n e s, y el re s u lta d o o b te n id o es u n v a lo r e n te ro , ya
q u e v e rd a d e ro s e re p re s e n ta c o n u n 1 y fa ls o c o n el v a lo r 0. C u a n d o u n a e x p re si n
p u e d e d a r c o m o re s u lta d o s lo v e rd a d e ro o falso , s e le lla m a e x p r e s i n l g ic a o
b o o le a n a . A c o n tin u a c i n s e m u e s tra u n e je m p lo :
si

a.=10) y b=5

Operacin

Descripcin

Resultado

a <b

a menor qu e b

Falso

(0)

a <= b

a menor o i g u a l qu e b

Falso

(0)

a > b

a mayor que b

V e r d a d e r o (1)

a >= b

a mayor o i g u a l qu e b

V e r d a d e r o (1)

a == b

a i g u a l qu e b

Falso

a != b

a diferen te

V e r d a d e r o (1)

de b

(0)

2.5 O peradores lgicos


L o s o p e ra d o re s l g ic o s && y 11 a c t a n c o n d o s o p e ra n d o s; el o p e ra d o r / , c o n un
o p e ra n d o . S e re q u ie re q u e s e a n e x p re sio n e s l g ic a s , g e n e ra lm e n te fo rm a d a s co n
los o p e ra d o re s re la c i n a le s.
L o s o p e ra d o re s l g ic o s s irv e n p a ra u n ir m s d e u n a c o n d ic i n e n u n p ro g ra m a y
p o d e r a s fo rm a r c o n d ic io n e s m s c o m p le ja s , c u y o re s u lta d o ta m b i n p u e d e se r
n ic a m e n te c ie rto o falso , la ta b la 2.5 m u e s tra lo s o p e ra d o re s l g ic o s.

www.FreeLibros.me

2.6 O p e ra d o r co n d icio n a l

I b l a 2.5 O peradores lgicos


Operador

D e s cr ip ci n
Y (and) E l

&&

r e s u l t a d o de una o p e r a c i n y l g i c a s e r

v e r d a d e r o s i ambos o p e r a n d o s son v e r d a d e r o s , de l o
con tra rio,
0 (or) E l

II

ser fa lsa .
r e s u l t a d o de una o p e r a c i n o l g i c a

v e r d a d e r o s i a l g u n o de l o s
son v e r d a d e r o s ; s i
No ( n o t ) E l

t o d o s so n f a l s o s ,

dos

ser fa ls a .

r e s u l t a d o de una o p e r a c i n no l g i c a

ser verdadero s i
con tra rio,

operandos o l o s

ser

ser

el

o p e ra nd o es f a l s o ,

slo

de l o

verdadero.

E je m p lo d e l re s u lta d o d e l u so d e o p e ra d o re s l g ic o s.
si

a=1@, b=5,

c=10 y d=3

Operacin

D e s cr ip ci n

Resultado

(a<b)&&(a==c)

a no es menor qu e b

Falso

(a>b)&&(a>=d)

(a==c) || ( c 1 = d)

(d>c) || (b>a)

(c>=d) || (c>a)

(Q>)

a si

es i g u a l

a si

es mayor qu e b

V e r d a d e r o (1)

a si

es mayor o i g u a l qu e d

la s

a si

es i g u a l

V e r d a d e r o (1)

c si

es d i f e r e n t e de d

que c

que c

l a p r i m e r a no s e cumpl e

la s

d o s s e cumplen

d o s s e cumplen

d no es mayor c

Falso

b no es mayor qu e a

n i n g u n a s e cumple

c si

Verdadero ( 1 )

es mayor o i g u a l qu e d

c no es mayor qu e a

((d)

l a primera s

s e cumple

2.6 O perador condicional


E ste o p e ra d o r s e u tiliz a p a ra e x p re s a r c o n d ic io n e s e n u n p ro g ra m a y p u e d e
su stitu ir a la e s tru c tu ra d e c o n tro l

if-e is e

q u e s e e x p lic a m s a d e la n te . El

o p e ra d o r re q u ie re u n a e x p re si n l g ic a , la c u a l s e e v a l a y d e p e n d ie n d o si es
v e rd a d e ra o fa ls a s e e je c u ta n in stru c c io n e s d is tin ta s , el fo rm a to es el sig u ie n te :
< e x p r e s i n 1> ? < e x p r e s i n 2> : < e x p r e s i n 3>

www.FreeLibros.me

30

Captulo 2

A ritm tica d e C

donde
< expresin

1 > es

la c o n d ic i n q u e s e e v a l a (d e b e s e r u n a e x p re s i n b o o le a n a ), si

es v e rd a d e ra , s e e je c u ta r lo in d ic a d o e n < expresin

2 >;

p e ro si < expresin

1 > es

falsa, e n to n c e s s e e je c u ta r < expresin 3>.


S i a es u n a v a ria b le d e tip o e n te ro . C u l s e r el re s u lta d o d e la sig u ie n te
e x p re si n c o n d ic io n a l?
(a> 10 ) ?

: 0;

d e p e n d ie n d o d e l v a lo r q u e s e le h a y a a s ig n a d o a la v a ria b le a , s e r el v a lo r de
to d a la e x p re s i n c o n d ic io n a l. P o r e je m p lo si a tie n e u n v a lo r d e 11 o m ay o r, el
re su lta d o s e r 1; si la v a ria b le tie n e a lm a c e n a d o u n 10 o m e n o s, el re s u lta d o se r
u n 0. S e m u e s tra el sig u ie n te e je m p lo :
a =3; b -4 ;
c = (a>b) ? a+b : a*b;
A q u el re s u lta d o d e la e x p re s i n c o n d ic io n a l s e a s ig n a a la v a ria b le c. P rim e ro se
ev al a si a es m a y o r q u e b; c o m o e n e s te c a s o el re s u lta d o es fa ls o , s e e je c u ta la
e x p re si n q u e e s t d e sp u s d e : (d o s p u n to s ), es d e cir, la m u ltip lic a c i n d e a p o r b ,
c u y o re s u lta d o es 12, el c u a l es a lm a c e n a d o e n la v a ria b le c.
Si c a m b i ra m o s lo s v a lo re s d e a y b p o r 8 y 6 re sp e c tiv a m e n te , el re s u lta d o d e la
a sig n a c i n a c s e ra 14. S e e v a l a si a es m a y o r q u e b , y c o m o es v e rd a d e ro , se
e je c u ta la e x p re s i n q u e e s t d e sp u s d e l s ig n o ?; la s u m a d e a y b.

2.6.1 Prioridad de operadores


A c o n tin u a c i n s e m u e s tra la ta b la 2 .6 c o n la lis ta d e o p e ra d o re s q u e s e h an
e x p lic a d o e n o rd e n d e p rio rid a d .

Ta b l a 2.6 O peradores y su prioridad


O p e ra d o r
< )
&&

l
++,

--

*, / , %

?:

<# <=,

+=,

*=, /=, =

>=

www.FreeLibros.me

Resumen

C a b e a c la ra r q u e sto s n o s o n lo s n ic o s o p e ra d o re s c o n q u e c u e n ta C . E s te
le n g u a je o p e ra c o n m u c h o s o tro s q u e s e u tiliz a n p a ra d is tin to s p ro p sito s;
c o m o el p re s e n te es u n te x to in tro d u c to rio , s e e s tu d ia r n n ic a m e n te los
m e n c io n a d o s.

Ej e m p l o 2.2 Calcule el resultado de la siguiente expresin


X= 3 * a + ( - - a ) - ( - a - 2 ) * 2 / 3

P ra a = 4 s e re s o lv e r as:
X=12+(--a)-(-a-2)*2/3
X=12+(3)- ( - a - 2 ) *2/3
X = 1 2+ 3 -( -3 -2 )* 2 /3
X=12 + 3 - ( - 5 ) * 2 / 3
X=12+3+5*213
X=12+3+10/3
X=12+3+3.3
X=15+3.3
X=18.3

Resum en
E n e s te c a p tu lo s e a n a liz a ro n lo s o p e ra d o re s q u e e x is te n e n el le n g u a je C . U n
o p e ra d o r es u n s m b o lo q u e in d ic a al c o m p ila d o r el tip o d e o p e ra c i n q u e se
lle v a r a c a b o so b re lo s d a to s ; lo s m s u su a le s s o n lo s a ritm tic o s , re la c i n a le s y
l g ico s. A l re la c io n a rlo s c o n lo s d a to s s e fo rm a n e x p re sio n e s.
E x is te n d o s tip o s d e e x p re sio n e s: a ritm tic a s y l g ic a s . U n a e x p re s i n a ritm tic a
es a q u e lla c u y o re s u lta d o es u n v a lo r n u m ric o . U n a e x p re s i n l g ic a p o d r te n e r
c o m o re s u lta d o s lo c ie rto o falso .
Al u tiliz a r lo s o p e ra d o re s es n e c e sa rio to m a r e n c u e n ta la s p rio rid a d e s q u e
m a te m tic a m e n te tie n e n sto s.
El o p e ra d o r d e a s ig n a c i n s e u tiliz a p a ra a s ig n a r v a lo r a u n a v a ria b le . E l le n g u a je
C o fre c e a lg u n o s o tro s o p e ra d o re s d e a s ig n a c i n p ro p io s d e l le n g u a je q u e lle v a n
im p lc ita s o p e ra c io n e s a ritm tic a s c o m o +=, -= e n tr e o tro s.

www.FreeLibros.me

31

32

Captulo 2

A ritm tica d e C

Evaluacin
I. C onteste las siguientes preguntas.
1. U n ___________________ es u n s m b o lo q u e le in d ic a al c o m p ila d o r c m o se
h a n d e m a n e ja r lo s d ato s.
2 . L a ___________________

c o n s is te e n a s ig n a r u n v a lo r a u n a v a ria b le a n te s de

u tiliz a rla e n u n p ro g ra m a .
3 . C u l d e las s ig u ie n te s es u n a o p e ra c i n d e a sig n a c i n ?
a) 5=x

b) X --5

c) x+=5

d ) x-5

4. Q u s ig n ific a q u e u n o p e ra d o r s e a b in a rio o u n a rio ?


5 . E l o p e ra d o r ___________________ s e p u e d e u s a r s lo s o b re d a to s e n te ro s.
6 . C u l o p e ra d o r s e u tiliz a p a ra d e fin ir p rio rid a d e s c u a n d o e n u n a e x p re si n
c o in c id e n o p e ra d o re s d e l m is m o nivel je r rq u ic o ?
a) ( )

b) { }

c) i j

d ) &&

7 . H o p e ra d o r in c re m e n to s e e s c rib e ___________________ y s e u tiliz a c u a n d o se


q u ie re s u m a r u n o a la s v a ria b le s.
8 . L o s o p e ra d o re s ____________________ s e u tiliz a n p a ra u n ir c o n d ic io n e s e n los
p ro g ra m a s.
9 . C u a n d o s e c o m b in a n o p e ra d o re s re la c i n a le s y l g ic o s e n u n a e x p re si n , sta
p u e d e te n e r c o m o re s u lta d o s lo c ie rto o fa ls o , lo c u a l s ig n ific a q u e es u n a
e x p re si n d e tip o ___________________ .
10. O p e ra d o r q u e e v a l a u n a c o n d ic i n y d e p e n d ie n d o si es c ie r ta o fa ls a e je c u ta
u n a d e te rm in a d a in s tru c c i n u o t r a ____________________

n . E scriba el resultado del siguiente ejercicio.


H include

<stdio.h >

H i n d de < s t d l i b . h >

mai n( )

{
i n t j =4, k = 3 , i = 2 ;

www.FreeLibros.me

33

Ejercicios p ro p u e s to s

float x=1. 5 ,

z = 2 . 4,

t;

t=( ( f l o a t ) ( j * k ) / 2 ) ;
t++;
x*=++z;
t - = (x+=++i) ;
p r i n t f ( u\n e l

v a l o r de t

e s 96 f \ n u, t ) ;

getch();
return

0;

Ejercicios propuestos
I. Q u resultado se im prim e en los siguientes program as?
1.
H i n d de < s t d i o . h >

mai n( )

{
in t

a,b,c=3,d=2;

a= 8 - 5 * 3

+ 2;

b= 7%3 + 4 * 2;
p rin tf("

v a l o r de a % d \ t v a l o r de b %d\n" , a , b ) ;

b%=a;
p r i n t f f " v a l o r de b %c/\t \ n n, b ) ;

____

b=( - 4 ) 963;
p r i n t f f " v a l o r de b % d \ t \ n * , b ) ;

2.
H i n d de < s t d i o . h >

mainf)

{
in t

c=3, d=2;

c -= d++ * 3;

www.FreeLibros.me

____

34

Captulo 2

p rin tf("

A ritm tica d e C

v a l o r de c 96 d \ t v a l o r de d 9&d\n" , c , d ) ;

____________

s y s t e m ( " p a u s e ") ;

3.
include

<stdio.h >

mai n( )

{
i n t c= 3,l;
c = (c

* 2 - (1 = 4,

- 1));

v a l o r de c %d\t v a l o r de 1 %d\n , c , l ) ; ______________

p rin tf("
g e t c h f );
return

0;

4.
ttinclude

<stdio.h >

include

<c o ni o. h >

mai n( )

{
in t

a=7, b - 3 ,

c=2,

resultado;

resultado

= ( ( b 96C) 2 ) +1 ;

resultado

-= a;

r e s u l t a d o %= ++a;
p rin tf("\n

el

v a l o r de r e s u l t a d o

= %c/\t a= %c/ ", r e s u l t a d o , a ) ;

getch();
return

0;

www.FreeLibros.me

Ejercicios p ro p u e s to s

E scriba el resu ltado de la siguiente expresin, considerando los valores.


P a ra a = 2 , 6 = 3, c = 4 ,

d =

1.

a+b*c/d

2.

a % 5 % 2 + c

3.

(a+b) *c % d

4.

( d<65)&&(3==d)

5.

a<=b || (3>a)

6.

(c<=7+d) || (7>c)

7.

(a>=d) && ( 2 - 1 4==c+1)

8.

a % d %

9.

3+5*d % 10

10.

a/b %

11.

-a*7

12.

(a>d) && (b<c)

13.

( (a>b)

14.

|| (a>=b))

15.

( (a>=b) || (a<d))

16.

( (a>=d) && (c>d))

17.

I (a<=c)

|| (d>5)

|| ( a<c ))

&& ( (a=c)

&& 16.

|| (c>d)

www.FreeLibros.me

www.FreeLibros.me

Programacin
estructurada

E n e s te c a p tu lo s e d e sc rib e n la s p a rte s d e u n p ro g ra m a y la e s tru c tu ra de


co n tro l b s ic a se c u e n c ia l c o m o in ic io p a ra la c re a c i n d e p ro g ra m a s.
L a p ro g ra m a c i n e s tru c tu ra d a es u n a t c n ic a p a ra c re a r p ro g ra m a s
sig u ie n d o c ie rta s reg la s q u e p e rm ite n m o d ific a rlo , le e rlo y m a n te n e rlo
f c ilm e n te . E n tre la s c a ra c te rstic a s p rin c ip a le s d e e s ta m e to d o lo g a se
in clu y e el e m p le o d e e s tru c tu ra s d e c o n tro l q u e r e a liz a n a c c io n e s so b re
las e s tru c tu ra s d e d a to s, la s c u a le s s e e x p lic a n m s a d e la n te . E l p ro g ra m a
d e b e te n e r u n a s o la e n tra d a y u n a s o la sa lid a .

3.1 Estructura de un program a en C


El p ro g ra m a c o n s ta g e n e ra lm e n te d e v a ria s fu n c io n e s. U n a fu n c i n
es u n s u b p ro g ra m a c o n u n a ta re a e sp e c fic a . E s to s su b p ro g ra m a s

www.FreeLibros.me

Captulo 3

Prog ram aci n estructurada

(g e n e ra lm e n te p e q u e o s) s e d is e a n c o n el fin d e u tiliz a rs e n o s lo u n a v e z n i e n
un s o lo p ro g ra m a , s in o la s v e c e s q u e s e re q u ie ra n y e n c u a lq u ie r p ro g ra m a .
El le n g u a je C p ro p o rc io n a fu n d a m e n ta lm e n te d o s fo rm a s d e m a n e jo d e fu n cio n e s:
las in te rn a s y la s e x te rn a s.
L as fu n c io n e s in te rn a s s o n la s y a im p le m e n ta d a s e in c o rp o ra d a s e n el le n g u a je
de p ro g ra m a c i n . P a ra p o d e r h a c e r u so d e e lla s , es n e c e s a rio in c lu ir el
a rc h iv o d e c a b e c e ra e s t n d a r c o rre s p o n d ie n te (ta m b i n lla m a d a b ib lio te c a ) al
q u e c o rre s p o n d a c a d a fu n c i n . L a fo rm a d e h a c e r e s to es e s c rib ie n d o la d ire c tiv a
Uinciude

g e n e ra lm e n te al p rin c ip io d e u n p ro g ra m a . L a ta b la 3.1 m u e s tra los

a rc h iv o s d e c a b e c e ra q u e u tiliz a re m o s e n e s te lib ro :
Ta b l a 3.1 Bibliotecas de C
A r c h i v o d e cabecera

Descripcin

stdio .h

C o n t i e n e f u n c i o n e s de e n t r a d a y s a l i d a

conio.h

C o n t i e n e f u n c i o n e s de c o n s o l a qu e s i r v e n p a r a

de d a t o s .

i n t e r a c t u a r c on d i s p o s i t i v o s como l a p a n t a l l a y l o
el

teclado.

m at h. h

C on tien e f u n c i o n e s matemticas y t r i g o n o m t r i c a s .

strin g .h

C o n t i e n e f u n c i o n e s p a r a e l manejo de c adenas de t e x t o .

N o s e e x p lic a r n to d a s la s fu n c io n e s d e c a d a u n o d e e sto s a rc h iv o s d e b id o a q u e
c a d a u n o in c o rp o ra u n a g ra n c a n tid a d d e e lla s y el te m a e s t fu e ra d e l a lc a n c e de
este lib ro , p e ro s e e s tu d ia r n las m s u sa d a s y s e ir n e x p lic a n d o c o n e je m p lo s
c o n fo rm e a v a n c e m o s e n lo s te m a s; a d e m s e x is te n o tra s b ib lio te c a s c o n fu n c io n e s
qu e n o s e tra ta r n e n el tex to .
L as b ib lio te c a s d e l e s t n d a r son:
l c a l e . h , m ath.h, s e t jm p .h ,
s t d l i b . h , s t r i n g . h , tim e.h.

assert.h,

sig n a l.h ,

ctype.h,

stdarg.h,

e r r n o . h , float.h, l i m i t s . h ,
stddef.h,

std io .h ,

E n la d ire c c i n e le c tr n ic a , w w w .a c m .u iu c .e d u , es

p o sib le re v is a r la s fu n c io n e s q u e s e e n c u e n tra n e n c a d a b ib lio te c a , a s c o m o su


sin tax is y fu n c io n a m ie n to .
P e ro ta m b i n e x is te n la s fu n c io n e s e x te rn a s o d e fin id as p o r el u su a rio , q u e p u e d e n
se r d ise a d a s p o r c a d a p ro g ra m a d o r d e a c u e rd o c o n su s p ro p io s re q u e rim ie n to s .
El te m a d e las fu n c io n e s e x te rn a s s e tra ta c o n m s d e ta lle e n el c a p tu lo 8,
d e d ic a d o a la s m ism a s.
Es p o s ib le u tiliz a r e n u n p ro g ra m a m ltip le s fu n c io n e s, p e ro s ie m p re d e b e h a b e r
u n a fu n c i n p rin c ip a l, d e la c u a l d e p e n d e el c o n tro l d e l p ro g ra m a c o m p le to .

www.FreeLibros.me

3.1 Estructura de un programa en C

E n el c a s o d e C s e u tiliz a u n a fu n c i n lla m a d a

main( ) .

s ta c o n s titu y e el

p ro g ra m a p rin c ip a l y d e sd e a h s e p u e d e h a c e r u so ta n to d e la s fu n c io n e s in te rn a s
c o m o d e la s e x te rn a s.
L a e s tru c tu ra o s in ta x is d e u n p ro g ra m a c re a d o e n C s e m u e s tra a c o n tin u a c i n en
un p rim e r p ro g ra m a e le m e n ta l.
E je m p lo 3.1 Estructura mnima de un programa en lenguaje C, versin 1
/ * e s t r u c t u r a de un p r o gr am a en C. */
# i n c l u d e < s t d i o . h>
void main( )

{
p r i n t f ( " M i p r i m e r program a");

L a p rim e ra ln e a es u n c o m e n ta rio o p c io n a l (p u e d e in c lu irs e o n o ), y a q u e se


e n c u e n tra e n tre lo s c a ra c te re s /* y * /. R e c u e rd e q u e lo s c o m e n ta rio s s o n u n a
e x p lic a c i n d e l p ro g ra m a y s o n ig n o ra d o s p o r el c o m p ila d o r; e n e s te c a s o s e tra ta
d e u n a n o ta a c e rc a d e la e s tru c tu ra d e l p ro g ra m a .
L a d ire c tiv a tt inciude de la se g u n d a ln e a es n e c e s a ria p a ra q u e el p ro g ra m a te n g a
a c c e so a la s fu n c io n e s d e l a rc h iv o s t d i o . h e n el q u e s e p ro p o rc io n a la in fo rm a c i n
rela tiv a a la fu n c i n p r i n t f ( ) q u e s e u tiliz a e n la q u in ta ln e a . O b s e rv e q u e los
sm b o lo s < y > n o s o n p a rte d e l n o m b re d e l a rc h iv o ; s e u tiliz a n s lo p a ra in d ic a r
q u e el a rc h iv o s e e n c u e n tra e n la b ib lio te c a e s t n d a r s t d i o . h .
L a te rc e ra ln e a c o n tie n e la c a b e c e ra d e la fu n c i n p rin c ip a l main( ; , s ta in d ic a al
c o m p ila d o r el c o m ie n z o d e l p ro g ra m a y re q u ie re lo s p a r n te s is ( ) a c o n tin u a c i n
d e main. P e ro ta m b i n e s t a n te c e d id a p o r la p a la b ra re s e rv a d a v o i d , q u e es un
e sp e c ific a d o r d e tip o q u e in d ic a q u e u n a fu n c i n n o d e v u e lv e v a lo r. E s to se
e n te n d e r m e jo r c u a n d o s e h a y a e s tu d ia d o el c a p tu lo d e la s fu n c io n e s d e fin id as
p o r el u su a rio ; p o r lo p ro n to s e re c o m ie n d a u tiliz a r la p a la b ra v o i d a n te s d e main ,
a u n q u e c a b e s e a la r q u e n o es o b lig a to ria , s in e m b a rg o , si s e o m ite o s e tra b a ja en
un c o m p ila d o r q u e n o a d m ita e sta p a la b ra re s e rv a d a , e n to n c e s s e d e b e r u tiliz a r la
p a la b ra r e t u r n q u e s e e x p lic a e n la se g u n d a v e rsi n .
L a c u a rta y se x ta ln e a s c o n tie n e n lo s sm b o lo s { y } q u e e n c ie rra n el c u e rp o
d e la fu n c i n main( ) y a g ru p a n las in s tru c c io n e s a e je c u ta r; s o n n e c e sa rio s e n
to d o s lo s p ro g ra m a s p a ra in d ic a r el in ic io y fin re s p e c tiv a m e n te . E n e s te e je m p lo

www.FreeLibros.me

Captulo 3

se e n c u e n tra la in s tru c c i n

Prog ram aci n estructurada

p rin tf(

),

d a n d o s a lid a a la c a d e n a

M i p rim e r p ro g ra m a . O tra fo rm a d e s in ta x is d e u n p ro g ra m a p o d ra ser:


Ej e m p l o 3.2 Estructura mnima de un programa en lenguaje C, versin 2
l * e s t r u c t u r a de un programa en C . * /
# i n c l u d e < s t d i o . h>
mai n( )

{
p r i n t f ( " M i p r i m e r program a");
return 0 ;

A u n q u e fin a lm e n te e s te p ro g ra m a b rin d a el m is m o re s u lta d o , h a y a lg u n a s


d ife re n c ia s q u e ta l v e z a p rim e ra v is ta p a re z c a n im p e rc e p tib le s , p e ro q u e v a le la
p e n a o b serv ar.
L a d ife re n c ia e m p ie z a e n la te r c e r a ln e a , y a q u e e n e lla s e o m iti la p a la b ra
m o tiv o p o r el c u a l e n la s e x ta ln e a s e tu v o q u e h a c e r u so d e la in s tru c c i n
0.

vo id ,

return

E s ta in s tru c c i n in d ic a q u e te rm in a la e je c u c i n d e l p ro g ra m a y d e v u e lv e el

c o n tro l al s is te m a o p e ra tiv o d e la c o m p u ta d o ra , el 0 s e u tiliz a p a ra s e a la r q u e


el p ro g ra m a h a te rm in a d o . S i s e o m ite e s ta in s tru c c i n , lu e g o d e la c o m p ila c i n ,
C m o s tra r u n a a d v e rte n c ia ( w a r n i n g ) in d ic a n d o q u e la fu n c i n d e b e ra re g re sa r
un valor.
L o a n te rio r s e d e b e a q u e si s e o m ite el in d ic a d o r d e t ip o d e u n a fu n c i n , sta
to m a el v a lo r d e e n te ro p o r d e fe c to , es d e cir, s e e s p e ra q u e re g re s e u n e n te ro , p e ro
c o m o e n e s te c a s o n o h a y n a d a q u e re g re sa r, s e u s a

return 0.

O b se rv e ta m b i n q u e c a d a in s tru c c i n fin a liz a c o n p u n to y c o m a ( ; ) , y a q u e e ste


sm b o lo in d ic a el final d e la s se n te n c ia s.

3.2 Directivas del preprocesador


El p re p ro c e s a d o r fo rm a p a ite d e l le n g u a je C y s e e n c a rg a d e lle v a r a c ab o
u n a e ta p a q u e a n te c e d e a la fa s e d e c o m p ila c i n . P re v ia m e n te a la tra d u c c i n
del p ro g ra m a p rin c ip a l, s e in stru y e al c o m p ila d o r p a ra q u e e je c u te e le m e n to s
d e n o m in a d o s d ire c tiv a s o d ire c tric e s d e p ro c e s a m ie n to . L as d o s d ire c tiv a s m s
u su a le s s o n ttdefine e H i n c l u d e .

www.FreeLibros.me

3.3 Estructuras d e co n tro l

Ya s e h a n m e n c io n a d o la s d o s d ire c tiv a s a n te rio rm e n te : la p rim e ra v e z c u a n d o


se h a b l d e la s c o n sta n te s , y a q u e ttdefine p e rm ite s u s titu ir u n s m b o lo p o r u n a
s e c u e n c ia c u a lq u ie ra d e c a ra c te re s ; y a s e e x p lic q u e el p re p ro c e s a d o r a n tes
d e la c o m p ila c i n s u s titu y e d ic h a c a d e n a d e c a ra c te re s p o r el v a lo r q u e le fu e
d efinido.
L a d ire c tiv a tt inciude p e rm ite al c o m p ila d o r te n e r a c c e s o al a rc h iv o fu e n te q u e
v ie n e a c o n tin u a c i n ; re c o rd e m o s q u e e sto s a rc h iv o s s e d e n o m in a n a rc h iv o s d e
c a b e c e ra o d e in c lu si n .
L o s a rc h iv o s d e c a b e c e ra g e n e ra lm e n te tie n e n la e x te n s i n .h y c o n tie n e n c d ig o
fu e n te e n C .
E sto s a rc h iv o s s e e n c u e n tra n u s u a lm e n te e n el c o m p ila d o r. E n re a lid a d , la
d ire c tiv a d e l p re p ro c e s a d o r m e z c la u n a rc h iv o fu e n te e n s u p ro g ra m a fu en te .
R e g u la rm e n te , lo s p ro g ra m a d o re s d e C sit a n la s d ire c tiv a s d e l p re p ro c e s a d o r
al p rin c ip io d e l p ro g ra m a , a u n q u e e s ta p o s ic i n n o es o b lig a to ria . A d e m s, el
o rd e n d e lo s a rc h iv o s d e c a b e c e ra n o im p o rta c o n ta l q u e s e in c lu y a n a n te s de
q u e s e u tilic e n la s fu n c io n e s c o rre sp o n d ie n te s. L a m a y o ra d e lo s p ro g ra m a s C
in c lu y e n to d o s lo s a rc h iv o s d e c a b e c e ra n e c e sa rio s a n tes d e la p rim e ra fu n c i n
del arch iv o .
L a d ire c tiv a tt inciude p u e d e a d o p ta r u n o d e los s ig u ie n te s fo rm a to s:
t tinciude <stdio.h>
ttinciude

"pru eba s. h"

L a p rim e ra fo rm a , es d e c ir el n o m b re d e l a rc h iv o e n tre < > in d ic a q u e lo s


arch iv o s s e e n c u e n tra n e n el d ire c to rio p re d e te rm in a d o i n c i u d e . E l se g u n d o
e je m p lo m u e s tra q u e el a rc h iv o e s t e n el d ire c to rio a c tu a l, d o n d e s e e n c u e n tra
el p ro g ra m a fu e n te . E sto s m to d o s n o s e e x c lu y e n , y p u e d e n e x is tir e n el m is m o
p ro g ra m a a rc h iv o s d e c a b e c e ra e s t n d a r u tiliz a n d o c o rc h e te s a n g u la re s (<_>) y
o tro s a rc h iv o s d e c a b e c e ra u tiliz a n d o c o m illa s .

3.3 Estructuras de control


U n p ro g ra m a e s t c o m p u e s to p o r e s tru c tu ra s d e c o n tro l y p o r e s tru c tu ra s d e d ato s.
El p ro g ra m a in ic ia c o n la s p rim e ra s , la s e stru c tu ra s d e c o n tro l, q u e g u a n el o rd e n
d e e je c u c i n . S o n tre s las e s tru c tu ra s d e c o n tro l b sic a s: s e c u e n c ia c i n , se le c c i n
e ite ra c i n .

www.FreeLibros.me

Captulo 3

Prog ram aci n estructurada

3.3.1 Secuenciacin
Es u n a e s tru c tu ra d e c o n tro l e n la q u e las in s tru c c io n e s s e e je c u ta n u n a d e sp u s
de o tra e n el o rd e n e n el q u e s e e n c u e n tra n e s c rita s e n u n p ro g ra m a . E l fo rm a to d e
u n a s e c u e n c ia c i n es:
in stru cci n

1;

in stru cci n

2;

i n s t r u c c i n n;

d o n d e n es in fin ito ; la s in stru c c io n e s s e v a n e je c u ta n d o d e sd e la p rim e ra h a sta


la e n sim a in s tru c c i n , u n a a una.
U n p ro g ra m a q u e s e d is e a n ic a m e n te m e d ia n te e s ta e s tru c tu ra d e c o n tro l,
g e n e ra lm e n te te n d r c o m o in s tru c c io n e s e n tra d a s d e d a to s, a sig n a c io n e s
de c lc u lo s re a liz a d o s c o n lo s d a to s d e e n tra d a y s a lid a s d e n u e v o s d ato s.
A c o n tin u a c i n s e p re s e n ta n a lg u n o s e je rc ic io s re su e lto s.

Ejercicios resu eltos

Eje r c ic io 3.1 Calcule el prom edio de edad de tres personas

Descripcin
S o lic ita r la s tre s e d ad e s.
A p lic a r la o p e ra c i n d e p ro m e d io .
M o stra r el re su lta d o .

Vari abl es
Nombre

Tipo

Uso

E1

Entero

P r i m e r a edad.

E2

Entero

Segunda edad.

E3

Entero

T e r c e r a edad.

Prom

Entero

Resultado.

www.FreeLibros.me

3.3 Estructuras d e co n tro l

Codificacin
/ *P r om ed i o de 3 e d ad es * /
t t i n c l u d e < s t d i o . h>
tinclude< conio.h>

mai n( )

{
in t

e1,e2,e3;

float prom;
p rin tf("T e cle a la

e d ad de l a p r i m e r a p e r s o n a

");

e d ad de l a

");

s c a n f ( " % d " , & e 1) ;


p rin tf("T e cle a la

s egu nda p e r s o n a

scanf("% d",&e2 );

p r i n t f ( " T e c l e a l a e d a d de l a t e r c e r a p e r s o n a " ) ;
s c a n f ( " 96 d " , & e 3 ) ;
prom=(e1+e2+e3)/3;

l * t e n e r siempre p r e s e n te l a p re c e d e n c ia

de o p e r a d o r e s */
p r i n t f ( " E l p r o m e d i o de e d ad de l a s

3 p e r s o n a s e s %f ",

prom);

Explicacin
L a p rim e ra ln e a , e n c e rra d a e n tre /* y * /, es u n c o m e n ta rio , n o es u n a
in stru c c i n . L a p rim e ra p a rte d e e ste p ro g ra m a es la in c lu s i n d e l a rc h iv o de
c a b e c e ra s t d i o . h p a ra p o d e r u s a r la s fu n c io n e s p r i n t f y s c a n f ; ta m b i n se
in clu y e la b ib lio te c a

conio.h

y a u n q u e e n e s te e je m p lo n o s e u tiliz a n in g u n a

fu n c i n d e s ta n o a fe c ta s u e je c u c i n .
Es m u y fc il id e n tific a r c u l s e r el o rd e n e n q u e s e e je c u ta r n e sta s in stru c c io n e s:
se p id e la p rim e ra e d ad , s e a lm a c e n a e n e ; s e s o lic ita la se g u n d a e d a d y s e g u a rd a
en

e2\

p o ste rio rm e n te s e p id e la te r c e r a e d a d y s e a lm a c e n a e n

el c lc u lo y s e a s ig n a a

prom

e3;

d e s p u s s e h a ce

(e n e s ta m is m a ln e a h a y u n c o m e n ta rio , re c u e rd e q u e

ste es tra n s p a re n te p a ra el c o m p ila d o r) y p o r ltim o s e im p rim e el p ro m e d io de


las e d ad e s.
L a se c u e n c ia c i n p a re c e se n c illa y e n re a lid a d lo es, sin e m b a rg o , s e tra ta d e u n a
e stru c tu ra d e c o n tro l ta n im p o rta n te q u e p re v a le c e e n to d o s lo s p ro g ra m a s, p o r m u y
gran d es o p e q u e o s q u e se a n . Y a q u lo re a lm e n te im p o rta n te c o n siste e n e n c o n tra r
la s e c u e n c ia e x a c ta p a ra q u e lo s p ro g ra m a s fu n c io n e n d e m a n e ra e ficien te.
(contina)

www.FreeLibros.me

Captulo 3

Prog ram aci n estructurada

(continuacin )

Ejecucin
Teclea l a

edad de

l a prim erapersona

Teclea l a

edad de

l a s egu nda p e r s o n a 15

Teclea l a

edad de

l a t e r c e r a p e r s o n a 10

E l p r o m e d i o de

e d ad de l a s

3p e r s o n a s e s 10.00

Eje r c ic io 3.2 Encuentre el rea de un trapecio

Descripcin
S o lic ita r b a s e m en o r, b a s e m a y o r y a ltu ra d e l tra p e c io .
A p lic a r la f rm u la d e l tra p e c io .
M o stra r el re su lta d o .
Variabl es
Nombre

Tipo

Uso

Real

Base menor.

Real

Base mayor.

Real

A ltura.

Real

R esu ltado.

Codificacin
l * A r e a de un t r a p e c i o * /
f t i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

mai n( )

{
float b , B , h , r ;
c l r s c r ( );
p r i n t f f I n s e r t e l a m edi da de l a

base menor\n");

scan fC % f',& b );
p r i n t f f "I n s e r t e l a m edi da de l a

base m ayor\n");

s c a n f f "%f", &B) ;
p r i n t f f "I n s e r t e l a

a ltu ra

de su t r a p e c i o ) ;

s c a n f ( *6fu, & h ) ;

www.FreeLibros.me

3.3 Estructuras d e co n tro l

r=(b+B) *h/2;
p rin tf("E l

a r e a de s u t r a p e c i o e s

%.2 f " , r ) ;

getch();
return 0 ;

Explicacin
A q u , a d e m s d e

std io .h

s e ra o b lig a to rio in c lu ir el a rc h iv o d e c a b e c e ra

y a q u e e n l s e e n c u e n tra n im p le m e n ta d a s la s fu n c io n e s

c irscrf)

con io.h,

getchf).

D espus d e la d e c la ra c i n d e v ariab les s e lim p ia la p an talla, y a q u e a c o n tin u a c i n


est la fu n c i n c i r s c r f ) . L u e g o s e so licitan b a se m ayor, b a se m e n o r y altu ra, q u e se
a lm ac en a n e n su s resp ec tiv a s variab les: b , b , /?. S e asig n a el re su lta d o d e la f rm u la
en la v a ria b le r y fin alm e n te se m u e stra el re su lta d o c o n d o s d e c im a le s , y a q u e
la c a d e n a d e tip o %. 2 f in d ic a q u e e l d a to a im p rim ir es c o n d o s d e c im a le s. E n la
ltim a ln e a s e e n c u e n tra la fu n c i n g e t c h f ) la c u a l e sp e ra q u e se p re s io n e u n a tecla;
esto h a c e q u e el p ro g ra m a n o term in e a b ru p ta m e n te, sin o q u e c u a n d o e je c u ta el
ltim o p r i n t f f ) s e q u e d a r e n p a u sa o e n e sp e ra h a sta q u e s e p re s io n e a lg u n a tecla.

Ejecucin
I n s e r t e l a m edi da de l a

b a s e menor

3.2
I n s e r t e l a m edi da de l a

b a s e mayor

5
Inserte l a

a ltu ra

de s u t r a p e c i o

El re a d e l tra p e c io es 28.7.

Eje r c ic io 3.3 Calcule el salario de un trabajador con el total


de percepciones y deducciones

Descripcin
S o lic ita r c a n tid a d d e h o ra s tra b a ja d a s.
S o lic ita r el s u e ld o q u e s e p a g a p o r c a d a h o ra tra b a ja d a .

www.FreeLibros.me

(c o n tin a )

Captulo 3

Prog ram aci n estructurada

(continuacin)
C a lc u la r e l s u e ld o b ru to .
C a lc u la r el m o n to p o r c o n c e p to d e d e d u c c io n e s.
C a lc u la r el m o n to p o r c o n c e p to d e p e rc e p c io n e s.
C a lc u la r e l s u e ld o neto .
M o stra r lo s re su lta d o s.

Vari abl es
Nombre

Tipo

Uso

Entero

C a n t i d a d de h o r a s t r a b a j a d a s .

Sh

Real

Sueld o p o r h o ra t r a b a j a d a .

Sb

Real

Sueld o b r u t o .

Real

T o t a l de d e d u c c i o n e s .

Real

T o t a l de p e r c e p c i o n e s .

Sn

Real

Sueld o neto.

Codificacin
/*S a l a r i o

de un t r a b a j a d o r *

H include

<stdio.h >

Uinclude

<c o ni o. h >

mai n( )

{
float s n , s b , s h , d , p ;
i n t h;

e lr s e r ();
p rin tf("E scrib a la

c a n t i d a d de h o r a s t r a b a j a d a s : \ n " ) ;

s c a n f ( " * 6d " , & h ) ;


p r i n t f ( " E s c r i b a l a pa g a x h o r a : \ n " ) ;
scanf("% f",&sh);
sb=h*sh;
d=sb*.1 2 ;
p = s b * . 15;
sn=sb+p-d ;

www.FreeLibros.me

3.3 Estructuras d e co n tro l

prin tf("T u

s u e l d o b r u t o e s % . 2 f , \ n t u s d e d u c c i o n e s so n %. 2f ,

\n t u s p e r c e p c i o n e s s on %. 2 f

\n e l n e t o e s 96. 2 f ' ' , s b , d , p , s n ) ;

getch();
return 0 ;

Explicacin
Se s o lic ita la c a n tid a d d e h o ra s tra b a ja d a s a d e m s d e lo q u e s e p a g a p o r c ad a
h ora, y s e a lm a c e n a n e n /? y s /? re s p e c tiv a m e n te . S e c a lc u la el s u e ld o b ru to y se
a sig n a a s b ; p o ste rio rm e n te s e a s ig n a n a la v a ria b le d la s d e d u c c io n e s, la s c u ales
so n el 12% d e l s u e ld o b ru to ; d e ig u a l fo rm a e n p s e g u a rd a n la s p e rc e p c io n e s q u e
co rre sp o n d e n al 15% d e l m ism o sa la rio b ru to . S e c a lc u la el su e ld o n e to q u e c o n siste
en el s u e ld o b ru to m e n o s la s d e d u c c io n e s m s las p e rc e p c io n e s y fin a lm e n te se
m u e stra n la s v a ria b le s c o n lo s re s u lta d o s d e l s u e ld o n e to d e sg lo s a n d o lo s d e m s
c o n c e p to s.

Ejecucin
Escriba l a

c a n t i d a d de h o r a s t r a b a j a d a s :

20
E s c r i b a l a pa g a x h o r a :
40
Tu s u e l d o b r u t o e s 800. 00
t u s d e d u c c i o n e s s on 9 6 .00
t u s p e r c e p c i o n e s s on

120.00

e l n e t o e s 824. 00

Eje r c ic io 3.4 Encuentre el prom edio de cuatro nm eros

Descripcin
S o lic ita r lo s 4 n m e ro s a p ro m e d ia r.
A p lic a r la o p e ra c i n p a ra c a lc u la r el p ro m e d io .
M o stra r el re su lta d o .
(contina)

www.FreeLibros.me

Captulo 3

Prog ram aci n estructurada

(continuacin)
Variabl es
Nombre

Tipo

Uso

Entero o re a l

Primero a p ro m e d ia r.

Entero o re a l

Segundo a p r o m e d i a r .

Entero o re a l

Tercero a p ro m e d ia r.

Entero o re a l

Cuarto a p r o m e d ia r .

tot

Real

R esu ltado.

Codificacin
l * P r o gr a ma p a r a p r o m e d i a r 4 nmeros*/
#include<stdio.h>
# i n c l u d e < c o n i o . h>

main ()

{
float a , b , c , d , t o t ;
c lrs c rO ;
p r i n t f ( " Inserte

el

1er

numero a p r o m e d i a r

el

2 do numero

a promediar

\n\n\a")

el

3 e r numero a p r o m e d i a r

\n\n\a")

el

4tO numero a p r o m e d i a r

\n\n\a")

\n\n\a")

s c a n f ( U96 f u, & a ) ;
p r i n t f f Inserte
s c a n f ( H96 f " , & b ) ;
prin tf("

Inserte

s c a n f ( u% f " , & c ) ;
p r i n t f f " Inserte
s c a n f ( u% f " , & d ) ;
tot=(a+b+c+d) /4;
p r i n t f f ' E l promedio es % . 2 f * , t o t ) ;
getchf);
return

0;

Explicacin
E ste p ro g ra m a fu n c io n a e s e n c ia lm e n te c o m o el p ro m e d io d e la s tre s e d ad es
e x p lic a d o a n te rio rm e n te ; es d e cir, s e s o lic ita n lo s n m e ro s y s e a lm a c e n a n e n a ,

www.FreeLibros.me

3.3 Estructuras d e co n tro l

b, c

y d re s p e c tiv a m e n te ; s e c a lc u la el p ro m e d io y s e a s ig n a a t o t , p o ste rio rm e n te

se m u e s tra la v a ria b le t o t c o n d o s d e c im a le s .
L a d ife re n c ia s e v e ra e n la p re s e n ta c i n d e l p ro g ra m a , y a q u e c a d a v e z q u e
se s o lic ita u n n m e ro a p ro m e d ia r, a v a n z a ra d o s sa lto s d e ln e a y a d e m s se
e sc u c h a ra u n bp .

Ejecucin
Inserte e l

1 e r numero a p r o m e d i a r

3
I n s e r t e e l 2do numero a p r o m e d i a r
5
I n s e r t e e l 3 e r numero a p r o m e d i a r
8

I n s e r t e e l 4 t o numero a p r o m e d i a r
6

E l promedio es 5.50

Eje r c ic io 3.5 Calcule el m onto de las ventas del da de una pastelera

Descripcin
D efin ir el p re c io d e c a d a p ro d u c to o ta m a o d e p a ste l.
S o lic ita r la c a n tid a d d e p a s te le s g ra n d e s, m e d ia n o s y c h ic o s q u e s e v e n d ie ro n .
S o lic ita r ta m b i n la c a n tid a d d e p a n e s v e n d id o s.
C a lc u la r la v e n ta d e l d a m u ltip lic a n d o la c a n tid a d d e c a d a p ro d u c to p o r s u p rec io .
M o stra r el re su lta d o .
Vari abl es
Nombre

Tipo

Uso

Constante r e a l

P r e c i o p o r p a s t e l grande.

Constante r e a l

P r e c i o p o r p a s t e l medi ano.

CH

Constante r e a l

P recio por p a ste l

Constante r e a l

P r e c i o p o r p i e z a de pan.

Entero

Nmero de p a s t e l e s g r a n d e s v e n d i d o s .

chico.

(c o n tin a )

www.FreeLibros.me

50

Captulo 3

Prog ram aci n estructurada

(continuacin)
Vari abl es
Nombre

Tipo

Uso

Entero

Nmero de p a s t e l e s m edi a nos v e n d i d o s .

Ch

Entero

Nmero de p a s t e l e s c h i c o s v e n d i d o s .

Entero

Nmero de p i e z a s de pan v e n d i d o s .

Tot

Real

T o t a l de v e n t a .

Codificacin
/*VENTA DE PASTELES */
tt i n c l u d e < c o n i o . h>
tt i n c l u d e < s t d i o . h >

ttdefine G 150.00
ttdefine M 100.00
Udefine CH 5 0 .00
ttdefine P 2 . 2 0

mai n( )

{
n t g,m ,ch,p;
ftoat t o t ;
clrs c rf);
p r i n t f ( " I n t r o d u z c a e l numero de p a s t e l e s GRANDES v e n d i d o s \ n " ) ;
s c a n f ( "%" , & g ) ;
p r i n t f ( uI n t r o d u z c a e l numero de p a s t e l e s MEDIANOS v e n d i d o s \ n " ) ;
s c a n f ( " M ", &m) ;
p r i n t f ( " I n t r o d u z c a e l numero de p a s t e l e s CHICOS v e n d i d o s \ n " ) ;
s c a n f ( "%" , & c h ) ;
p r i n t f ( " I n t r o d u z c a e l numero de PANES v e n d i d o s \ n u) ;
s c a n f ( " % i u,&p) ;
tot=(G*g)+(M*m)+(CH*ch)+(P*p);
p r i n t f ( uSu v e n t a t o t a l

e s de %. 2 f , t o t ) ;

getch();
return 0;

>

www.FreeLibros.me

3.3 Estructuras d e co n tro l

Explicacin
D e sp u s d e lo s a rc h iv o s d e c a b e c e ra s e d e fin e n la s c o n sta n te s

g,

co n

m, c h , p

sus re sp e c tiv o s v a lo re s, e n lo s c u ales s e a lm a c e n a el p re c io d e lo s d ife re n te s


ta m a o s d e p a ste le s. S e s o lic ita la c a n tid a d d e p a s te le s v e n d id o s g ra n d e s ,
m e d ia n o s , c h ic o s y p a n e c illo s; re s p e c tiv a m e n te s e g u a rd a n e n

g , m, c h y p .

P o s te rio rm e n te s e a s ig n a el re s u lta d o d e l c lc u lo d e l to ta l d e v e n ta s a

tot,

el cu al

c o n siste e n la s u m a d e lo s p ro d u c to s d e l p re c io d e c a d a p a ste l p o r el d e p a ste le s


v e n d id o s. A l final s e m u e s tra el re s u lta d o .

Ejecucin
I n t r o d u z c a e l numero de p a s t e l e s GRANDES v e n d i d o s
9
I n t r o d u z c a e l numero de p a s t e l e s MEDIANOS v e n d i d o s
7
I n t r o d u z c a e l numero de p a s t e l e s CHICOS v e n d i d o s
4
I n t r o d u z c a e l numero de PANES v e n d i d o s
50
Su v e n t a t o t a l

e s de 2 360.00

Eje r c ic io 3.6 Realice las cuatro operaciones bsicas con dos nm eros

Descripcin
P d ir d o s v a lo re s c o n lo s q u e s e lle v a r n a c a b o la s c u a tro o p e ra c io n e s.
S u m a rlo s, re s ta rlo s, m u ltip lic a rlo s y d iv id irlo s, m o s tra n d o c a d a re su lta d o .

Vari abl es
Nombre

Tipo

Uso

Entero o re a l

P r i m e r o p e r an d o.

Entero o re a l

Segundo o p e r an d o.

Codificacin
/ *MINICALCULADORA */
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>

(c o n tin a )

www.FreeLibros.me

Captulo 3

Prog ram aci n estructurada

(continuacin)

main ()

{
float

a,b;

c lrs c rO ;

p r i n t f f " \ n T e c l e a t u p r i m e r numero " ) ;


s c a n t ( u% f " , & a ) ;
p r i n t f ( " \ n T e c l e a t u s egu ndo numero

");

s c a n f ( u% f \ & b ) ;
p r i n t f ( " \nLos r e s u l t a d o s s on : % . 2 f % . 2 f % . 2 f
2f ",a+ b,a-b,a*b,a/b);

getchf);
return 0 ;

Explicacin
E ste e je m p lo in ic ia s o lic ita n d o d o s v a lo re s q u e s o n g u a rd a d o s e n a y ,
p o ste rio rm e n te m u e s tra lo s re s u lta d o s, p e ro e n e s ta o c a s i n n o s e u tiliz a
un a v a ria b le c o n el fin d e a lm a c e n a r e s o s re s u lta d o s , s in o q u e s e im p rim e n
d ire c ta m e n te (c o n d o s d e c im a le s ), u sa n d o e n la fu n c i n

p rin tf

la s e x p re sio n e s

a ritm tic a s d e la su m a , resta, m u ltip lic a c i n y d iv is i n d e lo s d o s n m e ro s


q u e in tro d u z c a el u su a rio . O b s e rv e q u e p a ra q u e a p a re z c a el re s u lta d o d e u n a
e x p re si n a ritm tic a , sta tie n e q u e e s ta r fu e ra d e la s c o m illa s y d e b e e sta r
a c o m p a a d a o p re c e d id a d e s u re s p e c tiv a c a d e n a d e tip o d e d ato .

Ejecucin
T e c l e a t u p r i m e r numero 32
T e c l e a t u segundo numero 54
L os r e s u l t a d o s s on :

86.00

-22.00 1 728.00 0 . 5 9

Resum en
E n e s te c a p tu lo s e e s tu d ia ro n la s p a rte s m n im a s q u e u n p ro g ra m a e n C d e b e
te n e r d e a c u e rd o c o n la m e to d o lo g a d e la p ro g ra m a c i n e stru c tu ra d a .

www.FreeLibros.me

Evaluacin

L a p ro g ra m a c i n e s tru c tu ra d a es u n a t c n ic a p a ra c re a r p ro g ra m a s m e d ia n te
c ie rta s reg la s q u e p e rm ite n q u e u n p ro g ra m a s e p u e d a m o d ifica r, le e r y m a n te n e r
f c ilm e n te . S u c a ra c te rs tic a p rin c ip a l es el u so d e e s tru c tu ra s d e c o n tro l.
L a s e c u e n c ia c i n es la e s tru c tu ra d e c o n tro l q u e s e e x p lic a e n e s te c a p tu lo y es
a q u e lla e n la q u e las in s tru c c io n e s s e e je c u ta n u n a d e sp u s d e o tra e n el o rd e n en
q u e e s t n e sc rita s .
U n p ro g ra m a d e b e te n e r u n a s o la e n tra d a y u n a s o la sa lid a , y p o r lo g e n e ra l c o n s ta
d e v a ria s fu n c io n e s o su b p ro g ra m a s.
E x is te n fu n c io n e s in te rn a s, la s c u a le s y a v ie n e n im p le m e n ta d a s e n el le n g u a je ,
a d em s fu n c io n e s e x te rn a s , q u e s o n d ise a d a s p o r el p ro g ra m a d o r.
P a ra u tiliz a r la s fu n c io n e s q u e o fre c e el le n g u a je es n e c e sa rio in c lu ir el a rc h iv o
d e c a b e c e ra o b ib lio te c a (lib re ra ) c o rre s p o n d ie n te c o n la d ire c tiv a ttinciude. U n a
b ib lio te c a es u n a rc h iv o q u e c o n tie n e a e so s su b p ro g ra m a s lla m a d o s fu n c io n e s.
C a d a b ib lio te c a es u n a c o le c c i n d e fu n c io n e s; u n a d e la s m s u tiliz a d a s es
std io.h,

q u e p ro v e e la s fu n c io n e s d e e n tra d a s y s a lid a s estn d a r.

A u n q u e u n p ro g ra m a p u e d e te n e r m ltip le s fu n c io n e s, d e b e e x is tir la fu n c i n
p rin c ip a l - m a i n - ; d e sd e s ta s e u tiliz a n las fu n c io n e s in te rn a s y e x te rn a s.

Evaluacin
I. C onteste las siguientes preguntas.
1. L a ___________________ es u n a t c n ic a q u e b a jo c ie rta s reg la s p e rm ite crear,
m o d ificar, le e r y m a n te n e r p ro g ra m a s f c ilm e n te .
2 . U n a ___________________ es u n s u b p ro g ra m a c o n u n a ta re a p re d e te rm in a d a .
3 . Q u tip o d e fu n c io n e s s e p u e d e n e n c o n tra r e n el le n g u a je C ? E x p liq u e la
d ife re n c ia e n tre a m b a s.
4. A l c o n ju n to d e a rc h iv o s d o n d e s e e n c u e n tra n im p le m e n ta d a s la s fu n c io n e s se
le d e n o m in a ___________________ .
5 . C u l d e lo s s ig u ie n te s es e je m p lo d e u n a rc h iv o d e c a b e c e ra ?
a) p r i n t f
b) i n c l u d e
c) c o n i o . h
d ) define
6 . S i d e s e a re a liz a r o p e ra c io n e s m a te m tic a s c o m o ra z c u a d ra d a o p o te n c ia , p o r
e je m p lo , s e d e b e in c lu ir la b ib lio te c a l l a m a d a ____________________

www.FreeLibros.me

53

Captulo 3

Prog ram aci n estructurada

7 . L a b ib lio te c a q u e s e re q u ie re p a ra u tiliz a r la fu n c i n

prin t f

es

C u l es el n o m b re d e la fu n c i n , a p a rtir d e la c u a l in ic ia la e je c u c i n ?
a) v o i d
b) s c a n t
C) s t r i n g . h
d ) main

9 . E s in d is p e n s a b le p a ra s u e je c u c i n q u e u n p ro g ra m a te n g a c o m e n ta rio s ?
a) c ie rto
b) falso
E x p liq u e p o r q u ____________________________________________________________
10. P a ra q u s irv e la in s tru c c i n

return 0?

11. L as in s tru c c io n e s m s u tiliz a d a s lla m a d a s d ire c tiv a s d e p re p ro c e s a m ie n to , las


c u ales s e e je c u ta n a n te s d e l p ro c e s o d e tra d u c c i n s o n ___________________
e in ic ia n c o n el s m b o l o ____________________
12. L as ___________________ sirv e n p a ra g u ia r el o rd e n e n q u e s e e je c u ta n las
in stru c c io n e s e n u n p ro g ra m a .

n . Resuelva el siguiente ejercicio, escriba lo que im prim e el siguiente


program a.
/* I m p r e s i n de un c he que */
# in clu d e

<stdio.h >

# in clu d e

<c o ni o. h >

m a i n ()

g o t o x y f19,5); p r i n t f ( "

\n");

g o t o x y f19,6); p r i n t f f ' ^
g o t o x y f 19, 7) ; p r i n t f f ^

CAPTURA DE DATOS

3");

g o t o x y ( 19,8); p r i n t f f " *

g o t o x y ( 1 9 , 9 ) ; p r i n t f ( " .....................
g o t o x y f 1 9 , 1 0 ) ; p r i n t f f "*
g o t o x y f 1 9 , 1 1 ) ; p r i n t f f "* NOMBRE:

www.FreeLibros.me

\ n u) ;

Ejercicios propuestos

g o t o x y f 19,12);

p rin tff"^

55

a ) ;

g o t o x y f 1 9 , 1 3 ) ; p r i n t f f 3 HORAS TRABAJADAS:

g o t o x y f19,14);

p r i n t f f a

g o t o x y f 19,15) ;

p r i n t f f a CUOTA POR HORA:

g o t o x y f 19,16);

p r i n t f f "3

3-;;

3 ) ;
3"; ;

3 ) ;

g o t o x y f 19,17) ; p r i n t f f " ...............................................................\ n " ) ;


g o t o x y f 29,11); getsfNombreEmp);
g o t o x y f 39,13);

s c a n f f "%c/", & H o r a s T r a b ) ;

g o t o x y f 37,15);

s c a n f f % f , & C u o t a H o r a ) ;

Sueldo

= C uo ta H or a* H o r a s T r a b ;

p r i n t f f ............................................................................................ \ n " ) ;
p r i n t f f "3

BANCOMER S . A .

p r i n t f f 3

DE C . V .

3 \n ") ;

3\n");

p r i n t f f "3 GUADALAJARA, J A L , A
p r i n t f f 3

14 DE FEBRERO DE 2008.

3\n");

3 \ n ) ;

p r i n t f f "3 PAGUESE A LA ORDEN DE: %-30s z \ n ,NombreEmp);


p r i n t f f 3
p r i n t f f 3 M

3 \ n ) ;
CANTIDAD DE: $ % - 1 5 . 2 f

p r i n t f f 3

3\n,S ueld o);

3\n";;

p r i n t f f " 3 C7>\. A/7W. 723456

FIfWA:

3\r?" ; ;

p r i n t f f .............................................................................................\ n " ; ;
p r i n t f ( " P R E S I O N E <CUALQUIER TECLA> PARA C O N T I N U A R . . . ) ;
getchf);
return 0 ;

Ejercicios propuestos
I. Codifique p ro g ram as que hagan lo siguiente.
1. C a lc u la r el re a y el v o lu m e n d e u n c ilin d ro .
2 . R e c ib ir u n a c a n tid a d d e se g u n d o s y m o s tra r s u e q u iv a le n te e n el fo rm a to hrs.:
m in: seg.
3 . C a lcu lar el n m e ro co n 10 o p e ra cio n e s d e e sta s e rie 4 / 1 - 4 / 3 + 4 / 5 - 4 / 7 + 4 / 9 ...

4 . O b te n er, p id ie n d o las c a n tid a d e s in v e rtid a s, lo s p o rc e n ta je s c o rre s p o n d ie n te s a


c a d a u n a d e tre s p e rs o n a s q u e d e c id ie ro n in v e rtir c o n ju n ta m e n te , c o n re s p e c to
al to ta l.

www.FreeLibros.me

56

Captulo 3

Prog ram aci n estructurada

5 . D ib u ja r u n c u a d ro d e a ste risc o s d e 4 x 4.
6 . L e e r u n n o m b re d e l te c la d o y e s c rib irlo e n A S C II.

n . E scriba el contenido de cada variable al ejecutarse el program a.


1.
in clu d e

< std io .h >

tin clu d e

<conio.h>

main()

{
in t

a= 5 , b = 3 , c = 1 0 , d= 5 5 ;

c=a+b*b-6 ;
d = c - 10 %4 * 3 / 6 ;
b=b*d+c;
b - 15;
p rin tf

( " 96d \ n 96d \ n 96d \ n 96d \ n " , a , b , c , d ) ;

getch();
return

0;

}
a ________________________
b

________________________

c ________________________
d ________________________

.
ttin clu d e

< std io .h >

ftin clu d e

<conio.h>

ttdefi ne M 3

main()

{
in t

a= 5 , b = 8 , c ;

c=4 *a 96b ;
c=c-M;

www.FreeLibros.me

Ejercicios propuestos

b=a + c -M ;
a=b*M;
p r i n t f ( " % d \ n * d \ n 96 d \n " , a , b , c ) ;
getch();
r e t u r n 0;

}
a ___________________
b ___________________

3.
Hiel u d e

<stdio.h >

include

<c o ni o. h >

m a in ( )

{
in t

a=5,b=3,c=10,d=55;

c = a + b * b -6 ;
d=c-10*4*316;

b=b*d+c;
b=15;
p rin tf

( "96d\n%d\n96d\n%d\n", a , b , c, d ) ;

getch();
return 0 ;

}
a ___________________
b ___________________

c _____________________
d ___________________

www.FreeLibros.me

57

58

Captulo 3

Prog ram aci n estructurada

4.
H i e l u d e

< s td io .h >

U in c lu d e

< co n io .h >

ttdefine M 3

m a in ( )

{
in t

a= 5 , b= 8 , c ;

c=4 *a%b;
c= c-M ;
b=a+c -M;
a=b*M;
p r in tf

( " 96d\n% d\n 96d \ n " , a , b , c ) ;

getch();
retu rn

0;

a
b
c

www.FreeLibros.me

Estructuras
de control selectivas

A q u s e m e n c io n a n la s d ife re n te s fo rm a s d e m a n e ja r u n a s e le c c i n ,
c la sific a n d o la e s tru c tu ra p o r s u u so c o m n .
L as e s tru c tu ra s d e c o n tro l se le c tiv a s s o n a q u e lla s q u e e v a l a n u n a
e x p re si n , u s u a lm e n te u n a c o n d ic i n b o o le a n a , y a p a rtir del
re su lta d o p e rm ite n to m a r d e c isio n e s e n tre u n a , d o s o m s o p c io n e s;
a e s to s e le c o n o c e c o m o s e le c c i n c o n d ic io n a l. E x is te n tre s tip o s d e
e stru c tu ra s se lec tiv a s: seleccin simple, seleccin doble y seleccin

m ltiple.
U n a c o n d ic i n b o o le a n a es u n a e x p re s i n q u e p u e d e te n e r c o m o
re su lta d o s lo el v a lo r d e v e rd a d e ro o d e falso .
L a c o n d ic i n p u e d e u tiliz a r d a to s d e tip o e n te ro , re a l o c a r c te r y se
fo rm a n g e n e ra lm e n te u tiliz a n d o lo s o p e ra d o re s re la c i n a le s , p o r
e je m p lo a > b , 5 = = b.

www.FreeLibros.me

Captulo 4

Estructuras d e co n tro l selectivas

4.1 Estructura selectiva sim ple ( i f )


E s a q u e lla q u e d e sp u s d e e v a lu a r u n a c o n d ic i n d e te rm in a s u v a lo r, q u e es
v e rd a d e ro o fa ls o , y s lo si el re s u lta d o d e la c o n d ic i n es v e rd a d e ro s e re a liz a r
la in s tru c c i n o in stru c c io n e s d e fin id a s p a ra la c o n d ic i n , s u sin ta x is es la
sig u ien te:
1.
if

(condicin

in stru cci n

1 )
1;

2.
if

(condicin

1 )

{
in stru cci n

1;

in stru cci n

2;

in stru cci n

3;

}
El a lc a n c e s in t c tic o p re d e te rm in a d o p a ra u n a e s tru c tu ra d e c o n tro l es d e u n a
in stru c c i n , c o m o s e a p re c ia e n la p rim e ra fo rm a ; c u a n d o s e re q u ie re q u e se
e je c u te m s d e u n a , las in s tru c c io n e s d e b e r n a g ru p a rs e m e d ia n te lla v e s , ta l c o m o
s e p u e d e v e r e n la se g u n d a fo rm a .

Ej e m p l o 4.1 Determ inar si un alum no aprob un curso a partir


del prom edio que obtuvo de sus tres calificaciones de
los parciales que se hicieron durante el semestre
ttinclude

<stdio.h >

ttinclude

<c o ni o. h >

mainf)

{
float c a l i ,

cal2,

p r i n t f (" Dame l a

cal3,

prom;

c a l i f i c a c i n d e l p r i m e r examen p a r c i a l " ) ;

s c a n f f "%f" , A c a l 1);

p r i n t f ( " Dame l a

calificacin del

segundo examen p a r c i a l " ) ;

s c a n f ( " 96 f " , & c a l 2 ) ;


p r i n t f ( " Dame l a

calificacin del

t e r c e r examen p a r c i a l " ) ;

s c a n f f "%f" , & c a l 3 ) ;

www.FreeLibros.me

4.1 Estructura selectiva simple ( i f )

prom = ( c a l l
i f

+ cal2

+ cal3)

/ 3;

(prom >= 6 0 )

p rin tf

("Aprobo");

g e t c h f );
return 0 ;

}
S e p u e d e o b s e rv a r q u e la c o n d ic i n s e e s ta b le c e u tiliz a n d o la v a ria b le

prom

que

a lm a c e n a el p ro m e d io d e l a lu m n o , d e ta l m o d o q u e si el p ro m e d io c a lc u la d o es
m a y o r o ig u a l q u e 6 0 la c o n d ic i n es v e rd a d e ra y s lo e n to n c e s s e re a liz a r la
in stru c c i n a s ig n a d a q u e es im p rim ir q u e el a lu m n o a p ro b ; d e lo c o n tra rio , el
p ro g ra m a n o re a liz a r n a d a y sim p le m e n te te rm in a r .

Ej e m p l o 4.2 Im prim ir si un nm ero es positivo, negativo o cero


!*Positivo,

negativo o cero*!

# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

mai n( )

{
i n t num;
p r i n t f ( " I n d i c a s i e l numero e s p o s i t i v o , n e g a t i v o o c e r o \ n v) ;
p r i n t f ( " Dame e l

\ n ");

scanf("% i",&num );
if(num==0 )
p r i n t f ( " Es c e r o \ n n) ;
if(num >0 )
p r i n t f ( " Es p o s i t i v o \ n " ) ;
if(num <0 )
p r i n t f ( " Es n e g a t i v o \ n u) ;
g e t c h f );
return 0 ;

E n e s te e je m p lo , el u s u a rio in tro d u c ir u n n m e ro y e n la p a n ta lla a p a re c e r si


ste es p o sitiv o , n e g a tiv o o c e ro . U n a v e z q u e el u s u a rio y a in tro d u jo el n m e ro ,

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

se a lm a c e n a e n la v a ria b le num y s e e v a l a la p rim e ra c o n d ic i n ; si la v a ria b le


num es ig u a l q u e c e ro , e n to n c e s s e im p rim ir E s c e r o ; d e sp u s re v is a la sig u ie n te

c o n d ic i n y si la v a ria b le num es m a y o r q u e c e ro , s e im p rim ir Es p o s i t i v o y p o r


ltim o s e e v a l a la te rc e ra c o n d ic i n y si la v a ria b le num es m e n o r q u e c e ro se
im p rim ir Es n e g a t i v o .
In d e p e n d ie n te m e n te d e la c o n d ic i n q u e s e c u m p la , el p ro g ra m a e v a lu a r
las tre s c o n d ic io n e s, p e ro s e im p rim ir el te x to s lo d o n d e la c o n d ic i n se a
v erd a d era .
Ejercicios resu eltos
Eje r c ic io 4.1 Leer un nm ero por el teclado y evaluar si es par o impar

Descripcin
In tro d u c ir u n n m ero .
E v a lu a r si el n m e ro d iv id id o e n tre d o s tie n e d e re s id u o c e ro o uno.
Im p rim ir si el n m e ro es p a r o im p ar.
V a ria b le s
N om bre

T ip o

U so

Entero

V a lo r a r e v i s a r

Codificacin
/* P a r o i m p a r * /
itin e l u d e < s t d i o . h >
t t i n e l u d e < c o n i o . h>

mainf)

{
i n t n;
c l r s c r f );
p rin tf(

"P a r o i m p a r . \ n \ n u ) ;

p rin tff

"E s c r i b e e l numero:

);

s c a n f ( H%d",&n) ;
if(n

% 2 == 0 )

p r i n t f ( ' ,E l numero

%c/ e s

p a r . ,n);

www.FreeLibros.me

4.2 Selectiva d o b le ( i f - e ls e )

if

(n %

2 /= <d)

p r i n t f ( " E l numero %d e s i m p a r .

n);

g e t c h f );
return

0;

Explicacin
Se in tro d u c e u n n m e ro e n te ro . S i al d iv id irs e e n tre d o s s u re s id u o es
cero , s e c u m p le la p rim e ra c o n d ic i n , s e im p rim e q u e el n m e ro es p a r y p a sa
a la s ig u ie n te c o n d ic i n . S i el n m e ro le d o s e d iv id e e n tre d o s y s u r e s id u o es
d ife re n te d e c e ro , la c o n d ic i n n o s e c u m p le , p o r lo q u e n o s e e je c u ta la sig u ie n te
in stru c c i n y te rm in a el p ro g ra m a .
Si in tro d u c im o s u n n m e ro im p a r, y al d iv id irs e e n tre d o s su re s id u o n o es cero ,
la p rim e ra c o n d ic i n n o s e c u m p le y n o su c e d e n a d a ; e n s e g u id a s e e v a l a la
sig u ie n te c o n d ic i n ; si al d iv id irse e n tre d o s, s u re s id u o es d ife re n te d e c e ro , se
im p rim e q u e es im p a r y te rm in a el p ro g ra m a .

Ejecucin
1.
P a r o impar.
E s c r i b e e l numero 8
E l numero 8 e s p a r .
2

P a r o impar.
E s c r i b e e l numero
E l numero

15

15 e s p a r

4.2 Selectiva doble ( i f - e l s e )


Es a q u e lla q u e p e rm ite e v a lu a r u n a c o n d ic i n b o o le a n a y e le g ir e n tre dos
o p c io n e s. S i la c o n d ic i n es v e rd a d e ra , e je c u ta r la in s tru c c i n q u e s e e n c u e n tra
a c o n tin u a c i n d e l i f , p e ro si la c o n d ic i n es fa ls a s e e je c u ta r la in s tru c c i n q u e
se e n c u e n tra a c o n tin u a c i n d e l e l s e . P o r lo ta n to , s e s e le c c io n a n la s in stru c c io n e s
q u e s e e n c u e n tra n a c o n tin u a c i n d e l i f o la s q u e e s t n d e sp u s d e e ls e , p e ro n o
am b a s. L a s in ta x is es:

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

1.
if

(condicin )

in stru cci n ;
else
in stru cci n ;
2.
if

(condicin )

{
in stru cci n

1;

in stru cci n

2;

}
else

{
in stru cci n

3;

in stru cci n

4;

}
R e c u e rd e q u e p a ra c a d a e stru c tu ra , si e x is te m s de una instruccin, sta s se
d e b e r n a g ru p a r c o n las lla v e s . E n la fo rm a (2 ) a n te rio r s e a g ru p a n ta n to p a ra el i f
c o m o p a ra el e ls e .

Ej e m p l o 4.3 Determ inar si un alum no aprob o reprob un curso a partir


del prom edio que obtuvo en sus tres calificaciones parciales
durante el sem estre y m ostrar la calificacin
/*Aprobo o r e p r o b o * /
ttinclude

<stdio.h >

Hiel u d e

<c o ni o. h >

mai n( )

{
flo a t c a l i ,

c a l 2 , c a l 3,

p r i n t f ( " Dame l a

prom;

c a l i f i c a c i n d e l p r i m e r examen p a r c i a l " ) ;

s c a n f ( " * f " , & c a l 1);


p r i n t f ( " Dame l a

calificacin del

segundo examen p a r c i a l " );

s c a n f ( " * f " , & c a l2 );


p r i n t f ( " Dame l a

calificacin del

t e r c e r examen p a r c i a l " );

s ca n f("* f",& cal3 );


prom = ( c a l i
i f

+ cal2

+ cal3)

/ 3;

(prom >= 6 0 )

www.FreeLibros.me

4.2 Selectiva d o b le ( i f - e ls e )

p r i n t f ("A p ro b o con % f " , p r o m ) ;


e ls e
p r i n t f (" R e p ro b o con %f", p r o m ) ;
getch();
return 0;

E n e s te e je m p lo n u e v a m e n te s e c a lc u la el p ro m e d io d e l a lu m n o , el re s u lta d o de
la v a ria b le prom s e r el v a lo r q u e s e u tilic e e n la c o n d ic i n . S i el c o n te n id o d e la
v a ria b le prom es m a y o r o ig u a l q u e 6 0 (c o n d ic i n v e rd a d e ra ) s e im p rim e A p ro b o y
su re s p e c tiv o p ro m e d io , d e lo c o n tra rio prom s e e n c u e n tra e n tre 0 y 5 9 (c o n d ic i n
la lsa ), p o r lo q u e s e im p rim ir R e p ro b o c o n s u p ro m e d io re sp e c tiv o .

Ej e m p l o 4.4 Convertir kilm etros a metros


I * E l e g i r c u l c o n v e r s i n r e a l i z a r s i de k i l m e t r o s a m e t ro s o v i c e v e r s a */
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
m ain ()

{
flo at z , y ;
i n t op;
p r i n t f ( " C o n v e r s i n de kms a m ts o mts a k m s \ n " ) ;
p r i n t f ( " S i d e s e a s h a c e r l a c o n v e r s i n de kms a m ts e l i g e l a
o p c io n 1 y de mts a kms e l i g e l a

o p c io n 2 \ n " ) ;

s c a n f(" % d " ,& o p );


if(o p = = 1)

{
p r i n t f ( " Dame l o s k i l m e t r o s a c o n v e r t i r \ n " ) ;
s c a n f ( n% f u, & z ) ;
y = z * 1000 ;
p r i n t f (" l a

c o n v e r s i n a m e t ro s e s

}
e ls e

{
p r i n t f ( " Dame l o s m e t ro s a c o n v e r t i r \ n " ) ;
s c a n f ( n% f \ & y ) ;
z = y 110 0 0 ;

(contina )

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

(c o n tin u a c i n )

p r i n t f ( " La c o n v e r s i n a k i l m e t r o s e s 96 f \ n " , z ) ;

}
getch();
return 0 ;

E n este ejem plo, el u su ario d e b e eleg ir la o p ci n q u e d e se a re a liz ar o p rim ien d o el


n m ero 1 o 2; esto se a lm ac en a e n la variable op. P osterio rm en te el p ro g ram a realizar
las instrucciones co rresp o n d ien tes evaluando u n a estructura d e co n tro l selectiva doble.
Si la variable op es ig u al q u e u n o se realizarn las sigu ien tes instrucciones: ap arecer
en la p a n ta lla Dame l o s k i l m e t r o s a c o n v e r t i r y u n a vez q u e el u su ario in tro d u zca
la c an tid ad ap arec e r e n la p a n ta lla La c o n v e r s i n a m e t r o s es, pero si la co n d ici n
no es verdadera, en to n ces ap arecer e n la p a n ta lla ceme l o s m e t r o s a c o n v e r t i r y
enseguida La c o n v e r s i n a k i l m e t r o s e s y el pro g ram a conclu ir.
N o ta : C a b e s e a la r q u e al e le g ir la o p c i n 1, s e re a liz a r la c o n v e rsi n de
k il m e tro s a m e tro s, p e ro al e le g ir la o p c i n 2 u o p rim ir c u a lq u ie r te c la d ife re n te
a 1 s e re a liz a r la c o n v e rsi n d e m e tro s a k il m e tro s.

E je rc ic io s re s u e lt o s
Ej e r c i c i o 4 .2 Indicar si el ao en que naciste fue bisiesto

Descripcin
In tro d u c ir el a o e n q u e n a c iste .
Si el a o in tro d u c id o d iv id id o e n tre c u a tro d a u n re s id u o d e c e ro , el a o en
qu e n a c is te fu e b isie s to ; d e lo c o n tra rio , el a o e n q u e n a c is te n o lo fue.

V a ria b le s
N om bre

T ip o

U so

an i o

Entero

Ao de n a c i m ie n t o

Codificacin
/* AO BI SIE ST O */

#include< stdio.h>
# i n c l u d e < c o n i o . h>

www.FreeLibros.me

4.2 Selectiva d o b le ( i f - e ls e )

m ain(){
i n t anio;
clrscrf);
p rin tf(

"I n d i c a s i e l a n i o en q u e n a c i s t e f u e b i s i e s t o \ n \ n "

p rin tff

"En q u e a n i o n a c i s t e

scanff
if(

);

" );

& an io ) ;

a n i o % 4 == 0 )

p rin tff

E l a n i o en q u e n a c i s t e e s b i s i e s t o \ n \ n " ) ;

else
p rin tff

"El a n i o en q u e n a c i s t e NO e s b i s i e s t o \ n \ n "

);

g etch();
return 0 ;

Explicacin
Se in g re s a el a o e n q u e n a c iste , si al d iv id irse e n tre c u a tro s u re s id u o es c e ro , la
c o n d ic i n s e c u m p le y s e im p rim e El a n i o e n q u e n a c i s t e e s b i s i e s t o .
Si el a o in tro d u c id o al d iv id irse e n tre c u a tro p ro d u c e u n re s id u o d is tin to d e cero ,
la c o n d ic i n n o s e c u m p le y s e im p rim e E l a n i o e n q u e n a c i s t e NO e s b i s i e s t o .

Ejecucin
1.
In d ic a s i e l a n io en que n a c i s t e f u e b i s i e s t o .
En que a n i o n a c i s t e 1980.
E l a n i o e n que n a c i s t e e s b i s i e s t o .
2.

In d ic a s i e l a n io en que n a c i s t e f u e b i s i e s t o .
En que a n i o n a c i s t e 1985.
E l a n i o e n que n a c i s t e NO e s b i s i e s t o .

Eje r c ic io 4.3 Convertir grados de tem peratura

Descripcin
S e le c c io n a r u n a o p c i n .
E v a l a la c o n d ic i n .

(c o n tin a )

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

(continuacin )

R e a liz a el c lc u lo .
M u e stra el re su lta d o .
Variables
N om bre

Tipo

Uso

Opc

Entero

O p c i n d e c o n v e r s i n .

Real

Grados.

con

Real

C onversin.

Codificacin
/ * o F - oC o oC a oF */
# include< stdio.h>
include< conio.h>
m ain()

{
flo at g ,

c on ;

i n t opc;

e lrser();
p rin tff

"C o n v e r s i o n e s d e g r a d o s d e t e m p e r a t u r a " ) ;

p rin tff

" \ n [ 1 JoF - oC \ n [ 2 ] o C - o F \ n \ n "

p rin tf(

"S e l e c c i o n a una o p c i o n ) ;

scanf(
if(

"%c/", &opc ) ;

o p c == 1 )

{
p rin tff

" I n t r o d u c e l o s oF = " ) ;

s c a n f f "% f", &g ) ;


con = ( g -3 2 ) 1 1 .8 ;
p rin tff

"%f0 F = %f0C ", g ,

con ) ;

}
else

{
p rin tff

"I n t r o d u c e l o s oC = " ) ;

s c a n f f "%f", &g ) ;
c o n = g * 1 . 8 + 32;
p rin tff

"%f0C = % f0F", g ,

con );

www.FreeLibros.me

);

4.3 Selectiva d o b le anidada

}
g etch();
return 0 ;

Explicacin
Se p id e s e le c c io n a r u n tip o d e c o n v e rsi n ; u n a v e z e le g id a , s e s o lic ita la
te m p e ra tu ra p a ra re a liz a r la o p e ra c i n d e c o n v e rsi n , y fin a lm e n te s e m u e s tra
el re s u lta d o .

Ejecucin
1.

C o n ve rsio n es de g r a d o s de te m p e r a tu r a .
[ 1 ] o F - oC
( 2 ] 0 C - 0F
S e l e c c i o n a una o p c i o n 1
I n t r o d u c e l o s oF = .
oF = oC
2

.
C o n ve rsio n es de g r a d o s de te m p e r a tu r a .

[1]0F - oC
[ 2]0 C - 0F
S e l e c c i o n a una o p c i o n 2
I n t r o d u c e l o s oC = .
oC = oF

4.3 Selectiva doble anidada


Es a q u e lla e s tru c tu ra q u e d e n tro d e l a lc a n c e d e u n a c o n d ic i n tie n e o tra
c o n d ic i n ; e n o tra s p a la b ra s , e n u n f - e l s e se e n c u e n tra o tro f - e i s e .
C ada co n d ic i n se r evaluada en el o rd e n e n el q u e va ap arec ien d o : si la c o n d ic i n 1
es v e rd a d e ra s e e je c u ta la p rim e ra in s tru c c i n y y a n o s e re v is a n la s d e m s
c o n d ic io n e s, d e lo c o n tra rio s e e v a l a la s ig u ie n te c o n d ic i n la 2 y si s ta es
v e rd a d e ra re a liz a r s u in s tru c c i n y a s su c e s iv a m e n te . E l e i s e fin al q u e c o n tie n e
la ltim a in s tru c c i n s e r e je c u ta d o si n in g u n a d e la s c o n d ic io n e s a n te rio re s fu e

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

v e rd a d e ra . E s ta e s tru c tu ra es m s til c u a n d o s e tie n e n tre s o m s o p c io n e s.


Es p o s ib le u tiliz a r ta n to s a n id a m ie n to s c o m o s e re q u ie ra . S u sin ta x is es la
sig u ien te:
i f (condicin 1 )
in stru cci n

1;

else
if

(condicin 2)

in stru cci n 2 ;
else
i n s t r u c c i n 3;

Ej e m p l o 4.5 Indicar si el nm ero ledo es positivo, negativo o cero


/*P o s i t i v o , n e g a t i v o o c e r o * !

tinclude< stdio.h>
f t i n c l u d e < c o n i o . h>
main()

{
i n t num;
p r i n t f ( " I n d i c a s i e l n u m e ro e s p o s i t i v o , n e g a t i v o o c e r o \ n n) ;
p r i n t f ( "Dame e l n u m e r o \ n " ) ;
s c a n f f "%c/", &num) ;
if(num==0 )
p rin tf(" E s cero\n");
else
i f ( n u m > 0)
p rin tf("E s p o sitiv o \n ");
else
p r in tf( " E s n e g a tiv o \n " );
getch f);
return 0 ;

U n a v e z a lm a c e n a d o el n m e ro e n la v a ria b le num , s e p a s a a la s ig u ie n te in s tru c


c i n d o n d e s e e v a l a si num es ig u a l q u e c e ro y e n c a s o d e c u m p lirs e la c o n d ic i n
se im p rim ir Es c e r o . S i s e c u m p li la p rim e ra c o n d ic i n s e s a le d e l a n id a m ie n to
y el p ro g ra m a te rm in a ; d e lo c o n tra rio , s e e v a lu a r la s ig u ie n te c o n d ic i n : si num es
m a y o r q u e c e ro s e im p rim ir Es p o s i t i v o , s e s a le d e l a n id a m ie n to y el p ro g ra m a

www.FreeLibros.me

4.3 Selectiva d o b le anidada

term in a . D e lo c o n tra rio , s e e je c u ta r la ltim a in s tru c c i n d o n d e s e v is u a liz a r en


la p a n ta lla Es n e g a t i v o .
Ej e m p l o 4.6 Leer dos nm eros y si son iguales m ultiplicarlos; si el prim ero
es mayor que el segundo, que se resten; si el prim ero es
m enor que el segundo, que se sumen
t t in c lu d e < s t d i o . h >
iti n e l ude < c o n i o . h>
m a in ( )

{
i n t n u m i,num 2 , r e s u l ;
p r i n t f ( " Dame e l p r i m e r ) ;
s c a n f f " * d ", &num1 ) ;
p r i n t f ( " Dame e l se g u n d o " ) ;
s c a n f ( "% c/\ &num2 ) ;
(num i num2 )

if

{
r e s u l = numi * num2 ;
p r i n t f ( " L a m u l t i p l i c a c i n de l o s nm eros e s * d " , r e s u l ) ;

}
e ls e
if

(num i > num2 )

{
r e s u l = numi - num2 ;
p r i n t f ( " L a r e s t a de l o s n m ero s e s * d " , r e s u l ) ;

}
e ls e

{
r e s u l = numi + num2 ;
p r i n t f ( " L a suma de l o s nm ero s e s % d " , r e s u l ) ;

}
g etch f);
return 0 ;

In ic ia p id ie n d o lo s d o s v a lo re s, a c o n tin u a c i n s e c o m p a ra si s o n ig u a le s , si e sto
es v e rd a d e ro , s e re a liz a la m u ltip lic a c i n d e lo s n m e ro s y y a n o s e e v a l a n las

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

sig u ie n te s c o n d ic io n e s s a lie n d o d e l a n id a m ie n to , si la c o n d ic i n 1 fu e fa ls a se
e v al a la c o n d ic i n 2 y s e c o m p a ra si el p rim e r n m e ro es m a y o r q u e el se g u n d o ,
si e s to s e c u m p le s e re s ta n lo s v a lo re s y s e sa le d e l a n id a m ie n to . E n c a s o d e q u e la
c o n d ic i n 2 s e a falsa, s e e je c u ta n la s in stru c c io n e s a c o n tin u a c i n d e l ltim o e i s e .

E je rc ic io s re s u e lt o s

E je rc ic io 4 .4 Indicar el tip o de tringulo introducido


Descripcin
In tro d u c ir lo s tres la d o s d e l tri n g u lo .
C o m p a ra r si los tre s la d o s s o n ig u a le s o si d o s d e e llo s s o n ig u a le s.
Im p rim ir el tip o d e tri n g u lo .
V a ria b le s
N om bre

T ip o

U so

11

Entero

Lado 1 t r i n g u l o .

12

Entero

Lado 2 t r i n g u l o .

13

Entero

Lado 3 t r i n g u l o .

Codificacin
/ * C l a s i f i c a c i n de t r i n g u l o s * /
# in c lu d e < s t d io .h >
t iin c lu d e < c o n io .h >
m a in ( )

{
in t 1 1 ,

12, 13;

c lr s c r ( ) ;
p r i n t f ( " C l a s i f i c a un t r i a n g u l o \ n \ n ) ;
p r in t f ( " E s c r ib a l o s la d o s d e l t r ia n g u lo : ) ;
scan f("%d

% c/\ & 1 1 , 8 ,12, 8 1 3 ) ;

p r i n t f ( u\ n " ) ;
if(

1 1 == 1 2 && 1 2 =

13 )

p r i n t f ( "E l t r i a n g u l o e s E q u i l t e r o " ) ;

www.FreeLibros.me

4.4 Selectiva m ltip le ( s w it c h - c a s e )

else
i f ( 1 2 == 1 3 || 1 2 == 1 3 || 1 3 == 11 )
p rin tff

"E l t r i a n g u l o e s I s o s c e l e s " ) ;

p rin tff

"El t r i a n g u l o e s E s c a l e n o " ) ;

else

getch();
return 0 ;

Explicacin
Se in tro d u c e n lo s v a lo re s d e lo s tres la d o s d e l tri n g u lo . S e c o m p a ra si s o n ig u a le s
e n c u y o c a s o s e c u m p le la p rim e ra c o n d ic i n y s e im p rim e El t r i a n g u l o e s
E q u i l t e r o . E n c a s o c o n tra rio , s e c o m p a ra si d o s la d o s s o n ig u a le s; si lo son,

es v e rd a d e ra la c o n d ic i n y s e im p rim e E l t r i a n g u l o e s i s s c e l e s . S i la
se g u n d a c o n d ic i n n o s e c u m p le , s e im p r im ir El t r i a n g u l o e s E s c a l e n o .

Ejecucin
1.
C l a s i f i c a un t r i a n g u l o .
E s c r i b e l o s l a d o s d e l t r i a n g u l o 7 7 7.
El t r i a n g u l o e s E q u i l t e r o .
2

.
C l a s i f i c a un t r i a n g u l o .
E scribe l o s la d o s d el tr ia n g u lo 5 3 9 .
El t r i a n g u l o e s E s c a le n o .

4.4 Selectiva m ltiple ( s w it c h - c a s e )


Es a q u e lla e s tru c tu ra q u e p e rm ite e le g ir e n tre d o s o m s o p c io n e s, s w i t c h e v a l a
la e x p re s i n q u e s e e n c u e n tra d e n tro d e lo s p a r n te s is y el re s u lta d o s e c o m p a ra
co n v a lo re s a lte rn a tiv o s.
E l s w i t c h e n la e x p re s i n lle v a im p lc ito el o p e ra d o r ig u a l (==), p o r lo q u e
c o m p a ra si la e x p re s i n es ig u a l a a lg u n a d e la s o p c io n e s. P o r lo ta n to n o se
p u e d e c o m p a ra r u tiliz a n d o o tr o o p e ra d o r re la c io n a l.

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

El tip o d e d a to d e la e x p re s i n s lo p u e d e s e r e n te ro o c a r c te r; p o r lo ta n to , las
o p c io n e s d e b e r n c o in c id ir c o n el tip o d e d a to d e la e x p re si n .
s w i t c h c o m p a ra e l v a lo r d e la e x p re s i n c o n c a d a u n a d e la s o p c io n e s e n el

o rd e n e n q u e s e e n c u e n tra n . C a d a o p c i n s e re p re s e n ta c o n la p a la b ra re s e rv a d a
case,

p o r lo ta n to h a b r ta n to s c a s e c o m o o p c io n e s. U n a v e z q u e e n c u e n tra la

ig u a ld a d d e la e x p re s i n c o n u n a o p c i n s e re a liz a r n las in s tru c c io n e s q u e e s t n a


c o n tin u a c i n d e l c a s e h a s ta e n c o n tra r u n b r e a k ; si n o e n c u e n tra n in g n v a lo r ig u al
a la e x p re si n , re a liz a r la in s tru c c i n a s ig n a d a al d e f a u i t , si s te e x iste .
S e d e b e r u tiliz a r la p a la b ra re s e rv a d a b r e a k al te rm in o d e c a d a c a s e p a ra
in te rru m p ir la e s tru c tu ra y n o re v is a r las s ig u ie n te s o p c io n e s.
C o m o s e m e n c io n a n te rio rm e n te , el d e f a u i t s e e je c u ta r c u a n d o la e x p re si n
n o c o in c id a c o n n in g u n a o p c i n . S in e m b a rg o , s e r d e c is i n d e l p ro g ra m a d o r
in c lu irla o n o e n s u p ro g ra m a , y a q u e s te es o p c io n a l. L a s in ta x is es:
sw itch (expresin)

{
case 1: in s t r u c c i n

1;

break;
case 2 : in s t r u c c i n 2 ;
break;

c a s e n : i n s t r u c c i n n;
break;
d efault:
i n s t r u c c i n n +1 ;

E je m p lo 4.7 Indicar un da de la semana y que el programa escriba


el nm ero de da que le corresponde
in c lu d e < stdio.h>
ttin c lu d e <conio.h>
main()

{
c h a r d i a;
p r i n t f ( " E l i g e un d a d e l a s e m a n a : \ n L u n e s = L \ n M a r t e s = M\n
M i r c o l e s = I \ n J u e v e s = J \ n V i e r n e s = V \ n Saba d o

www.FreeLibros.me

4.4 Selectiva m ltip le ( s w it c h - c a s e )

= S \ n Domingo = D") ;

s c a n f ( U96C" , & d i a ) ;
sw itch(dia)

{
case

' L ' : p r i n t f ("it i u) ;


break;

case

p r i n t f (" it 2 " ) ;
break;

case

'I': p rin tf

(" it 3 " ) ;

break;
case

' J ' : p r i n t f i"# 4 " ) ;


break;

case

'V : p rin tf

r#

5");

break;
case

S ' : p r i n t f

("it 6 " ) ;

break;
case

' D ' : p r i n t f ("it 7 " ) ;


break;

}
g etch();
return 0 ;

El u s u a rio e lig e e n u n m e n u n n o m b re d e d a d e la se m a n a ; a u to m tic a m e n te ,


a p a re c e e n la p a n ta lla el n m e ro d e d a d e la se m a n a q u e le c o rre sp o n d e .
E n e ste e je m p lo , el tip o d e d a to d e la e x p re si n es carcter. A c o n tin u a c i n s e p u e d e
o b serv ar q u e la in stru c c i n d e f a u i t es o p c io n al, y e n e ste eje m p lo n o s e u tiliz .

Ej e m p l o 4.8 Realizar la operacin que se elige del men visualizado


/*C alculadora*/
t t i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
main()

{
in t x,y,o p ;
fl oat z ;
p rin tf(" C a lc u la d o r a b a s ic a e l i g e l a operacin a r e a l i z a r \ n " );
(c o n tin a )

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

p r i n t f ( " 1 =Suma, 2 = R e s t a , 3 = M u l t i p l i c a c i o n , 4 = D i v i s i o n \ n " ) ;


scanf("% d",& op);
s w i t c h (op )

{
c a s e 1 :p r i n t f ( " S u m a \ n " ) ;
p r i n t f ( "Teclea e l p rim er \n " );
scanf("% i",& x);
p r i n t f ( "Teclea e l segundo \ n " ) ;
scanf("% i",& y);
z =x +y ;
p r i n t f ( " La suma es% f",z^;
break;
case 2 : p r i n t f ( " f e s t a \ n " ) ;
p r i n t f ( "Teclea e l p rim er \n " );
scanf("% i",& x);
p r i n t f ( "Teclea e l segundo \ n " ) ;
scanf("% i",& y);
z=x-y;
p r i n t f ( " l a r e s t a e s% f'',z ;;
break;
c a s e 3 : p r i n t f ( "M u t i p l i c a c i o n \ n " ) ;
p r i n t f ( "Teclea e l p rim er \n " ) ;
s c a n f ( " 96 i " , 8 , x ) ;
p r i n t f ( "Teclea e l segundo \n " );
sca n f("te",& y);
z=x*y;
p r i n t f ( " La m u l t i p l i c a c i n es% f" , z ) ;
break;
case 4 : p r i n t f ( " D i v i s i o n \ n " ) ;
p r i n t f ( "Teclea e l p rim er \n " ) ;
s c a n f ( " 96 i " , 8 , x ) ;
p r i n t f ( "Teclea e l segundo \n " );
sca n f("te",& y);
z= x/y;
p r i n t f ( " L a d i v i s i n e s % f" ,z ;;
break;

www.FreeLibros.me

(continuacin)

4.4 Selectiva m ltip le ( s w it c h - c a s e )

}
getch();
return 0 ;

E ste p ro g ra m a p ro d u c e u n a c a lc u la d o ra b s ic a y d e s p lie g a c u a tro o p c io n e s; la


o p c i n e le g id a p o r el u s u a rio s e a lm a c e n a e n la v a ria b le op, y s e r la e x p re si n
q u e el s w i t c h e m p le e p a ra c o m p a ra r c o n c a d a u n a d e la s o p c io n e s sig u ie n te s ;
c u a n d o op e n c u e n tre u n a ig u a ld a d e n a lg u n a o p c i n , s e re a liz a r n la s in s tru c c io n e s
q u e s e e n c u e n tra n e n el c a s e .
P b r e je m p lo , si el u s u a rio e lig e la o p c i n 3 , e n la v a ria b le op s e a lm a c e n a r el 3
y e m p e z a r a c o m p a ra rs e c o n c a d a u n o d e lo s c a s e . C u a n d o s e e v a l e la o p c i n 3,
el u su a rio h a b r eleg id o m u ltip lic ar y m o stra r T e c l e a e l p r i m e r , d e sp u s T e c l e a e l
s e g u n d o y p a ra fin a liz a r a p a re c e r La m u l t i p l i c a c i n e s

E je rc ic io s re s u e lto s

E j e r c i c i o 4 .5 Elegir una figura geom trica y calcular su rea

Descripcin
E le g ir u n a fig u ra g e o m tric a a p a rtir d e l m en .
S o lic ita r lo s v a lo re s.
M o stra r el rea.
Variables
Nombre

Tipo

Uso

ni

Real

Op era nd o 1.

n2

Real

Op era nd o 2.

Real

R esultado.

op

Carcter

Cpcin o p e r a c i n .

Codificacin
I'CALCULADORA*I
t t i n c l u d e < s t d i o . h>
i t i n e 1 u d e < c o n i o . h>
(c o n tin a )

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

(continuacin)
m a in ()

{
flo at n 1 , n 2 , r ;
c h a r op ;

e lrser();
p rin tff

"F i g u r a s g e o m e t r i c a s \ n \ n " ) ;

p rin tf (

"E l i j a s u figura ( 1. t r i a n g u l o \ n 2 . r e c t a n g u l o \ n 3.

c u a d r a d o ,\n 4. c i r c u l o ) :
scanff

\n \n " );

U96 C " , & o p ) ;

swi t c h ( op )

{
case

' V : p r i n t f f " \ndame l a b a s e y l a a l t u r a " ) ;

s c a n f ( %f%f" , &n 1 , &n2 ) ;


p r i n t f ( " \ n e l a r e a e s % . 2 f " , n 1 *n 2 / 2 ) ;
break;
case

' 2 ' : p r i n t f ( " \ndame l a b a s e y l a a l t u r a " ) ;

s c a n f ( "%f%f , 8,n 1 , &n2 ) ;


p r i n t f ( " \ n e l a r e a e s \ . 2 f " , n 1 *n 2 ) ;
break;
case

' 3 ' : p r i n t f ( " \ndame e l l a d o " ) ;

s c a n f f "%f" ,& n 1 ) ;
p r i n t f ( \ n e l a r e a e s %.2 f " , n 1 *n 1) ;
break;
case

' 4 ' : p r i n t f f " \ndame e l r a d i o " ) ;

s c a n f f " * f " , & n 1) ;


p r i n t f f " \ n e l area e s % .2 f " , 3 . 1416*n1*n1) ;
break;
d efault: p r i n t f f

O p c i n i n c o r r e c t a " ) ;

}
g etch f);
return 0 ;

Explicacin
El d a to im p o rta n te a c o n o c e r es el d e la fig u ra g e o m tric a . E l o p e ra d o r q u e
se in tro d u c e e n el e je m p lo es 1, q u e c o rre s p o n d e al re a d e l tri n g u lo ; a
c o n tin u a c i n , la v a ria b le s e le c to ra s e c o m p a ra c o n la o p c i n 1, al s e r ig u a le s , se
so lic ita el v a lo r d e la b a s e y la a ltu ra , d e sp u s s e m u e s tra el re s u lta d o .

www.FreeLibros.me

4.4 Selectiva m ltip le ( s w it c h - c a s e )

Ejecucin
Figuras g eom tricas
E l i j a s u figura ( 1. t r i a n g u l o
2 . rectngulo

3. cuadrado
4. c i r c u l o ) :

dame l a b a s e y l a a l t u r a 2 3
el area es

3.00

Eje r c ic io 4.6 Imprimir el salario real de un trabajador

Descripcin
In tro d u c ir la s h o ra s tra b a ja d a s.
In tro d u c ir el p u e s to q u e d e se m p e a .
In d ic a r el s a la rio re a l; si el tra b a ja d o r g a n a m s d e $ 8 ,0 0 0 a la se m a n a re d u c ir
20% d e s u sa la rio .

Variables
Nombre

Tipo

Uso

op

C arcter

Puesto.

sal

Real

Salario t o ta l.

sdes

Real

Salario descu en to .

Entero

Nmero d e h o r a s .

Constantes
Nombre

Tipo

Uso

Entero

P recio hora d i r e c t o r .

Entero

P recio hora g e r e n te .

Entero

P recio hora s u p e r v is o r .

EV

Entero

P recio hora e j e c u t i v o .

SEC

Entero

P recio hora s e c r e t a r i a .
(c o n tin a )

www.FreeLibros.me

Captulo 4

Estructuras d e c o n tro l selectivas

(continuacin)

Codificacin
# i n c l u d e < s t d i o . h>
tinclude<conio.h>
tdefine D 600
tdefine G 450
Hdefine S 300
ttdefine EV 150
ttdefine SEC 80
m ain(){
flo at s d e s ,

sal;

i n t h;
c h a r op ;
clrscr();
p rin tf(

"NOMINA\n\nu ) ;

p rin tff

"H or as t r a b a j a d a s e n l a s em a na :

scanf(

" );

&h ) ;

p rin tff

"I n d i c a e l p u e s t o q u e d e s e m p e a s : " ) ;

p r i n t f ( "D = D i r e c t o r \ n G = G e r e n t e \ n S = S u p e r v i s o r \ n E
E j e c u t i v o de v e n t a s \ n T = S e c r e t a r i a

\n");

s c a n f f "%c , &op ) ;
sw itch(op)

{
case

' D ' : s a l = D * h,

break;
case

' G ': s a l = G * h

break;
case

'S ': s a l

=S *

break;
case

: sal

= EV * h;

break;
case

17 ' ; s a l

= SEC * h;

break;

}
if

( sal > 8000 )

{
sd es = s a l * .8;

www.FreeLibros.me

4.4 Selectiva m ltip le ( s w it c h - c a s e )

p r i n t f ( " T u s a l a r i o c o n e l 20 p o r c i e n t o d e d e s c u e n t o e s :
$ %.2 f

", s d e s ) ;

}
else
p r i n t f ( " T u s a l a r i o e s : $ 96 . 2 f " , s a l ) ;
g etch ();
return 0 ;

Explicacin
E n e s te p ro g ra m a s e s o lic ita n d o s d a to s al u su a rio : la c a n tid a d d e h o ras
tra b a ja d a s y el p u e sto . A c o n tin u a c i n s e c a lc u la el s a la rio b ru to ; y si s te es
m a y o r q u e $ 8 ,0 0 0 s e h a r u n d e s c u e n to d e l 2 0 % . F in a lm e n te s e m u e s tra el
s a la rio neto .

Ejecucin
1.

NOMINA
Horas t r a b a j a d a s e n l a s e m a n a : 2
I n d ic a e l p u e s t o que de se m p e a s:
D = D irector
G = G erente
S = Supervisor
E = E j e c u t i v o de v e n t a s
T = Secretaria
D
Tu s a l a r i o e s : $ 1 2 0 0 . 0 0
2.

NOMINA
Horas t r a b a j a d a s e n l a s e m a n a : 30
I n d ic a e l p u e s t o que de se m p e a s:
D = D irector
G = G erente
S = Supervisor
E = E j e c u t i v o de v e n t a s
T = Secretaria
S
Tu s a l a r i o c o n e l 20 p o r c i e n t o d e d e s c u e n t o e s : $ 7 2 0 0 . 0 0

www.FreeLibros.me

Captulo 4

Estructuras de control selectivas

E je rc ic io 4 .7 Indicar el signo zodiacal a partir de una fecha


Descripcin
In tro d u c ir d a y m e s d e n a c im ie n to .
M o stra r el s ig n o z o d ia c a l q u e le c o rre sp o n d a .

Variables
Nombre

Tipo

Uso

dia

Entero

Dia de n a c i m i e n t o .

mes

Entero

Mes de n a c i m i e n t o .

Codificacin
/*ANIO BI SIESTO Y SIGNO ZODIACAL*/
U i n c l u d e < s t d i o .h>
# i n c l u d e < c o n i o . h>
m ain() {
i n t d a , mes;
c l r s c r ( );
p rin tff

"Se m o s t r a r a t u s i g n o z o d i a c a l \ n \ n "

p rin tff

"Cuando n a c i s t e ? (dd/mm)
"%c//%cT, & d i a ,

scanf(
p rin tf(

);

" );

&mes ) ;

"\nTu s i g n o z o d i a c a l e s :

" );

s w i t c h ( mes ) {
case 1 : i f (

d a <= 20 ) p r in t f (

e ls e p r in t f f

"C a p r i c o r n i o " ) ;

"A c u a r i o " ) ;

b reak;
case 2 : i f (

d a <= 2 0 ) p r i n t f f

else p r in tf(

"A c u a r i o " ) ;

"P i s c i s " ) ;

break;
c a s e 3: i f (

d a <=20 ) p r i n t f f

else p r in tff

" P is c is "

);

"Aries" );

break;
c a s e 4: i f f

d a <= 20 ) p r i n t f f

"Aries" ) ;

www.FreeLibros.me

4.4 Selectiva m ltip le ( s w it c h - c a s e )

e l s e p r i n t f ( "T aur o" ) ;


break;
c a s e 5: i f (

d i a <= 20 ) p r i n t f (

"T auro" ) ;

e l s e p r i n t f ( "Geminis" ) ;
break;
c a s e 6: i f (

d i a <= 20 ) p r i n t f (

"Geminis" ) ;

e l s e p r i n t f ( "C an c er " ) ;
break;
c a s e 7: i f (

d i a <= 20 ) p r i n t f f

else p r in tf(

"C a n c e r " ) ;

"Leo" ) ;

break;
c a s e 8: i f (

d i a <= 2 0 ) p r i n t f (

"Leo" ) ;

e ls e p r i n t f ( "V irgo );
break;
case 9: i f (

d i a <=20 ) p r i n t f f

"Virgo" ) ;

e l s e p r i n t f ( "Libra" ) ;
break;
c a s e 10: i f (

d i a <= 20 ) p r i n t f f

"Libra" ) ;

e l s e p r i n t f f "Escorpin" ) ;
break;
case 1 1 : i f (

d i a <= 2 0 ) p r i n t f (

else p r in tf(

"E s c o r p i n " ) ;

"S a g i t a r i o " ) ;

break;
case 1 2 : i f (

d i a <= 2 0 ) p r i n t f (

"S a g i t a r i o " ) ;

e l s e p r i n t f ( C a p r i c o r n i o " ) ;
break;

}
getch();
return 0 ;

Explicacin
Se s o lic ita d a y mes d e n a c im ie n to . E n la v a ria b le m e s , s e a lm a c e n a el n m e ro de
m es y a c o n tin u a c i n s e b u s c a r la ig u a ld a d e n a lg n c a s e , e n c a s o d e e n c o n tra rla
se e v a l a el d a , y d e p e n d ie n d o d e l re s u lta d o s e m u e s tra el sig n o .
(contina)

www.FreeLibros.me

Captulo 4

Estructuras d e co n tro l selectivas

(continuacin)

Ejecucin
Se m o s t r a r a t u s i g n o z o d i a c a l .

Cuando n a c i s t e ?

(dd/mm) 5 4

Tu s i g n o z o d i a c a l e s A r i e s

Resum en
L as e s tru c tu ra s d e c o n tro l se le c tiv a s s o n a q u e lla s q u e e v a l a n u n a c o n d ic i n
b o o le a n a y a p a rtir d e l re s u lta d o p e rm ite n to m a r d e c isio n e s e n tre u n a, d o s
o m s o p c io n e s; a e s to s e le c o n o c e c o m o s e le c c i n c o n d ic io n a l. E x is te n tres
tip o s d e e stru c tu ra s selectiv as: s e le c c i n sim p le , s e le c c i n d o b le y s e le c c i n
m ltip le .
L a e s tru c tu ra d e c o n tro l se le c tiv a s im p le es a q u e lla q u e d e sp u s d e e v a lu a r u n a
c o n d ic i n d e te rm in a su v a lo r, q u e es v e rd a d e ro o fa ls o , y s lo si el re s u lta d o
de la c o n d ic i n es v e rd a d e ro s e re a liz a r la in s tru c c i n o in stru c c io n e s d e fin id a s
p a ra la c o n d ic i n i f .
L a e s tru c tu ra se le c tiv a d o b le es a q u e lla q u e p e rm ite e v a lu a r u n a c o n d ic i n
b o o le a n a y e le g ir e n tre d o s o p c io n e s. S i la c o n d ic i n es v e rd a d e ra e je c u ta r las
in stru c c io n e s a c o n tin u a c i n d e l f , p e ro si es fa ls a s e e je c u ta r la in s tru c c i n
q u e s e e n c u e n tra a c o n tin u a c i n d e l e i s e .
L a e s tru c tu ra d e c o n tro l se le c tiv a d o b le a n id a d a es a q u e lla e s tru c tu ra q u e
d e n tro d e l a lc a n c e d e u n a c o n d ic i n tie n e o tra c o n d ic i n ; e n o tra s p a la b ra s en
u n i f - e l s e s e e n c u e n tra o tro i f - e l se. E s ta e s tru c tu ra es til c u a n d o se
tie n e n tre s o m s o p c io n e s. E s p o sib le u tiliz a r ta n to s a n id a m ie n to s c o m o
se re q u ie ra .
L a e s tru c tu ra d e c o n tro l se le c tiv a m ltip le es a q u e lla q u e p e rm ite e le g ir e n tre
d o s o m s o p c io n e s, s w i t c h e v a l a la e x p re s i n q u e s e e n c u e n tra d e n tro d e los
p a r n te sis y e l re s u lta d o d e s ta s e c o m p a ra c o n v a lo re s a lte rn a tiv o s. E l tip o de
d a to d e la e x p re s i n s lo p u e d e s e r e n te ro o c a r c te r; p o r lo ta n to , la s o p c io n e s
d e b e r n c o in c id ir c o n el tip o d e d a to d e la e x p re si n . S e d e b e r u tiliz a r la p a la b ra
re s e rv a d a b r e a k al t rm in o d e c a d a c a s e p a ra in te rru m p ir la e s tru c tu ra e im p e d ir
qu e la s sig u ie n te s o p c io n e s e in s tru c c io n e s s ig a n e je c u t n d o se .

www.FreeLibros.me

Evaluacin

85

Evaluacin
I. C onteste las siguientes preguntas.
1. C m o s e d e fin e la e s tru c tu ra d e c o n tro l se le c c i n ?
2 . C u n ta s o p c io n e s d e re s p u e s ta p u e d e te n e r u n a c o n d ic i n b o o le a n a ?
3 . E s p o s ib le e s c rib ir u n a s e le c c i n d e n tro d e o tra ?
4 . E s v lid o e v a lu a r u n a c o n d ic i n d e s e le c c i n y si es fa ls a e v a lu a r o tra
c o n d ic i n ?
5 . E n el s w i t c h , e s v lid o e s c rib ir v a ria s o p c io n e s c a s e y al fin al d e e s e c o n ju n to
e s c rib ir b re a k ;?
6 . L a in s tru c c i n d e f a u i t , e s in d is p e n s a b le e n el s w i t c h l
7 . Es la e s tru c tu ra se le c tiv a q u e s e u tiliz a p a ra e je c u ta r u n a a c c i n c u a n d o la
c o n d ic i n es v e rd a d e ra y o tra a c c i n c u a n d o la c o n d ic i n es falsa:
a) S e le c tiv a s im p le

b) S e le c tiv a d o b le a n id a d a

c ) S e le c tiv a d o b le

d) S e le c tiv a m ltip le

8 . E stru c tu ra d e c o n tro l q u e , si n o e n c u e n tra n in g n v a lo r ig u a l a la e x p re si n ,


re a liz a la in s tru c c i n o in s tru c c io n e s a sig n a d a s p o r d e f a u i t (si s ta e x iste ),
a) S e le c tiv a s im p le

b) S e le c tiv a d o b le

c ) S e le c tiv a m ltip le

d) S e le c tiv a d o b le a n id a d a

9 . E stru c tu ra d e c o n tro l q u e , d e sp u s d e e v a lu a r u n a c o n d ic i n , si su v a lo r es
v e rd a d e ro re a liz a u n a o m s a c c io n e s.
a) S e le c tiv a s im p le

b) S e le c tiv a d o b le

c ) S e le c tiv a m ltip le

d) S e le c tiv a d o b le a n id a d a

1 0. E stru c tu ra d e c o n tro l q u e , d e n tro d e u n a c o n d ic i n , tie n e o tra c o n d ic i n a


evaluar. S e u tiliz a c u a n d o h a y tre s o m s o p c io n e s,
a) S e le c tiv a s im p le

b) S e le c tiv a d o b le

c ) S e le c tiv a m ltip le

d) S e le c tiv a d o b le a n id a d a

n . E scrib a u n p ro g ram a que m uestre lo siguiente.


S im u le el tra d ic io n a l ju e g o d e p ie d ra , p a p e l o tije ra u tiliz a n d o la s e stru c tu ra s
d e c o n tro l se le c tiv a s. In c lu y a la lib r e ra t i m e y s t d i i b , a d e m s d e l c o m a n d o
srand.

www.FreeLibros.me

86

Captulo 4

Estructuras d e co n tro l selectivas

E n e s te ju e g o d e a z a r p a rtic ip a n d o s p e rs o n a s b u s c a n d o u n g a n ad o r. L as re g la s so n
las sig u ie n te s:
T ije ra c o rta p ap el

gana

P a p e l e n v u e lv e a p ie d ra

gana

P ie d ra ro m p e tije ra
C o n c u a lq u ie r o p c i n d ife re n te

gana
p ie rd e

Ejercicios propuestos
I. Codifique el siguiente program a.
1. M o stra r lo s sig n o s z o d ia c a le s, v a lid a n d o q u e el m e s in tro d u c id o e s t e n tre
1 y 12, y lo s d a s e n tre 1 y 3 1 , se g n el m es.

II. Diga cul es el resultado de la ejecucin de los siguientes program as.


i.
I*Compra de c a m i s a s * /
#i n c l u d e < s t d i o . h >
#i n c l u d e < c o n i o . h >
m ain()

{
i n t num_camisas;
flo at p r e c , t o t _ c o m p , t o t _ p a g ;
p r i n t f ("CAMISAS P O L O \ n I n g r e s a e l p r e c i o d e l a c a m i s a " ) ;
s c a n f ("*6f, & p r e c ) ;
p r i n t f ( " I n g r e s a e l n u m e ro d e c a m i s a s a c o m p r a r " ) ;
s c a n f ( " W " ,& n u m _ c a m is a s ) ;
tot_com p=num _cam isas*prec;
if

(num_camisas>=3)

else

www.FreeLibros.me

Ejercicios propuestos

}
p rin tf

( " E l t o t a l a p a g a r e s d e $%f", t o t _ p a g ) ;

g etch();
return 0 ;

/* D e scuento en e l alm acn*!


#i n c l u d e < s t d i o . h >
H in c lu d e <conio.h>
m a in ()

{
flo at co mpra, d e s c , t o t _ p a g ;
p rin tf

("LINDA ALMACEN\nIngresa e l t o t a l d e t u compra

s c a n t ("%f",&compra);
if

(compra>1 0 0 0 )

{
desc=compra*. 2 ;

}
e l s e desc=0 ;
tot_pag=com pra-desc ;
p r i n t f ( " T o t a l a p a g a r : \n $ ^ f\ n G R A C I A S POR TU
PREFERENCIA", t o t _ p a g ) ;
getch ();
return 0 ;

* C a p ita l con i n t e r e s e s * /
#i n c l u d e < s t d i o . h >
#i n c l u d e < c o n i o . h >
m a in ()

{
flo at p _ i n t , c a p , t o t _ i , c a p f ;
c h a r op ;
p r i n t f ("BANCO N ACI ON AL\ nIn gre sa t u c a p i t a l

www.FreeLibros.me

");

Captulo 4

Estructuras d e c o n tro l selectivas

s c a n f ("% f",& cap);


p r i n t f ( " I n g r e s a l a t a s a de i n t e r e s e s

");

s c a n f ("% f",& p_int);


to t_i= cap*p_int;
if

(tot_i> 7000)

{
p r i n t f ( " D e s e a s r e i n v e r t i r t u cap i t a l ? \ n S = S i \ n N = N o " ) ;
s c a n f ("% s",& op);
s w i t c h (op)

{
case

'S ' :capf= cap+ tot_i;

p r i n t f ("TU INVERSION SERA DE $%f\nGRACIAS POR TU


PR EF ER E NC IA ",c apf);
break;
c a s e ' N ' : p r i n t f ("TU CAPITAL ESTA SEGURO\nGRACIAS POR TU
PREFERENCIA") ;

}
}
e l s e p r i n t f ("TU CAPITAL ESTA SEGURO\nGRACIAS POR TU PREFERENCIA")
g etch();
return 0 ;

H I. C om plete los siguientes program as.


1.
/*H o s p i t a l * /
in c lu d e < stdio.h>
i n c l u d e < c o n io . h>
#de fine e1 25
Udefine e 2 16
#de fine e 3 20
#de fine e 4 32
main()

{
i n t ti p o e n f , edad, d i a s ,c o s t o t ;
p r i n t f ( " HOSPITAL CERCA DEL C I E L O \ n I n d i c a t u

www.FreeLibros.me

Ejercicios propuestos

enferm edad\n1= Intoxicacion\n2= G ripa\n3= A lergia\n4= D iabetes ' ) ;


s c a n f ( ' ___ " , & t i p o e n f ) ;
p r i n t f (" In d ic a cuantos d ia s e s t u v i s t e h o s p ita liz a d o

");

s c a n f ("% d",& dias);


p r i n t f ( " I n d ic a t u edad ");
s c a n f ("*6d" , & e d a d ) ;

)
case 1 :co sto t= d ia s* e1;
break;
c a s e 2 : c o s t o t = d i a s * ___
break;
case 3:costot= dias*e3;

p r i n t f ( " E l c o s t o d e t u t r a t a m i e n t o y e s t a n c i a e s d e $ %c/" , c o s t o t )
g etch();
return 0 ;

/ * L l a n t a s m a rc a X * /
H include < stdio.h>
U in c lu d e <conio.h>
main()

{
n _ ll;
flo at t o t ;
p r i n t f ( " L la n ta s X\n

);

s c a n f ("% d",& n_ll);


if

(n_ll<5)

www.FreeLibros.me

90

Captulo 4

Estructuras d e c o n tro l selectivas

t o t = n _ l l *300;
p r i n t f ("E l p r e c i o de cada l l a n t a e s de $ 3 0 0 . 0 0 \ n T o t a l a
p a g a r : \ n $ ____ \nGRACIAS POR TU PREFERENCIA" , t o t ) ;

}
if

( ( n_n>= 5)& &( __________

{
tot= n_ll*250;
p r i n t f ("E l p r e c i o de cada l l a n t a e s de $ 2 5 0 . 0 0 \ n T o t a l a
p a g a r : \n$%f\nGRACIAS POR TU P R E F E R E N C I A " , t o t ) ;

}
if

( n _ ll > 10)

{
p r i n t f ("E l p r e c i o de cada l l a n t a e s de $ 2 0 0 . 0 0 \ n T o t a l a
p a g a r : \n$%f\nGRACIAS POR TU P R E F E R E N C I A " , t o t ) ;

}
getchf);
return 0 ;

I*H or as e x t r a s * /
#i n c l u d e < s t d i o . h >
i n c l u d e <conio.h>
m ain()

{
i n t ht;
fl o a t p p h , t p , h e , p e , p d , p t ;
p r i n t f ("EMPRESA P A T I T 0 \ n I n g r e s a e l pa go p o r h o r a " ) ;
s c a n f ( B96 f " , _____ ) ;
p r i n t f ( " I n g r e s a e l n u m e ro d e h o r a s t r a b a j a d a s " ) ;
s c a n f ( " W , _____ ) ;
if

( ht<=40)

{
tp=ht*pph;

www.FreeLibros.me

Ejercicios propuestos

he=ht-4Q;
if

(he<=8)

{
pe=he*pph*2 ;

}
else

{
pd= 8* pp h* 2;
p t = ( h e - 8 ) *____ *3;
pe=pd+pt;

}
p r i n t f ( " E l t o t a l a p a g a r e n e l s u e l d o e s : \ n $ 9f" , t p ) ;
getchf);
return 0 ;

www.FreeLibros.me

91

www.FreeLibros.me

Estructuras
de control repetitivas

E n e s te c a p tu lo s e a n a liz a n la s fo rm a s d e re a liz a r u n a re p e tic i n a s


c o m o su s d ife re n te s u so s y a p lic a c io n e s .
U na e s tru c tu ra ite ra tiv a p e rm ite re p e tir u n a a c c i n ; la re p e tic i n es
c o n tro la d a p o r u n a e x p re s i n q u e es u n a c o n d ic i n b o o le a n a . H a y tres
fo rm as d e e x p re s a r las re p e tic io n e s o lo s c ic lo s: f o r , w h i i e y d o - w h ie .
El c u e rp o d e l c ic lo e s t c o n s titu id o d e n tro d e la e s tru c tu ra re p e titiv a ;
la re p e tic i n p u e d e s e r d e fin id a o in d e fin id a . L a ite ra c i n es d e fin id a
c u a n d o s e c o n o c e d e a n te m a n o el n m e ro d e re p e tic io n e s a e je c u ta r; p o r
e je m p lo , si s e d e s e a s u m a r c in c o n m e ro s , s e c o n o c e d e a n te m a n o q u e se
re p e tir la a c c i n d e s u m a r c in c o o c a sio n e s y, p a ra e sto s c a so s, es m e jo r
u tiliz a r la e s tru c tu ra d e c o n tro l

for.

L a ite ra c i n es in d e fin id a c u a n d o n o s e c o n o c e d e a n te m a n o el n m e ro d e
v eces q u e s e re p e tir a lg u n a a c c i n ; p o r e je m p lo , c u a n d o s e p re g u n ta al

www.FreeLibros.me

94

Captulo 5

Estructuras d e c o n tro l repetitivas

u su a rio si d e s e a re p e tir a lg u n a in s tru c c i n y s te p u e d e re s p o n d e r s o n o . E n e ste


c a s o n o s e c o n o c e c u n ta s v e c e s s e re p e tir p o rq u e e s to d e p e n d e d e la re s p u e s ta
del u su a rio . P a ra la s re p e tic io n e s in d e fin id a s es m e jo r u tiliz a r la s e s tru c tu ra s w h i l e
y d o-w hile .
Es p o s ib le u s a r las e s tru c tu ra s d e c o n tro l w/?ie,

do-w hiie

for

c a si e n fo rm a

in d ife re n te .

5.1 Estructura repetitiva w h i l e


E n e s ta e stru c tu ra , la re p e tic i n s e re a liz a r ta n ta s v e c e s c o m o s e in d iq u e m ie n tra s
se c u m p la u n a c o n d ic i n . L a c a n tid a d d e re p e tic io n e s p u e d e s e r d e fin id a o
in d e fin id a . L a re p re s e n ta c i n d e la e s tru c tu ra es la sig u ie n te :
expresin

1;

w h ile (expresin 2 )

{
in stru cci n

1;

e x p r e s i n 3;

}
donde:
expresin

sie m p re s e r el v a lo r d e in ic io d e la v a ria b le d e c o n tro l


(a sig n a c i n ).

expresin 2

es la c o n d ic i n b o o le a n a .

expresin 3

es la fo rm a e n q u e c a m b ia la v a ria b le d e c o n tro l (a s ig n a c i n ).
in s tru c c io n e s a e je c u ta r

in stru cci n

Ej e m p l o 5.1 Im prim ir los nm eros enteros del 1 al 10


# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
mai n( )

{
in t

c;

c l r s c r f );

c=1;
while(c<=10)

{
p rin tff"

",c );

c=c+ 1 ;

www.FreeLibros.me

5.1 Estructura rep etitiva w h i l e

}
getchf);
return 0 ;
}

L a v a ria b le d e c o n tro l es c, q u e ta m b i n s e rv ir p a ra g e n e ra r lo s n m e ro s . S e
in ic ia liz a e n 1, y a q u e es e l p rim e r v a lo r a im p rim ir. D e n tro d e l c ic lo s e im p rim e c
y s e in c re m e n ta d e u n o e n u n o .
El c ic lo re p e titiv o e s t c o n tro la d o p o r c; la re p e tic i n s e e fe c tu a r m ie n tra s el
v a lo r d e l c o n ta d o r s e a m e n o r o ig u a l q u e 10. P o r e llo es u n a re p e tic i n
defin id a.
E n e s te e je rc ic io , la v a ria b le d e c o n tro l es u n contador, y s e le lla m a a s a la
v a ria b le q u e sirv e p a ra in c re m e n ta r d e u n o e n u n o . E l c o n ta d o r d e b e te n e r las
sig u ie n te s c a ra c te rstic a s: s u v a lo r d e in ic io es 1, y s e in c re m e n ta o d is m in u y e de
u n o e n u n o , a u n q u e e n o c a sio n e s s e u tiliz a o tra p ro p o rc i n fija (d e c in c o e n cin co ,
d e tres e n tre s , e tc .). E n la c o n d ic i n s e d e b e e v a lu a r el v a lo r d e l c o n ta d o r, p a ra
d e te rm in a r c u n d o d e b e fin a liz a r el c ic lo .
T am b in es n e c e sa rio a g ru p a r c o n llaves las in stru c c io n e s p r i n t f ( " %c/ u, c ) ; y e =
c+1 ; y a q u e d e c u m p lirs e la c o n d ic i n es n e c e s a rio e fe c tu a r la s d o s in stru c c io n e s.
Al ig u a l q u e e n o tra s e stru c tu ra s d e c o n tro l, el a lc a n c e d e u n a c o n d ic i n
p re d e te rm in a d a es u n a in s tru c c i n ; p o r ta l ra z n si e x is te m s d e u n a al re p e tirs e
stas d e b e n a g ru p a rs e c o n lla v e s.

Ej e m p l o 5.2 Sumar los nm eros enteros del 1 al 5 e im prim ir el resultado


# i n c l u d e < s t d i o . h>
ttinelude<conio. h>
main()
{
i n t I , S;
c lr s c r ();
1=1; S=0;
while(I<=5)
{
S = S+ I;
I = 1+1;
(c o n tin a )

www.FreeLibros.me

Captulo 5

Estructuras d e c o n tro l repetitivas

(c o n tin u a c i n )

p r i n t f ( " L a suma d e l o s n m e r o s d e l

1 a l 5 e s %d " , S ) ;

getch f);
return 0 ;

E ste p ro g ra m a u tiliz a u n a re p e tic i n m e d ia n te el u so d e l c o n ta d o r p a ra in d ic a r


el n m e ro d e o c a sio n e s q u e s e e je c u ta el c ic lo . L a le tr a i s e rv ir p a ra g e n e ra r los
n m e ro s d e l 1 al 5, s e d e b e in ic ia liz a r el v a lo r d e i y d e s a n te s d e la c o n d ic i n ,
s g u a rd a r la s u m a d e lo s n m e ro s g e n e ra d o s p o r i , y s ta s e in c re m e n ta r e n u n o ,
el c ic lo s e re p e tir m ie n tra s i s e a m e n o r o ig u a l q u e 5. S e m u e s tra la s u m a fu e ra
de la c o n d ic i n , y a q u e el re s u lta d o s e im p rim ir s lo u n a vez.
A q u ta m b i n s e u tiliz a u n acum ulador u n a v a ria b le q u e p e rm ite s u m a r o
a c u m u la r m e d ia n te o tra o p e ra c i n u n a s e rie d e n m e ro s q u e d e b e in ic ia rs e
en c e ro ; d e lo c o n tra rio c o m e n z a r c o n el v a lo r a lm a c e n a d o e n la m e m o ria
a n te rio rm e n te (b a su ra ).
Ej e m p l o 5.3 Hallar el producto de varios nm eros positivos introducidos
p o r teclado y term inar el proceso cuando se contesta con una
letra diferente a s
t f i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
mai n( )

{
i n t p,num;
char re sp = 's';
c l r s c r f );
p

=i ;

p r i n t f f " Dame un n um e r o " );


s c a n f ( %/", &num);
w hile(resp= = 's')

{
p =p*num;
p rin tf("

\n dame o t r o numero

");

scanf("%d",&num);
p rin tff"

\n I n g r e s a r o t r o numero s / n

");

s c a n f f U96C" , & r e s p ) ;

(c o n tin a )

www.FreeLibros.me

5.1 Estructura rep etitiva w h i l e

}
p r i n t f (" e l

t o t a l de l a

m u ltip lica ci n

e s %c/ " , p ) ;

getchf);
return

0;

E n e s te e je m p lo , la v a ria b le d e c o n tro l es re s p , u n a fo rm a d e ite ra c i n in d e fin id a .


A q u r e s p es u n a b an d era o centinela, u n tip o d e v a ria b le e m p le a d o c u a n d o el
cic lo es in d e fin id o , o s e a q u e la re p e tic i n s e h a r d e a c u e rd o al v a lo r c o n te n id o ,
q u e n o d e p e n d e d e l n m e ro d e ite ra c io n e s . E l v a lo r d e la b a n d e ra d e b e se r
d ife re n te a lo s d a to s u tiliz a d o s.
L a v a ria b le

s e u tiliza c o m o a c u m u la d o r y g u a rd a el re su lta d o d e la m u ltip lic a c i n

de los n m e ro s; s e in ic ializ a co n 1 a n tes d e e n tra r al cic lo (es im p o rta n te q u e


p in icie e n u n o p a ra n o m o d ific a r la m u ltip lic a c i n d e l p rim e r n m e ro ). F u e ra
del cic lo s e so lic ita e l p rim e r n m ero , y ya d e n tro d e l cic lo s e p id e o tro n m e ro
a m u ltiplicar, s e lee, s e m u ltip lic a y se a lm ac en a . E n se g u id a p re g u n ta si s e d e se a
in tro d u c ir otro n m ero , lo q u e re p ite h a sta q u e el c o n te n id o d e

resp

s e a d ifere n te

a s . A l sa lir d e l ciclo, s e m u e stra el re su lta d o d e la a c u m u la c i n d e l p ro d u cto .


Ej e m p l o 5.4 Producir una tabla de m ultiplicar e im prim irla en la pantalla
utilizando la estructura de control w h ile
# i n c l u d e < s t d i o .h>
f t i n c l u d e < c o n i o . h>
mai n( )

{
in t i,n ;

c lrs c rf);

p r i n t f ( " D A M E EL NUMERO DE TABLA : " ) ;


scanf("% d",&n);
= i;
w h ile(i< = 10)

{
p r i n t f ( " \ n %c/*%c/=%c/ " , n , i , n * i ) ;

i ++;
}
getch();
return

0;

www.FreeLibros.me

Captulo 5

Estructuras d e c o n tro l repetitivas

Se d e c la ra n d o s v a ria b le s: la n p a ra in d ic a r el n m e ro d e la ta b la q u e s e v a a
e la b o ra r y la p a ra re a liz a r el c ic lo d e 1 a 10 p a ra la m u ltip lic a c i n ; n e n to n c e s
g u a rd a el n m e ro d e la ta b la . E l c ic lo q u e v a d e 1 a 10 m u e s tra el n m e ro
el n m e ro y el re s u lta d o d e m u ltip lic a r

n,

n*i.

E ste e je m p lo s e m o s tra r ta m b i n c o n la s d e m s e s tru c tu ra s d e c o n tro l


rep etitiv as.
Es im p o rta n te o b s e rv a r q u e e n to d o s e sto s e je m p lo s d e la e s tru c tu ra d e c o n tro l
w h i l e , n o s e e s c rib e p u n to y c o m a al final d e la c o n d ic i n , y a q u e e s to in d ic a
q u e la e s tru c tu ra d e c o n tro l te rm in a e n e s e p u n to y n o re p ite la s in stru c c io n e s.
A c o n tin u a c i n s e m u e s tra el p ro g ra m a d e la ta b la d e m u ltip lic a r, p e ro c o n un
p u n to y c o m a al final d e la c o n d ic i n . Q u im p rim ir el e je m p lo ?
Ej e m p l o 5.5 Tabla de m ultiplicar con un error de lgica
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
mai n( )

{
in t i,n ;

c lrs c rf);

p r i n t f ( " D A M E EL NUMERO DE TABLA DE MULTIPLI CAR:

");

s c a n f ( U96 d " , & n ) ;


i=1;

w h i l e ( i < = 10 ) ;

{
p r i n t f ( " \ n 96d*96d=9td ' , n , i , n * i ) ;
i++;

}
getch();
return

0;

El c o m p ila d o r n o m a rc a r e rro r, y a q u e n o e s e rro r d e s in ta x is , p e ro no


te rm in a r la e je c u c i n d e l p ro g ra m a ( e n tra e n c ic lo ) p o rq u e n o c a m b ia el v a lo r
d e la i c o n te n id o e n la c o n d ic i n . L a fo rm a c o rre c ta n o lle v a el p u n to y c o m a
al fin al d e while.
A h o ra s e c o m p a ra el c o m p o rta m ie n to d e e sto s tre s fra g m e n to s d e p ro g ra m a , q u e
a u n q u e s o n s im ila re s p ro d u c e n d ife re n te re su lta d o .

www.FreeLibros.me

5.1 Estructura rep etitiva w h i l e

99

1)

c= 1 0 ;
w h i l e (c<21)

{
p r i n t f ( %c/ ", c ) ;
c=c+ 2 ;

}
2)
c=10;

w h i l e (c<21)

{
c=c+ 2 ;
p r i n t f ( " %c/ " , c ) ;

}
3)

c=70;
w hile

(c<21)

p r i n t f f " %c/ ", c ; ;


c=c+2 ;

E n el c a s o 1 s e im p rim ir 70 72 74 76 78 20 , y a q u e las in s tru c c io n e s re p e tid a s


so n im p rim ir y lu e g o in c re m e n ta r c e n d o s. E n el c a s o 2 s e im p rim ir 12 1 4 76

78

20 , y a q u e p rim e ro s e in d ic a el in c re m e n to d e la v a ria b le c y d e sp u s s e im p rim e .

F in a lm e n te , e n el c a s o 3 70 70 70 70 . . . s e im p rim ir d e fo rm a in d e fin id a ( e n tra


en c ic lo ), y a q u e s e re p e tir s o la m e n te la p rim e ra in s tru c c i n d e sp u s d e la
c o n d ic i n p o rq u e n o h a y lla v e s q u e a g ru p e n las d o s in s tru c c io n e s .

Ej e m p l o 5.6 Sumar los nmeros pares y multiplicar los nmeros impares hasta
que la suma sea mayor que 50 y el producto sea mayor que 150
# i n c l u d e < s t d i o . h>
Uinclude<conio.h>
mai n( )

{
i n t num,suma=0 , p r o d = 1 ;
c lrs c rf);

(c o n tin a )

www.FreeLibros.me

100

Captulo 5

Estructuras d e c o n tro l repetitivas

[continuacin)
while(suma<=50 || prod<=150)

{
p r i n t f f " \n \ t DAME EL NUMERO ENTERO:

");

s c a n f ( " * 6 d u,&num);
i f ( n u m 96 2 ==0 )
suma=suma +num;
else
prod=prod*num;

}
p r i n t f f " \ n \ t LA SUMA ES : %c/ " , s u m a ) ;
p r i n t f ( " \ n \ t EL PRODUCTO ES : %c/ u, p r o d ) ;
g etch();
return 0 ;

}
E n e s te e je m p lo s e u sa n d o s v a ria b le s d e c o n tro l q u e s o n d o s a c u m u la d o re s , d a d o
q u e la ite ra c i n d e p e n d e d e d o s c o n d ic io n e s: q u e
y que

prod

sum

se a m e n o r o ig u a l q u e 50

se a m en o r o ig u al q u e 150. P ara u n ir la d o s se u tiliza el o p e ra d o r | (or) q u e

fu n c io n a d e la sig u ie n te fo rm a : e v a l a y si u n a d e la s c o n d ic io n e s es v e rd a d e ra se
e je c u ta d e n u e v o e l c ic lo , el c ic lo te rm in a c u a n d o a m b a s c o n d ic io n e s s e a n fa lsa s.
U na vez cap tu rad o un n m ero en la variable num, se pregunta si al realizarse la d iv isi n
de num entre d o s el residuo e s igual q u e cero; si la cond ici n es verdadera se su m a

num a

sum a, de lo contrario se m ultiplica num p o r prod. Y esto se repite m ientras el co n ten id o


de

sum sea

m en o r o igual q u e

50 o p r o d

se a m en o r o igual q u e

150.

P a ra fin a liz a r el te m a , d e b e m o s s e a la r q u e la s c o n d ic io n e s p u e d e n u tiliz a r c o m o


v a ria b le d e c o n tro l c o n ta d o re s o a c u m u la d o re s . E l c o n t a d o r es u n a v a ria b le q u e se
in c re m e n ta o d is m in u y e e n c a n tid a d e s fijas e n c a d a ite ra c i n (d e 2 e n 2 , d e 5 e n 5,
etc.). E l

acumulador

es u n a v a ria b le q u e s e in c re m e n ta o d is m in u y e e n c a n tid a d e s

d ife re n te s e n c a d a ite ra c i n . L a

bandera

s irv e p a ra in d ic a r e sta d o s d e v e rd a d e ro o

fa ls o d e la c o n d ic i n .

E je rc ic io s re s u e lt o s
Eje r c ic io 5.1 Encontrar cuatro m ltiplos de un nm ero cualquiera
Descripcin
L e e r u n n m ero .

www.FreeLibros.me

5.1 Estructura rep etitiva w h i l e

L ee r n m e ro s a rb itra rio s.
V erificar q u e el n m e ro s e a m ltip lo d e l p rim e ro .
Si es m ltip lo im p rim irlo .
Variables
Nombre

Tipo

Uso

num

Entero

Nmero d e l q u e s e d e b e n o b t e n e r m l t i p l o s .

numC

Entero

Nmero a e v a l u a r .

cont

Entero

Cu en ta l o s m l t i p l o s .

Codificacin
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
mai n( )

{
i n t num, numC,

cont=0;

c lrs c rf);
p r i n t f f " Dame un numero p a r a b u s c a r s us m l t i p l o s
scanf(

*);

&num) ;

while(cont<=4)

{
p r i n t f ( " \n\tDame un n um e r o " );
scanf(&num C) ;
i f ( numC96num==0 )

{
p r i n t f ( U9ed e s m l t i p l o

" ,numC);

cont++;

}
}
getch();
return 0;

Explicacin
S e s o lic ita u n n m e ro y s e g u a rd a e n num , q u e s e rv ir p a ra b u s c a r su s m ltip lo s .
A c o n tin u a c i n s e a n a liz a la c o n d ic i n e n la q u e s e p re g u n ta si c o n t es m e n o r o
ig u al q u e 4 ; c o n t a lm a c e n a la c u e n ta d e l n m e ro d e m ltip lo s e n c o n tra d o s.
(contina)

www.FreeLibros.me

102

Captulo 5

Estructuras d e c o n tro l repetitivas

[continuacin)

S e g u a rd a u n n m e ro e n

numc ,

lu e g o s e e v a l a si el re s id u o d e

numc

d iv id id o e n tre

es ig u a l q u e cero ; si es v e rd a d e ro s e m u e s tra el m ltip lo y s e in c re m e n ta


Se re p ite e s ta o p e ra c i n h a s ta q u e el c o n ta d o r c o n t lle g u e a 4.

num

cont.

Ejecucin
Dame un numero p a r a b u s c a r s us m l t i p l o s
5
7
6

6 es m l t i p l o
9
154
154 e s m l t i p l o
8

8 es m l t i p l o
70
70 e s m l t i p l o

5.2 Estructura repetitiva d o - w h ile


E n e s ta e s tru c tu ra

do-w hile,

la c o n d ic i n d e c o n tin u a c i n d e l c ic lo s e p ru e b a al

final d e l m is m o . F u n c io n a d e m a n e ra s im ila r a la e s tru c tu ra

w h ile ;

la d ife re n c ia

es q u e u n a e v a l a al in ic io d e l c ic lo y la o tra al fin al. E n e s ta e s tru c tu ra es


in d is p e n s a b le e s c rib ir la s lla v e s , a u n q u e p u d ie ra p a re c e r in n e c e s a rio u tiliz a rla s.
T a m b i n s e d e b e n o ta r q u e al fin al d e la c o n d ic i n

do-w hile

c o m a. L a re p re s e n ta c i n d e la e s tru c tu ra es la sig u ie n te :
expresin

1;

do

{
in stru cci n

1;

e x p r e s i n 3;
} w h ile(e xpresin 2);

donde:
expresin

expresin 3

es la a s ig n a c i n d e in ic io .
es la a s ig n a c i n d e v a ria c i n .

www.FreeLibros.me

s e e s c r ib e p u n to y

5.2 Estructura rep etitiva d o - w h i l e

instruccin

expresin

d e b e s e r u n a e x p re s i n b o o lea n a.

s o n la s in s tru c c io n e s a e je cu tar.

L a e s tru c tu ra tie n e lo s m ism o s e le m e n to s q u e u tiliz a la e s tru c tu ra w h i l e . C o m o se


m e n c io n a n te rio rm e n te , estas e s tru c tu ra s fu n c io n a n d e fo rm a sim ila r.
E l d o - w h i le tie n e u n a a p lic a c i n m u y u su a l: c u a n d o s e re q u ie re re p e tir p o r lo
m e n o s u n a v e z u n p ro g ra m a . O b s e rv e el sig u ie n te e je m p lo :

Ej e m p l o 5.7 O b te n e r el prom edio de una determ inada cantidad


de nm eros ledos desde el teclado
# i n c l u d e < s t d i o . h>
ttinclude<conio. h>
main()
{
float num,cuenta,sum;
c lr s c r ();
sum=0 ;cuenta= 0 ;
do

( c u e n t a - 1) ) ;
getch();
return 0 ;
}

El p ro g ra m a u tiliz a d o s v a ria b le s: sum q u e s irv e p a ra s u m a r lo s n m e ro s q u e


se v a n in g re s a n d o (a c u m u la d o r) y c u e n t a p a ra c o n ta r la c a n tid a d d e n m e ro s
in g re sa d o s (c o n ta d o r). S e v a n s o lic ita n d o lo s n m e ro s y s e s u m a n ; c u a n d o e s c rib a
-1

s e d e tie n e el in g re s o d e sto s y e n e s e m o m e n to num fu n c io n a c o m o b a n d e ra .

P ra q u e la o p e ra c i n s e a c o rre c ta s e d e b e re s ta r el - 1 a la v a ria b le sum y ta m b i n


se d e b e re s ta r 1 a la v a ria b le cuenta.

www.FreeLibros.me

103

104

Captulo 5

Estructuras d e c o n tro l repetitivas

Ej e m p l o 5.8 Calcular el pago a realizar segn los litros de gasolina


# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
tidefine p r e c i o

mai n( )

{
f l o a t 1;
c h a r R;

e lrse r();
do

{
p r i n t f ( u cuantos l i t r o s

s on

");

s c a n f ( "% f" , & 1 ) ;


p r i n t f ( " \ n e l pa go e s de %.2 f
p r i n t f ( \n O t r o c a l c u l o

s/n

" fl* p re c io );

");

scanf('% c",&R);

}while(R==,s ' ) ;
g e t c h f );
return

0;

E ste p ro g ra m a c o n tro la la re p e tic i n m e d ia n te el c e n tin e la (o b a n d e ra )

R.

R e c u e rd e q u e lo im p o rta n te c o n re s p e c to al u so d e l c e n tin e la es q u e d e b e e sta r


d e fin id o d e fo rm a q u e n o s e c o n fu n d a c o n o tro s d ato s.
E n u n a c o n s ta n te lla m a d a

p r e c io

s e a lm a c e n el v a lo r p o r litro . S e s o lic ita el

n m e ro d e l i t r o s y s e re a liz a el c lc u lo d e l p a g o . D e sp u s d e la o p e ra c i n se
p re g u n ta si s e d e s e a re a liz a r o tro c lc u lo , a lm a c e n a n d o la re s p u e s ta e n la v a ria b le
r.

C o m o s e a p re c ia , n o s e c o n o c e d e a n te m a n o c u n tas v e c e s s e re p e tir el

p ro g ra m a , p e ro s e g a ra n tiz a q u e al m e n o s u n a v e z s e e je c u ta r el c u e rp o d e l c ic lo .

Ej e m p l o 5.9 Imprimir en pantalla la tabla de multiplicar de un nmero tecleado


por el usuario, utilizando la estructura de control d o - w h i l e
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
mai n( )

www.FreeLibros.me

5.2 Estructura rep etitiva d o - w h i l e

in t i,n ;

105

c lrs c rf);

p r i n t f f "DAME EL NUMERO DE LA TABLA DE MUL TI P LI CA R:

");

s c a n f("% d ",& n );

1 =1 ;
do {
p r i n t f ( " \ n %c/*%c/=%d *, n , i , n * i ) ;

i ++;
} w h ile (i< = 10) ;
getchf);
return 0 ;

A q u s e m u e s tra

lame e l

numero d e

1 al 10. S e d e c la ra n d o s v a ria b le s: la

la

tabla

de m u l t ip l ic a r

y g e n e ra u n a del

p a ra in d ic a r el n m e ro d e la ta b la q u e se

va a e la b o ra r y la p a ra re a liz a r el c ic lo d e 1 a 10. C o n fo rm e a v a n z a el c ic lo
se im p rim e el re s u lta d o d e m u ltip lic a r
la e s tru c tu ra

w h ile

do-whiie

n*i.

O b s e rv e la s d ife re n c ia s e n el u so d e

p a ra e s te e je m p lo .

E je rc ic io s re s u e lto s
Ej e r c i c i o 5 .2 Adivinar en un mximo de cinco oportunidades un entero
com prendido entre 1 y 100. En cada ciclo la com putadora
debe decir si el que se captura es mayor o m en or que el que
gener autom ticam ente

Descripcin
G e n e ra r u n n m e ro a le a to rio .
S o lic ita r u n n m e ro al u su a rio .
C o m p a ra rlo s.
M o stra r e l re su lta d o .
Variables
Nombre

Tipo

Uso

Entero

C o n t a d o r de i t e r a c i o n e s .

nusuario

Entero

Nmero g e n e r a d o p o r e l

numcom

Entero

Guarda e l nmero g e n e r a d o .

usuario.

(c o n tin a )

www.FreeLibros.me

106

Captulo 5

Estructuras d e c o n tro l repetitivas

(continuacin)

Codificacin
t t i n c l u d e < s t d i o . h>
tinclude< conio.h>
# i n c l u d e < s t d l i b . h>
mai n( )

{
in t

c= 0 , nu s u a r i o, n u m c o m ;

clrs c r();

randomize()
numcom=1 +random( 1 0 0 );
do {
p r i n t f ( " \ n Dame un numero e n t e r o :

");

s c a n f f "%c/", & n u s u a r i o ) ;
if(nusuario>numcom)
p r i n t f ( " \n t u numero e s mayor a l m o ) ;
else
p r i n t f ( " \n t u numero e s menor a l m o ) ;
c=c+ 1 ;

}
w h i l e ( nusu ari o! =numc om && c < 5 ) ;
if

(nusuario==numcom)

p rin tf("\n

Fe licid a d e s!

L o l o g r a s t e en

in te n to s",c);

else
p r i n t f (" M ejor s u e r t e p a r a l a p r x im a " ) ;
getch();
return 0 ;

Explicacin
A q u s e u tiliz a la b ib lio te c a s t d l i b . h , q u e p e rm ite el u so d e la s fu n c io n e s
ra ndomize( ) y random(); la p rim e ra in ic ia liz a r el g e n e ra d o r d e n m e ro s
p se u d o a le a to rio s , c o n u n a s e m illa q u e v a e n fu n c i n d e la h o ra a c tu a l, lo
qu e p e rm ite q u e n o s e re p ita n la s m is m a s se c u e n c ia s d e n m e ro s a le a to rio s .
L a se g u n d a fu n c i n p ro d u c e u n p s e u d o a le a to rio e n el ra n g o d e 0 a x-1.
P o r ta l ra z n s e e sc rib e p rim e ro la g e n e ra c i n d e u n n m e ro p se u d o a le a to rio
y e n s e g u id a c o n random(i 0 0 ) s e g e n e ra el n m e ro e n tre 0 y 99 , p o r lo q u e
a g re g a m o s 1 p a ra q u e q u e d e el v a lo r d e numcom e n tre 1 y 100. U n o d e los
o p e ra d o re s q u e s e u tiliz a es / = q u e sig n ific a d ife re n te y s e lee: si n u s u a r io es

www.FreeLibros.me

5.2 Estructura rep etitiva d o - w h i l e

d ife re n te d e

numcom.

O b s e rv e m o s q u e la c o n d ic i n e s t c o m p u e s ta p o r dos

e n u n c ia d o s , u n id o s p o r el o p e ra d o r

&& ( a n d ) ,

q u e d e b e n s e r v e rd a d e ro s p a ra q u e

se re p ita el c ic lo .
Al m o m e n to d e s e r ig u a le s

n u s u a r i o y numcom s e

im p rim e la p a la b ra

el n m e ro d e in te n to s; e n c a s o c o n tra rio im p rim e la le y e n d a

fe licid a d e s

-M e j o r s u e r t e p a r a

l a prxim a".

Ejecucin
(E je m p lo si s e g e n e ra a le a to ria m e n te el 11).
Dame un numero e n t e r o :

50

t u numero e s mayor a l mi
Dame un numero e n t e r o :

t u numero e s menor a l mo
Dame un numero e n t e r o :

21

t u numero e s mayor a l mi
Dame un numero e n t e r o :

10

t u numero e s menor a l mo
Dame un numero e n t e r o :

11

F e l i c i d a d e s ! L o l o g r a s t e en 5 i n t e n t o s

E je rc ic io s re s u e lto s
E je rc ic io 5.3 Leer nmeros desde el teclado y sumar los primeros cinco impares

Descripcin
Pfedir u n n m ero .
V erificar si es im p a r y su m a rlo .
M o stra r re su lta d o .

Vari abl es
Nombre

Tipo

Uso

suma

Entero o r e a l

Guarda l a

num

Entero

Es e l nmero l e d o

cont

Entero

Cuenta l a

suma de l o s nmeros i m p a r e s .
del

teclado.

c a n t i d a d de nmeros i m p a r e s .

(c o n tin a )

www.FreeLibros.me

108

Captulo 5

Estructuras d e c o n tro l repetitivas

[continuacin)

Codificacin
/* Sumar c i n c o nmeros i m p a r e s ,

l e d o s d e s de e l t e c l a d o .

*/

t t i n c l u d e < s t d i o . h>
tinclude< conio.h>

mai n( )

{
in t

suma=(d, num,

c o n t =0 ;

c l r s c r f );
do{
p r i n t f ( " \n Dame un numero

n) ;

s c a n f f "%cT, &num);
i f (nu m% 2 ==1 )

{
suma+=num;
cont++;

}
}while(cont< 5);
p r i n t f ( " \ n \ n \ t L a suma de 5 nmeros i m p a r e s e s %c/ " ,s u m a ) ;
getch();
return

0;

Explicacin
S e in ic ia liz a n las v a ria b le s suma y c o n t e n 0. L a e s tru c tu ra re p e titiv a
p e rm itir re p e tir la e je c u c i n m ie n tra s c o n t s e a m e n o r q u e 5.
L a re p e tic i n c o n s is te e n p e d ir u n n m e ro y a lm a c e n a rlo e n

num,

do-while

s e e v a l a si el

re s id u o d e la d iv is i n d e l c o n te n id o d e num e n tre d o s es uno: si es v e rd a d e ro ,


el n m e ro s e a c u m u la e n la v a ria b le suma y el c o n ta d o r s e in c re m e n ta . S e e v a l a
si

cont

es m e n o r q u e 5. S e re p e tir n la s in s tru c c io n e s h a s ta q u e

Ejecucin
Dame un numero 2
Dame un numero 5
Dame un numero 3
Dame un numero 1

www.FreeLibros.me

cont

lle g u e a 5.

5.3 Estructura rep etitiva f o r

109

Dame un numero 6
Dame un numero 9

un numero 4

Dame un numero

L a suma de 5 nmeros i m p a r e s e s 29

5.3 Estructura repetitiva f o r


L a e s tru c tu ra d e c o n tro l

for

s e u tiliz a g e n e ra lm e n te c u a n d o la re p e tic i n e st

d e fin id a. E sta e s tru c tu ra m a n e ja to d o s lo s d e ta lle s d e la re p e tic i n c o n tro la d a p o r


c o n tad o r. L a re p re s e n ta c i n d e la e s tru c tu ra re p e titiv a es la sig u ie n te :
for

( expresin

1; e x p r e s i n 2; e x p r e s i n 3)
in s tru c c i n

donde:
expresin

es el n o m b re d e la v a ria b le d e c o n tro l y s u v a lo r d e in ic io .

es la q u e e v a l a la c o n d ic i n d e c o n tro l.

expresin 2
in stru cci n

instruccin d e increm ento o decrem ento d e la variable d e control.

expresin 3

La
2

expresin

s o n las in s tru c c io n e s q u e h a n d e re p e tirs e .

expresin 3

sie m p re s e r n a sig n a c io n e s, m ie n tra s q u e

expresin

sie m p re te n d r q u e s e r u n a e x p re s i n b o o le a n a . A l ig u a l q u e e n la s a n te rio re s

e stru c tu ra s re p e titiv a s, la s p a rte s d e la e s tru c tu ra

for

so n sim ila re s.

L as e stru c tu ra s re p e titiv a s p u e d e n s e r e q u iv a le n te s e n c ie rto s c a so s. L o id e a l es


u sa r

for

c u a n d o la re p e tic i n es d e fin id a , y la s o tra s d o s c u a n d o la re p e tic i n

es in d e fin id a ,

w hile

g e n e ra liz a la re p e tic i n , y la s o tra s d o s e s tru c tu ra s s o n caso s

p a rtic u la re s d e l u so d e e lla, y fa c ilita n la re p e tic i n .


Ej e m p l o 5 .1 0 Imprimir en pantalla los prim eros 15 nm eros positivos enteros
en orden decreciente
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
mai n( )

{
in t i;
c l r s c r ( );
(contina)

www.FreeLibros.me

110

Captulo 5

Estructuras d e c o n tro l repetitivas

(continuacin)

f o r ( i =1 5 ; i > 0 ; i - - )
p r in tf ( "W \ i ) ;
g etch f);
return

0;

L a v a ria b le d e c o n tro l es y a d e m s s e rv ir p a ra im p rim ir lo s s. E l n m e ro


co n q u e in ic ia , e n e s te c a so , es 15. A c o n tin u a c i n s e e v a l a la e x p re s i n 2 p a ra
v erificar la c o n tin u a c i n d e l c ic lo , q u e c u m p le la c o n d ic i n d e s e r m a y o r a 0.
F in a lm e n te s e e v a l a la e x p re s i n 3 p a ra d e te rm in a r la fo rm a e n q u e s e d ism in u y e
la v a ria b le ; e n e s te c a so , el d e c re m e n to es d e 1. S e c o n tin a d e e s ta m a n e ra h a sta
q u e v a le 0.

Ej e m p l o 5 .1 1 Im prim ir tod as las letras del alfabeto de forma inversa


# i n c l u d e < s t d i o . h>
#include<conio.h>
mai n( )

{
char l e t r a ;
clrscr();

prin tf("E stas

so n l a s l e t r a s d e l

alfabeto:

");

fo r(le tra = 'Z ';le tra > = 'A ';le tra --)
p r i n t f ( "%c\t " , l e t r a ) ;
getchf);

return

0;

E ste p ro g ra m a g e n e ra las le tra s d e l a lfa b e to , in ic ia n d o c o n la Z y te rm in a n d o


c o n la A . E l le n g u a je C , re c o n o c e lo s c a ra c te re s d e l a lfa b e to p o r s u c d ig o
A S C II.
S e d e c la ra la v a ria b le l e t r a , d e tip o c a r c te r, q u e in ic ia c o n el v a lo r d e Z.
L a c o n d ic i n in d ic a q u e s e r v lid a m ie n tra s l e t r a s e a u n v a lo r m a y o r o ig u al
q u e A , y s e d is m in u y e d e u n o e n uno.

www.FreeLibros.me

5.3 Estructura rep etitiva f o r

Ej e m p l o 5.12 Imprimir en pantalla la tabla de m ultiplicar de un nm ero


utilizando la estructura de control f o r
itinel u d e < s t d io .h >
t t i n e l u d e < c o n i o . h>
m a i n ()

{
in t i,n ;

c lrs c rf);

p r i n t f f " D A M E EL NUMERO DE TABLA DE MULTIPLI CAR :

");

scanf("% d",&n);
f o r ( i = 1 ;i < = 1 0 ; i++)
p r i n t f f * \n %c/*%c/=%c/ B, n , i , n * i ) ;
g e t c h f );
return

0;

C o m o s e o b se rv a , e n c o m p a ra c i n c o n las o tra s e stru c tu ra s d e c o n tro l re p e titiv a s,


en u n a s o la ln e a s e c o n tro la el c ic lo ; y a q u e s e in ic ia liz a la v a ria b le s e v e rific a la
c o n d ic i n y la fo rm a d e in c re m e n ta r la v a ria b le d e c o n tro l.
Se p re g u n ta al in ic io el n m e ro d e la ta b la a m u ltip lic a r, s e e v a l a la e s tru c tu ra
y s e g e n e ra la m is m a d e l 1 al 10. S e d e c la ra n d o s v a ria b le s n p a ra in d ic a r
el n m e ro d e la ta b la q u e s e v a a h a c e r y la p a ra re a liz a r el c ic lo d e 1 a 10
p a ra la m u ltip lic a c i n , y d e n tro d e l c ic lo s e m u e s tra el re s u lta d o d e m u ltip lic a r
n*i.
Es im p o rta n te m e n c io n a r q u e si s e re q u ie re la re p e tic i n d e m s d e u n a ln e a es
n e c e sa rio e s c rib ir e n tre lla v e s las in stru c c io n e s.
E n la e s tru c tu ra d e c o n tro l f o r s e p u e d e o m itir c u a lq u ie ra d e las tre s e x p re sio n e s
e in c lu so la s tre s . S i s e o m ite la e x p re s i n 1 es p o rq u e s e in ic ia liz la v a ria b le de
c o n tro l e n a lg u n a o tra p a rte d e l p ro g ra m a , si s e o m ite la e x p re s io n 2 , s e su p o n e q u e
la c o n d ic i n es v e rd a d e ra , c re a n d o u n c ic lo in fin ito , y si s e o m ite la e x p re si n 3 ,
se r p o rq u e el in c re m e n to s e d a d e n tro d e l b u cle.
R e su m ie n d o , la d e fin ic i n d e w h i i e , d o - w h i le y f o r p u e d e s e r e q u iv a le n te en
c ie rto s c a so s. A c o n tin u a c i n s e c o m p a ra n la s tres.

www.FreeLibros.me

112

Captulo 5

Estructuras d e c o n tro l repetitivas

1.
f o r ( e x p r e s io n 1 ; e x p r e s io n 2 ; e x p r e s io n 3 )
in s t r u c c i n 1 ;

e x p r e s i o n l;
w h ile ( e x p r e s io n 2 )

{
in s t r u c c i n 1 ;
e x p r e s io n 3 ;

}
3.
e x p r e s i o n l;
do {
in s t r u c c i n 1 ;
e x p r e s io n 3 ;
} w h ile ( e x p r e s io n 2 ) ;

E je rc ic io s re s u e lt o s
Ej e r c i c i o 5 .4 Crear un marco en la pantalla utilizando asteriscos
en las coordenadas (1,1), (1,80), (80,24) y (1,24)

Descripcin
D ib u ja r u n a ln e a h o riz o n ta l e n la p a rte su p e rio r d e la p a n ta lla .
D ib u ja r u n a ln e a v e rtic a l e n el la d o d e re c h o d e la p a n ta lla .
D ib u ja r u n a ln e a h o riz o n ta l e n la p a rte in fe rio r d e la p a n ta lla .
D ib u ja r u n a ln e a v e rtic a l e n el la d o iz q u ie rd o d e la p a n ta lla .

V a ria b le s
N o m b re

T ip o

Uso

E n tero

G u ard a e l c o n t a d o r .

www.FreeLibros.me

5.3 Estructura rep etitiva f o r

113

Codificacin
U m a r e o de l a

p a n ta lla

#i n e l u d e

<stdio.h >

itinel u d e

<c o ni o. h >

ttinclude

<dos.h>

c on a s t e r i s c o s

mai n( )

{
in t i;
clrscrO ;

for

( i = 1 ; i <=8 0 ; i++)

{
g o t o x y ( i , 1) ;
p r i n t f ( u* u) ;
del ay( 10);

}
for

( i = 1 ; i <=24; i++)

{
gotoxy( 8 0 , i ) i
p r i n t f (***);
del ay( 20);

}
for

( i = 8 0 ; >=1 ; i - - )

{
g o t o x y ( i ,24);
p r i n t f (***);
del ay( 10);

}
for

( i =24; i>=1 ; i )

{
gotoxy( 1 , i ) ;
p r i n t f ( u* u) ;
d e la y(20) ;

}
g e t c h f );
return 0;

}
(c o n tin a )

www.FreeLibros.me

114

Captulo 5

Estructuras d e c o n tro l repetitivas

(continuacin)

Explicacin

E n e s te c a s o n o se le e n v a lo re s d e sd e el te c la d o y a q u e s e c o n o c e n las
c o o rd e n a d a s d e l m arg e n : e l e x tre m o su p e rio r iz q u ie rd o tie n e la s c o o rd e n a d a s
1,1 y el in fe rio r d e re c h o 8 0 ,2 4 ; a d e m s , el s m b o lo a d ib u ja r y a s e d e fin i y
es u n a s te ris c o . L o s c ic lo s v a n d e 1 a 8 0 p a ra la p a rte su p e rio r e in fe rio r, y de
1 a 2 4 p a ra lo s lad o s.

Ejecucin
* * * * * * * * * * * * * * * * *

* * * * * * * * * * * * * * *

N o t a : L a im a g e n s e m o s tra r se g n la d im e n s i n y re s o lu c i n d e l m o n ito r.

Resum en
E n e s te c a p tu lo s e re v is a ro n la s o p c io n e s d e l le n g u a je C p a ra e je c u ta r v a ria s
v eces u n a in s tru c c i n . L a ite ra c i n c o n s is te e n re p e tir u n a o v a ria s
in stru c c io n e s, y es c o n tro la d a c o n u n a e x p re s i n q u e u s u a lm e n te es u n a
c o n d ic i n b o o le a n a .
C u a n d o s e c o n o c e d e a n te m a n o c u n ta s v e c e s s e re a liz a r la re p e tic i n s e le
lla m a ite ra c i n d e fin id a ; c u a n d o n o s e c o n o c e el n m e ro d e re p e tic io n e s se
le lla m a ite ra c i n in d e fin id a .
E n le n g u a je C h a y tre s fo rm a s d e re a liz a r la s re p e tic io n e s y sta s tie n e n tres
partes: el v a lo r d e in ic io d e la v a ria b le d e c o n tro l, la q u e in d ic a c m o va
c a m b ia n d o el v a lo r y la c o n s titu id a p o r la c o n d ic i n o v a lo r d e v e rd a d . S e g n
la e s tru c tu ra q u e s e u tiliz a es el o rd e n e n q u e a p a re c e n , e n a lg u n o s c a so s s e p u e d e
o m itir u n a, d o s o in c lu s o la s tre s p a rte s , d e p e n d ie n d o d e lo q u e s e d e s e a rea liz a r.
A la v a ria b le d e c o n tro l s e le lla m a ta m b i n c o n ta d o r c u a n d o c u e n ta el n m e ro
de ite ra c io n e s y s e in c re m e n ta d e u n o e n u n o ; y acumulador c u a n d o p e rm ite su m a r
u n a c a n tid a d c o n s ta n te e n c a d a ite ra c i n . C u a n d o la v a ria b le a lm a c e n a u n v a lo r
b o o le a n o (fa ls o o v e rd a d e ro ) s e le lla m a bandera.

www.FreeLibros.me

Ejercicios propuestos

115

Evaluacin
I. D escriba los siguientes conceptos.
1 . Q u es u n c ic lo o re p e tic i n ?
2 . Q u es u n c ic lo d e fin id o ?
3 . Q u es u n c ic lo in d e fin id o ?
4. Q u e s tru c tu ra s d e c o n tro l h a y p a ra la re p e tic i n e n la p ro g ra m a c i n
e s tru c tu ra d a ?
5 . P a ra q u s e u s a u n c o n ta d o r?
6 . P a ra q u s e u s a u n a c u m u la d o r?
7 . C u n d o s e h a c e u n c ic lo in fin ito ?
8 . E n q u c a s o s e re c o m ie n d a u s a r w h i le y c u a n d o d o - w h i i e l
9 . Q u su c e d e si al finalizar el e n c a b e z a d o d e l f o r se co lo c a ; (p u n to y c o m a )?
10. Q u sucede si al finalizar el en cab ezad o d e l v t n i e se c o lo c a ; (pu n to y c o m a )?
11. A l fin a liz a r e l e n c a b e z a d o d e d o - w h ie s e d e b e e s c rib ir ; (p u n to y c o m a )?

II. Resuelva el siguiente ejercicio.


1. R e a lic e c o n u n s m b o lo u n e sp ira l, in ic ia n d o e n el c e n tro d e l m o n ito r, y
h a sta q u e s e lle n e ste ; s e d e b e c o n tro la r el a n c h o y a lto d e c a d a v u e lta ,
a s c o m o el ta m a o m x im o a c u b rir e n el m o n ito r.
*

Ejercicios propuestos
I. Codifique los siguientes program as.
1. Im p rim ir lo s n m e ro s d e l 1 al 100.

2. Im p rim ir la se rie d e 0 1 1 2 3 5 8 . . . n (in ic ia c o n 0 1, y el sig u ien te n m e ro


es la su m a d e los d o s a n te rio re s) h a sta u n lm ite d e fin id o p o r el u su ario .

www.FreeLibros.me

116

Captulo 5

Estructuras d e c o n tro l repetitivas

3 . R e a liz a r u n a d iv isi n y re p e tir la o p e ra c i n h a sta q u e u n o d e los n m ero s


se a 0.
4. Im p rim ir lo s c o lo re s u sa n d o lo s n m e ro s d e l 1 al 1 0 0 c o n la fu n c i n
t e x t c o l o r f ).
5 . M o s tra r u n

re b o ta n d o p o r la p a n ta lla h a s ta p re s io n a r u n a tec la .

6 . M o s tra r la s u m a d e lo s n m e ro s e n tre 10 y 125.


7. E sc rib ir la s u m a d e la s e rie 1/2 + 1/3 + 1/4 + ... + 1/20.
8 . E sc rib ir u n p ro g ra m a q u e m u e s tre el m a y o r d e u n a s e rie d e n m e ro s
in tro d u c id o s p o r el te c la d o .
9. C a lc u la r la s u m a d e u n a s e rie d e n m e ro s le d o s p o r te c la d o .
10. E sc rib ir u n p ro g ra m a q u e m u e s tre el m ay o r, el m e n o r y la m e d ia d e u n a
s e rie d e n m e ro s in tro d u c id o s p o r e l te c la d o .
11. M o s tra r el re s u lta d o d e s u m a r lo s n m e ro s p a re s e im p a re s q u e h a y e n tre
10 y 125.
12. M o s tra r la s u m a d e 10 n m e ro s e n te ro s co n sec u tiv o s.
13. Im p rim ir u n ra n g o d e n m e ro s e n te ro s s o lic ita n d o el in ic io y fin d e los
v alo res.
14. M o s tra r el c u a d ra d o d e lo s p rim e ro s c in c o n m e ro s n a tu ra le s.
15. M o s tra r lo s n m e ro s p rim o s e n tr e el 1 y e l 125.
16. Im p rim ir to d o s lo s n m e ro s in fe rio re s a u n o in tro d u c id o p o r el te c la d o .
17. Im p rim ir e n p a n ta lla lo s m ltip lo s d e 5 q u e h a y e n tre 1 y 1000.
18. M u ltip lic a r e n tre s lo s n m e ro s e n tre 1 y 10 y m o s tra r el re s u lta d o .
19. im p rim ir el fa c to ria l d e lo s n m e ro s c o m p re n d id o s e n tre el 2 y el 15.
20. Im p rim ir u n tri n g u lo is sc e le s.
21. Im p rim ir los m ltip lo s d e u n n m e ro e n tre 1 y 10, m e n o re s q u e 125.

II. C om plete las lneas en blanco.


1. S u m a r lo s 100 p rim e ro s n m e ro s e n te ro s p o sitiv o s.
# in c lu d e < s t d io .h>
ttin clu d e< co n io . h>

www.FreeLibros.me

Ejercicios propuestos

m ain()

{
i n t _________ , ____
su m a= 0;
c lr s c r f);
f o r ( c o n t a d o r =1;

;contador++)

suma=suma+contador;
p r i n t f ( " L a suma e s :

", sum a);

getch();
r e t u r n 0;

2 . E le v a r X a u n a p o te n c ia Y.
# i n c l u d e < s t d i o . h>
# in c lu d e < c o n io . h>
m ain()

{
in t c o n t,x ,y ,re s;
c lrs c rf);
res=

p r i n t f ( " \ n E s c r i b a e l No. q u e s e e l e v a r a a u n a p o t e n c i a :
s c a n f ( u*6 d " ,

);

p r i n t f ( " \ n A q u e p o t e n c i a e l e v a r a e l numero % c/:

",x);

scan f(* % d ",& y);


forf

; c o n t < = y ; c o n t ++)
res=res*x;

p r i n t f ( " \ n E l %c/ e l e v a d o a l a p o t e n c i a
getchf) ;
return 0;

3 . C a lc u la r e l fa c to ria l d e u n n m ero .
# i n c l u d e < s t d i o . h>
U in clu d e< co n io .h >
m ainf)

{
i n t cont,

x;

www.FreeLibros.me

e s : % d " ,______

118

Captulo 5

Estructuras d e c o n tro l repetitivas

lo n g
c l r s e r f );

p r in t f f " fa c to ria l

d e l n um ero..?

");

s c a n f ( "_______" , & x ) ;
Fact

=1;

f o r ( c o n t = 1 ; c o n t < = x ; _________)
f a c t =cont*f a c t ;
p r i n t f ( u \n

fa cto ria l

d e %c/ = %c/",

x,fa ct);

getch();
return

0;

4 . Im p rim ir lo s n m e ro s d e l 100 al 0.
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
m a i n ()

{
o;
c lrs c rf);
c=100;
w h i l e (________;

{
p r i n t f f "*6d " , c ) ;

}
g e tc h f);
return

0;

5 . Im p rim ir la s u m a d e lo s 100 p rim e ro s n m e ro s.


# i n c l u d e < s t d i o . h>
tiin clu d e< con io.h >
m a in f)

{
in t

c,sum a;

www.FreeLibros.me

Ejercicios propuestos

119

c l r s c r ( );
while(c<=100)

{
-suma+c;

=c+1;
}
p r in t f ("la

suma de l o s p r i m e r o s c i e n nmeros e s %c/ " ,suma) ;

getch();
return

0;

6 . Im p rim ir lo s n m e ro s im p a re s h a s ta el 100 e im p rim ir c u n to s


im p a re s hay.
# i n c l u d e < s t d i o . h>
U i n c l u d e < c o n i o . h>
mai n( )

{
c,son;
c lrs c rf);

son=

w h i l e ( c < 1M )

{
p r i n t f ( " 96d , c ) ;

son=son+ 1 ;

}
p r i n t f ("

\ n E l numero de i m p a r e s e s %c/ ",

son);

getch();
return

0;

7 . Im p rim ir lo s n m e ro s d e l 1 al 125. C a lc u la r la s u m a d e to d o s lo s n m e ro s
p a re s p o r u n la d o y, p o r o tro , la d e to d o s lo s im p a re s.
t t i n c l u d e < s t d i o . h>
Uinclude<conio.h>
mai n( )

www.FreeLibros.me

120

Captulo 5

Estructuras d e c o n tro l repetitivas

{
in t i,

sumapar,

s umai mp ar;

c lrs c rf);
s umapar=____ ;
s umai mp ar=______;

1 =1 ;
do

{
if(i*2= = 0)
s umapar =sumapar+____ ;
else
sumaimpar=sumaimpar+i ;
i=i+1;
}while(i<=125) ;
p r i n t f (" \nLa suma de l o s nmeros

e s %c/ ", s u m a p a r ) ;

p r i n t f ( " \nLa suma de l o s nmeros

e s %c/ ", s um a i mp a r ) ;

getchf);
return 0 ;

n i . D escriba lo que im prim e cada program a.


1.
t t i n c l u d e < s t d i o . h>
include<conio.h>
main()

{
float d,n;
in t

c=0 ;

c l r s c r f );
p r i n t f ( " N u m e r o de d g i t o s

de una c i f r a \ n \ n " ) ;

g o t o x y ( 1 0 , 2 ) ; p r i n t f ( " N m e r o s de d g i t o s
g o t o x y ( 1 0 , 4 ) ; p r i n t f ( " D a m e una c i f r a :
s c a n f ( U96 f " , & n ) ;
do

{
d=nl10;
n= n/ 1 0 ;

www.FreeLibros.me

");

de una c i f r a " ) ;

Ejercicios propuestos

c++;
}w hile(d>=1) ;
g o t o x y ( 1 Q , 6 ) ; p r i n t f ( " E l numero de c i f r a s e s * t d " , c ) ;
getch();
r e t u r n 0;

itinelude < s t d io .h >


itinelude < co nio .h>
m a in ( )

{
i n t num;
clrscr() ;
p r i n t f ( " m o s t r a r e l cu a d ra d o de un numero l e i d o d e l t e c l a d o .
p r i n t f ( " s e d e t i e n e con - 1 \ n \ n " ) ;
do

{
p r i n t f ("

\ndame un numero " ) ;

s c a n f ( U96d",&num) ;
p r i n t f (" %c/ ", num*num) ;
}w hile(num !=-1) ;
getch();
r e t u r n 0;

Hielude < s td io .h >


Hi n e l u d e < c o n i o . h >
iti n e l ude < d o s . h >
m a in ( )

{
i n t h,m ,s;
clrscrf) ;
p r i n t f (" s i m u l a r un r e l o j d i g i t a l \ n \ n " ) ;
f o r (h = 0 ;h < 2 4 ;h++)

www.FreeLibros.me

122

Captulo 5

Estructuras d e c o n tro l repetitivas

for(m=0;m<=59;m++)
f or(s=1;s<=59;s++)

{
g o t o x y f 15,10);
p r i n t f ( u %c/:%c/:%c/ " , h , m , s ) ;
d e l a y ( 1000 ) ;
sound(15);

}
getch();
nosound( );
return

0;

4.
Hiel u d e

<stdio.h >

Uinclude

<c o ni o. h >

main()

{
in t

c , n , r , x = 20 ;

c l r s c r f );
p r i n t f ( " C o n v e r t i r un numero de b a s e
p r i n t f ( dame un numero " ) ;
s c a n t ( " %c/" , & n ) ;
do

{
c=n/ 2 ;

r=n%2;
g o t o x y ( x , 5);
p r i n t f ( "%c/", r ) ;
n-c;

}while

(c>= 1 ) ;

getch();
return

0;

www.FreeLibros.me

10

a base

2 \ n \ n " );

Ejercicios propuestos

5.
ttinclude

<stdio.h >

ttinclude

<c o ni o. h >

m a i n ()

{
char y = 'b ',x ;
w h ile

(y<='j ' )

{
x=y+3;
p rin tf

C * c \ n m, x ) ;

y=y+l;

}
getch();

0;

return

6.
itinel u d e

<stdio.h >

ttinclude

<c o ni o. h >

m a i n ()

{
i n t y= 1 , x ;
w h ile

(y<=1 0 )

{
x=y*y;
p rin tf

( m* d \ n m, x ) ;

y=y+2 ;

}
getch();
return

0;

7.
ttinclude

<stdio.h >

ttinclude

<c o ni o. h >

www.FreeLibros.me

123

124

Captulo 5

Estructuras d e c o n tro l repetitivas

m a i n ()

{
i n t num=1 0 ;
w h ile

(num!= 1 )

{
if

( num%2==0)

{
num=num/2 ;

}
e l s e num=num*3+1;
p rin tf

( "96 d \ n " , num);

}
getch();
return

0;

www.FreeLibros.me

O .P T t J f .G

Datos de tipo
estructurado.
Arreglos

E n e s te c a p tu lo s e re v is a n los d a to s e s tru c tu ra d o s (a rre g lo s ) q u e s o n un


c o n ju n to d e e le m e n to s d e l m is m o tip o d e d a to s; a d e m s s e e stu d ia r n
tos a rre g lo s q u e c o n tie n e n c a d e n a s d e c a ra c te re s y su s o p e ra c io n e s m s
co m u n e s.

6.1 A rreglo o array


U n a rre g lo , o a r r a y , es u n c o n ju n to d e e le m e n to s d e l m is m o tip o d e d ato s
a lm a c e n a d o s e n m e m o ria c o n tin u a .
E x is te n d ife re n te s tip o s d e a rre g lo s: u n id im e n sio n a le s , b id im e n sio n a le s ,
trid im e n sio n a le s, e tc te ra .

www.FreeLibros.me

( ?

126

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

6.2 Vectores o arreglos unidim ensionales


U n a rre g lo u n id im e n sio n a l, ta m b i n lla m a d o lis ta o v e cto r, c o n tie n e u n c o n ju n to
de v a ria b le s d e l m is m o tip o . S u d e c la ra c i n , c o m o la d e c u a lq u ie r v a ria b le ,
re q u ie re d e u n n o m b re y u n tip o d e d a to ; a d e m s s e d e b e a g re g a r el n m e ro de
e le m e n to s q u e c o n te n d r .
<Tipo d a t o > < i d e n t i f i c a d o r > <[nmero de e l e m e n t o s ]>;

P b r e je m p lo , si s e re q u ie re u n a lis ta p a ra a n o ta r la s c a lific a c io n e s d e c in c o
a lu m n o s, e l a rre g lo s e r d e tip o e n te ro , p o d ra lla m a rs e

L is C a lif

(q u e es u n

n o m b re a rb itra rio c o m o el d e c u a lq u ie r v a ria b le ), y s e r d e ta m a o 5. S u


d e c la ra c i n q u e d a ra as:
i n t L i s C a l i f [5];

El a c c e s o a u n e le m e n to s e lle v a a c a b o m e d ia n te el n o m b re d e l a rre g lo y un
n d ic e q u e s e a la u n a p o s ic i n e sp e c fic a e n el a rre g lo .
E n C , la e n u m e ra c i n d e e le m e n to s s e in ic ia e n 0, d e ta l fo rm a q u e el n d ic e en
L is C a lif

te n d r v a lo re s d e 0 a 4 y s e p o d ra v e r as:

L is C a lif

P ra a lm a c e n a r u n v a lo r e n u n a c e ld a e n p a rtic u la r, es n e c e sa rio e s c rib ir el n o m b re


del a rre g lo y u n n d ic e q u e in d iq u e la p o s ic i n e n q u e s e a lm a c e n a el d ato .
LisC alif[0 J= 10 ,

L i s C a l i f [ 1 ]=5,

. L i s C a l i f [4]=4;

O b s e rv e q u e el n m e ro d e la c e ld a es in d e p e n d ie n te d e l c o n te n id o . E n el n d ic e es
p o sib le u tiliz a r v a ria b le s, c o n sta n te s o e x p re sio n e s a ritm tic a s , s ie m p re q u e se a n
de tip o e n te ro , p a ra h a c e r re fe re n c ia a la p o s ic i n d e u n e le m e n to co m o :
L i s C a l i f [i+ 2J;

L i s C a l i f [i*10].

R e c u e rd e q u e el re s u lta d o d e la o p e ra c i n q u e h a c e re fe re n c ia al n d ic e d e b e se r
s ie m p re u n n m e ro e n te ro . E n el sig u ie n te e je m p lo s e m u e s tra u n a rre g lo d e tip o
c a r c te r al q u e s e le a s ig n a n lo s v a lo re s d e a , b y c.

www.FreeLibros.me

6.2 Vectores o arreglos u nid im en sion ales

char l e t r a s [ ] = { ' a ' , ' b ' , ' c ' }


' '

'a '

c '

le tra s

E n el sig u ie n te e je m p lo te n e m o s u n a rre g lo c o n n m e ro s d e tip o re a l, y la fo rm a


en q u e s e a s ig n a n lo s v a lo re s le d o s d e l tec la d o :
ftoat p e s o [ 4 ] ;
s c a n f ( " 96 f " , & p e s o [ 1 ] ) ;
5.35

peso

Si s e va a a s ig n a r u n v a lo r d e sd e el te c la d o , s e u tiliz a la in s tru c c i n
fo rm a s im ila r a c u a lq u ie r v a ria b le .

scanf

de

s c a n f ("*60" , & L i s C a l i f [ Q ] ) ;

P ara im p rim ir el c o n te n id o d e u n a c e ld a , s e p ro c e d e d e m a n e ra s im ila r a la de


c u a lq u ie r v a ria b le , te n ie n d o c u id a d o d e in d ic a r el n d ice:
p rin tf( "

%d

" ,L i s C a l i f [0]);

Si s e m a n ip u la ra n to d o s lo s e le m e n to s d e u n a rre g lo , es fre c u e n te u tiliz a r u n a


e stru c tu ra rep e titiv a ; la m s u su a l e s el c ic lo f o r , y a q u e lo s n d ic e s d e l a rre g lo
a u m e n ta n d e u n o e n u n o . P o r e je m p lo , c u a n d o d e s e a im p rim ir el c o n te n id o
del a rre g lo o c u a n d o s e s u m a n to d o s lo s e le m e n to s, o ta m b i n c u a n d o s e v a a
in ic ia liz a r, c o m o e n el e je m p lo sig u ie n te :
for

( i = 0 ; i<=4 ;i++)
L is C a lif[ij= 0 ;

E n e s te c a s o s e in ic ia liz el a rre g lo c o n v a lo re s d e 0; ta m b i n es p o sib le in ic ia liz a r


c o n v a lo re s d istin to s d e sd e la d e c la ra c i n , com o:
in t LisC alif[5]= {10,
I n t L i s C a l i f [ J ={10,

5,

8,

5, 8,

9 , 4};
9,

4};

Si s e o m ite el ta m a o d e l a rre g lo , s te s e d e fin ir p o r el n m e ro d e v a lo re s de


in ic ia liz a c i n ; in c lu siv e s e p u e d e n d e fin ir lo s e le m e n to s d e l a rre g lo y a d e c la ra d o .
Para im p rim ir to d o s lo s e le m e n to s d e u n a rre g lo u sa n d o el c ic lo fo r:

www.FreeLibros.me

128

Captulo 6

for

Datos d e t ip o estructurado. A rre g lo s

( i =0;i<=4;i++)
p r i n t f f " %c/\

L is C a liffi]);

E n c a s o d e q u e el n d ic e e st fu e ra d e l lm ite , el c o m p ila d o r d e C n o m a rc a r
error, p e ro p u e d e c a u s a r u n f a llo e n el p ro g ra m a .
Ej e m p l o 6.1 Leer y alm acenar siete estaturas y mostrarlas en form a tabular
# i n c l u d e < s t d i o . h>
Udefine TAMAN10 7
mai n( )

{
f l o a t e s t a t u r a [ T A M A N 10];
in t i;
f o r ( i = 0 ; i < = 6 ;i++)

{
p r i n t f ( " Dame l a

e s t a t u r a %c/ ",

i+1);

s c a n f ( "%cT, & e s t a t u r a [ i ] ) ;

}
p rin tf(u

num

estatura

\ n n) ;

f o r ( i =0; i <TAMAN10; i++)


p rin tff"

%c/

%f \ n " , i +1 , e s t a t u r a [ i ] ) ;

E n e s te e je m p lo s e u tiliz a u n a d ire c tiv a d e p re p ro c e sa d o r, q u e es u n a v a ria b le


sim b lic a lla m a d a

tamanio

d e v a lo r 7 ; e n la fu n c i n

mai n

s e d e fin e u n a rre g lo de

sie te e le m e n to s d e n m e ro s re a le s y el n d ic e de tip o e n te ro . M e d ia n te el c ic lo
fo r

s e s o lic ita la e s ta tu ra +1 : s e e s c rib i el n d ic e a s p a ra im p rim ir el te x to "Dame

la estatura

1 ",

y s e a lm a c e n a e n la p o s ic i n

estatura[oj.

T o d o e s to s e re p ite

h a sta q u e el v a lo r d e lle g a a 6. U n a v e z a lm a c e n a d a s la s e sta tu ra s s e im p rim e n ,


c o n o tro c ic lo

fo r,

e n fo rm a d e lista .

E je rc ic io s re s u e lt o s
Eje r c ic io 6.1 Imprimir el contenido de las posiciones 0, 3 y 4 del arreglo v e c

Descripcin
In ic ia liz a r a rre g lo .
Im p rim ir lo s n m e ro s d e la s p o sic io n e s in d ic a d a s.

www.FreeLibros.me

6.2 Vectores o arreglos u nid im en sion ales

129

V a ria b le s
N o m b re

Tipo

U so

vec

V ecto r r e a l

A lm a cen a l o s n m ero s.

Codificacin
# i n c l u d e < s t d i o . h>
H in clu de< conio .h>

mai n( )

{
in t

v e c [ 5]={3 ,5 , 7 , 9 , 2 } ;

c l r s c r f );
p r i n t f ( " \n

p o s i c i n 0 %c/ " , v e c [ 0 ] ) ;

p r i n t f ( " \n

p o s i c i n 3 %d *, v e c [ 3 ] ) ;

p r i n t f ( " \n

p o s i c i n 4 %c/ " , v e c [ 4 ] ) ;

getch();
return 0 ;

Ejecucin
p o s ic i n 0 3
p o s ic i n 3 9
p o s ic i n 4 2

Explicacin
E ste e je m p lo tie n e los e le m e n to s a sig n a d o s al in ic io , a s q u e s lo h a y q u e m o s tra r
el c o n te n id o d e c a d a u n a d e la s p o sic io n e s in d ic a d a s.

Eje r c ic io 6.2 Buscar un nm ero en un arreglo e indicar


en qu posicin se encuentra

Descripcin
Pfcdir el n m e ro a b uscar.
R e a liz a r la b sq u e d a e n to d o el a rre g lo .
Im p rim ir si el n m e ro s e e n c o n tr y la p o sic i n .
(contina)

www.FreeLibros.me

130

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)
Vari abl es
Nombre

Tipo

Us o

vec

Vector r e a l

Al macena nmeros p a r a b u s c a r e n t r e
e llo s.

Entero

V a r i a b l e de c o n t r o l p a r a l a

estructura

re p e titiv a .
n

Entero

Entero

Entero

Nmero a b u s c a r .
(booleano)

A l m a ce na e l
Indica l a
(si

v a l o r de l a

bandera.

p o s i c i n en que s e e n c o n t r

es que s e e n c u e n t r a ) .

Codificacin
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

mai n( )

{
in t

v e c [ 5 ] = { 3 , 5 , 7 , 9 , 2 } , i , n,

b= 0, p;

c l r s c r f );
p rin tf("T e cle a

el

valor a buscar

") ;

s c a n f ( " 96 , & n ) ;
for(i= 0;i< 5;i+ + )
i f ( v e c [ i ] ==n)

{
b=1;
p

=;

}
if(b = = i)
p r i n t f ( \ n E l numero M

s i s e e n c u e n t r a en l a p o s i c i n

% i u, n , p ) ;
e lse
p r i n t f ( \ n E l numero M

no s e e n c u e n t r a " , n ) ;

getchf);
return

0;

Ejecucin
Teclea e l

valor a buscar

E l numero 9 s i

s e e n c u e n t r a en l a

po sici n

www.FreeLibros.me

6.2 Vectores o arreglos u nid im en sion ales

Explicacin
S o lic ita el n m e ro a b u sc ar, q u e s e a m a c e n a e n la v a ria b le n. S e c o m p a ra si el
p rim e r e le m e n to d e l v e c to r es n ; si n o e s a s, s e re v is a n lo s s ig u ie n te s e le m e n to s.
C u a n d o la c o n d ic i n es v e rd a d e ra ,

to m a el v a lo r d e 1, p to m a el v a lo r d e la

p o sic i n . A l s a lir d e l c ic lo s e re v is a si

c o n tie n e 1; si es c ie rto , s e im p rim e q u e s

se e n c o n tr y e n q u p o sic i n .

Eje r c ic io 6.3 Imprimir el contenido de las posiciones pares de una lista


y su suma

Descripcin
D efin ir la lista .
V erificar la p o sic i n .
Si es par, im p rim ir y su m ar.
M o s tra r la su m a.
Vari abl es
Nombre

Tipo

Us o

lis ta

Entero

Al macena l o s

suma

Entero

Al macena l a

valores del vector.


suma de l o s nmeros

c o n t e n i d o s en l a s p o s i c i o n e s p a r e s .
Entero

Para r e c o r r e r e l

arreg lo.

Codificacin
# i n c l u d e < s t d i o . h>
iti n e l u d e< c o n i o . h >
define C 10
m a i n ()

{
i n t l i s t a [ C ] = { 1 , 1 2 , 3 , 1 2 , 0 , 4 , 5 , 7,9 ,2};
in t

suma=0 , i = 0 ;

c l r s c r f );
p r i n t f ( " \ n E l e m e n t o s en p o s i c i o n e s p a r e s \ n

*);\

do{
(contina)

www.FreeLibros.me

132

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)
i f ( i% 2 = 0 )
{
p r i n t f ( " \ n *d \ l i s t a [ i j ) ;
sum a+ = lista[i];
}
i++;
} w h i le ( i < C ) ;
p r i n t f ( " \ n l a suma de e s o s nmeros e s
getch();
return

*d ", s u m a ) ;

0;

Explicacin
U n a v e z d e fin id a la lista , s e in ic ia liz a n e n c e ro las v a ria b le s q u e c o n te n d r n la
su m a y la q u e re c o rre n lo s v e c to re s suma e i , re s p e c tiv a m e n te . S e v e rific a si el
v a lo r d e es par, y d e s e r a s s e m u e s tra y s e su m a . A c o n tin u a c i n , in d e p e n d ie n te
del v a lo r d e l n d ic e , ste s e in c re m e n ta h a sta re c o rre r to d o el a rre g lo . A l final se
m u e stra la s u m a d e lo s n m e ro s d e la p o s ic i n par.

Ejecucin
Elementos en p o s i c i o n e s p a r e s
1

0
3
5
9

l a suma de e s o s nmeros e s

18

Eje r c ic io 6.4 Leer elem entos, imprimir, sum ar y contar los elem entos de una
posicin par; si el nmero contenido es impar indicar la posicin

Descripcin
P b d ir la c a n tid a d d e n m e ro s a a lm a c e n a r la p rim e ra o c asi n .
E v a lu a r si la p o s ic i n es par.
Si es v e rd a d e ro , e v a lu a r si el n m e ro es im p ar.
Si s e c u m p le lo a n te rio r, im p rim ir el n m e ro y la p o sic i n .

www.FreeLibros.me

6.2 Vectores o arreglos u nid im en sion ales

Variables
Nombre

Tipo

Us o

lis ta C

Entero

Al mac ena l o s nmeros d e l a r r e g l o .

suma

Entero

Suma l o s

Entero

Cuenta l o s nmeros i m p a r e s .

Entero

Recorre e l

Entero

Al mac ena l a

elementos im pares.

arreg lo.
c a n t i d a d de nmeros a l e e r .

Codificacin
/*Leer ele m e ntos, i m p r i m i r ,
la p o s ic i n par,

sumar y c o n t a r l o s e l e m e n t o s de

s i e l numero e s i m p a r e i n d i c a r l a

po sici n .

*1
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
ttdefine C 10
i n t main()

{
in t lis ta C [C ];
in t

suma=0 ,c = 0 , i = 0 , n;

c lrs c rO ;
p r i n t f ( " \n C u a n t o s e l e m e n t o s s e l e e r n

(no mas de 1 0 ) \ t

");

s c a n f ( H%du, & n ) ;
f o r ( i = 0 ; i < n; i + + )
s c a n f ( 'W ,& lista C [i]);
c lrs c rO ;
p r i n t f ( \tposicion \tnum ero\n");
i= 0;
do {

if(i%2==0)
i f ( l i s t a c i i 7 / 2 * 2 / = l i s t a C [ i ])

{
p rin tf ("\n\t\t

, i , l i s t a C [ i ] ) ;

sum a+ = listaC[i];

c++;
}
i ++;
}while(i< n) ;

(c o n tin a )

www.FreeLibros.me

134

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(c o n tin u a c i n )
p r i n t f ( n\n so n %d y l a

suma de e s o s nmeros e s

%d " , c , s u m a ) ;

getch();
return 0 ;

Explicacin
Se p re g u n ta la c a n tid a d d e n m e ro s a a lm a c e n a r e n n e n el a rre g lo . A
c o n tin u a c i n s e le e n y s e a lm a c e n a n e n l i s t a c . S e in ic ia liz a d e n u e v o p a ra
re c o rre r el a rre g lo y v e rifica r: p rim e ro si la p o s ic i n es par, si es v e rd a d e ro se
e v al a si el n m e ro es im p a r (u n a fo rm a d e v e rific a r si el n m e ro es im p a r es
d iv id ir e n tre d o s y lu e g o m u ltip lic a rlo p o r 2: si es ig u a l al o rig in a l es par, d e lo
c o n tra rio es im p a r). S i es v e rd a d e ro s e im p rim e la p o s ic i n e n q u e s e e n c u e n tra y
el n m e ro ; a d e m s s e h a c e la s u m a d e l m is m o y s e c u en ta.
F in a lm e n te m u e s tra la c a n tid a d d e n m e ro s im p a re s e n p o s ic i n p a r y la s u m a de
ellos.

Ejecucin
Cuant os e l e m e n t o s s e l e e r n

(no mas de 10) 5

2
2

3
5

Posicin

numero

son 2 y l a

suma de e s o s nmeros e s

Eje r c ic io 6.5 Realizar en un arreglo las siguientes operaciones: agregar un


elem ento, borrar un elem ento, buscar un elem ento de la lista

Descripcin
S o lic ita r la c a n tid a d d e n m e ro s a a lm a c e n a r.
L e e r n m e ro s.

www.FreeLibros.me

6.2 Vectores o arreglos u nid im en sion ales

S o lic ita r e l n m e ro a b uscar.


R e a liz a r la b sq u e d a.
S o lic ita r u n n m e ro a bo rrar.
B o rra r e l n m e ro m o v ie n d o lo s e le m e n to s.
P e d ir u n n m e ro a in s e rta r e n la ltim a p o sic i n .
A g re g a r el n m e ro .

Variabl es
Nombre

Tipo

Us o

l i s t a i MAX]

Entero

A l m a ce na l a l i s t a

Entero

A l m ac en a l a

c a n t i d a d de e l e m e n t o s a l m a c e n a d o s .

buscar

Entero

A l m ac en a e l

elemento a b u s c a r.

borrar

Entero

A l m ac en a e l

elemento a b o r r a r .

Entero

Recorre e l

Entero

Bandera para l a

de nmeros.

arreg lo.
b squed a d e l

elemento.

Codificacin
/* En un a r r e g l o b u s c a r un e l e m e n t o ,

b o r r a r elemento,

agregar.

*/

H i n d de < s t d i o . h >
H include

< stdlib.h>

ftinclude

< c o n i o 2 .h>

Hdefine MAX 700


Hdefine p p r i n t f
Hdefine s s c a n f

mai n( )

{
i n t lista[M A X ];
i n t n ,buscar,b o rra r,i, b ;
do

{
p( "Numero de e l e m e n t o s a a l m a c e n a r

*);

sC * d ',& n );
}whil e(n<0\\n>MAX) ;
for(i=Q;i< n;i+ +)

(c o n tin a )

www.FreeLibros.me

136

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)
{
p("elemento

");

s ( u* d " , & l i s t a [ i ] ) ;

}
c l r s c r f );

P ( ' \ n \ n );
fo r(i= 0 ;i< n ;i+ + )
p ( %d \ l i s t a l i j ) ;
/* b s q ue d a */
i=0;b=0;
p ( " \ n numero a b u s c a r

n) ;

s ( " %d u, & b u s c a r ) ;
while(i<n&&b==0 )

{
if(b u s c a r= = lis ta [ij)
b = l;
e lse

++;
}
if(b==1)
p ( " e l e m e n t o e n c o n t r a d o en %c/ \ n " , i ) ;
e lse
p ( ne l e m e n t o no e n c o n t r a d o \ n " ) ;
IIborrar,
lugar,

se busca e l elemento y se e s c r i b e e l

dism inuir n

/* b s q ue d a d e l nmero a b o r r a r

*/

i=0;b=0;
p ( " \ n numero a b o r r a r

n) ;

s (" %d u, & b u s c a r ) ;
while(i<n&&b==0 )

{
if(b u s c a r= = lis ta [ij)
b=1;
e lse

i ++;
}
if(b==1)

{
l i s t a [ i ] = l i s t a [ n - 1 ];

www.FreeLibros.me

l t i m o e l e m e n t o en su

6.2 Vectores o arreglos u nid im en sion ales

}
p ( u \ n \ n a) ;
f o r ( i = 0;i<n;i++)

p('

, l i s t a [ i ] );

/*insertar

al

final

*/

p ( " \ n numer o a i n s e r t a r

");

s ( U96d , & b u s c a r ) ;
lista [n ]= b u sca r;
n++;
p ( n\ n \ n * ) ;
fo r(i= 0 ;i< n ;i+ + )
P C

*d \ l i s t a [ i ] ) ;

system ("PA U S E ");


return

0;

Explicacin
P re g u n ta c u n to s e le m e n to s s e r n a lm a c e n a d o s e n el a rre g lo y s e a lm a c e n a el
v alo r e n la v a ria b le n , se le e n y a lm a c e n a n e n l i s t a . A c o n tin u a c i n se
p re g u n ta el n m e ro a b u s c a r y s e a lm a c e n a e n la v a ria b le

buscar.

S e r e a liz a un

c ic lo p a ra c o m p a ra r c o n c a d a u n o d e lo s e le m e n to s d e l a rre g lo ; e n c a s o d e se r
ig u ales s e c a m b ia el v a lo r d e la b a n d e ra
se p re g u n ta si la b a n d e ra

a 1, y s e s a le d e l c ic lo ; al s a lir d e l c ic lo

es 1. S e im p rim e

elemento e n c o n tr a d o

y si n o , lo

c o n tra rio .
P ra b o rra r s e p re g u n ta el n m e ro y s e b u s c a ; si s e e n c u e n tra , s e m u e v e n los
e le m e n to s, in ic ia n d o d e l ltim o d e la lis ta y h a s ta la p o s ic i n i i s t a [ i j . L a
c a n tid a d d e e le m e n to s

s e d ism in u y e . F in a lm e n te s e s o lic ita el n m e ro q u e

se a g re g a y s e a lm a c e n a e n

buscar.

S e in c re m e n ta el n m e ro d e e le m e n to s

y s e a lm a c e n a el e le m e n to e n la p o s ic i n .A l te rm in a r la s o p e ra c io n e s se
m u e stra el a rre g lo c o n lo s e le m e n to s.

Ejecucin
Numero de e l e m e n t o s a a l m a c e n a r

elemento 3
elemento

[continua)

www.FreeLibros.me

138

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)

elemento 6
elemento 7
elemento 4
elemento 2
3 1 6 7 4 2
numero a b u s c a r

e l e me nt o e n c o n t r a d o en 3
numero a b o r r a r 6
3 17

4 2

numero a i n s e r t a r
31

58

7 4 2 58

A continuacin se m uestra el ejercicio a n terio r con el uso de funciones


con p arm etro s p a ra cada operacin.
/* En una m a t r i z b u s c a r un e l e m e n t o ,

b o r r a r elemento,

f u n c i o n e s y una v a r i a b l e g l o b a l .

*/
ttinclude

<stdio.h >

ttinclude

< stdlib.h>

ttinclude

< c o n i o 2 .h>

ttdefine MAX 700


ttdefine p p r i n t f
ttdefine s s c a n f

i n t n=-1 ;

void l l e n a r ( i n t 1 [])

{
in t i;
do

{
p ( numero de e l e m e n t o s a a l m a c e n a r

");

s(''% d\&n);

www.FreeLibros.me

agregar,

usando

6.2 Vectores o arreglos u nid im en sion ales

f o r ( i = 0 ; i <n; i ++)

{
p ( "elem ento

");

s C * r,* l[i]);

}
}
vo id m o s t r a r ( in t 1 [J)

{
in t

i;

fo r

(i= 0;i< n;i+ + )

pr i nt f C

%d',Hi]);

}
v o id b u s c a r ( i n t b,

in t

1 [])

{
in t

= 0 , b a n d e r a=0;

w h i l e ( i < n& & ba n d er a =

0)

{
if(b = l[ij)
bandera=1;
else

i++;

}
if(bandera= = 1)
p("elem ento

e n c o n t r a d o en

%c/

\n",i);

else
p ( "elem ento no e n c o n t r a d o \ n " );

}
v o i d a g r e g a r f i n t num,

in t

1 [ ])

{
l[n]=num;
n++;

}
vo id b o r r a r f i n t p o s , i n t

1 [])

{
in t

i;

www.FreeLibros.me

139

140

Captulo 6

for

Datos d e t ip o estructurado. A rre g lo s

(i=pos;i<n;i++)

l[i]= l[i+ 1 ];

}
i n t menu()

{
in t

opc;

clrscr();
p r i n t f ( u menu\n 1. l l e n a \ n
elim ina

\n 6.

s a lir\n \t

2. m u e s t r a \ n 3.

b u s c a \ n 4.

");

s ( ' *6d \ & o p c ) ;


r e t u r n opc;

}
i n t m a in ( in t argc,

char *argv[])

{
in t lis ta [M A X ];
i n t buscado,b;
in t

o p c , num,pos;

c l r s c r f );
do{
opc=menu();
switch(opc)

{
case 1:11 l l e n a r e l

arreg lo

lle n a r(lis ta );
break;
case 2 : m o s t r a r ( l i s t a ) ;
break;
c a s e 3:

/ /b s que da
p ( u \n numero a b u s c a r

") ;

s ( V96d" , & b u s c a d o ) ;
buscar(buscado, l i s t a ) ;
break;
c a s e 4:

/ /agregar
p rin tff"

numero a a g r e g a r a l a

s("*6d",&num);
a g r e g a r (n u m , l i s t a ) ;

www.FreeLibros.me

lis ta

");

a g r e g a r \ n 5.

6.3 M atrices o arreglos bid im ensionales

break;
case 5 : b o r r a r
p ( n p o sici n a e lim in ar

");

s (" %d u, & p o s ) ;
b o rra r(p o s,lista );
break;
c a s e 6: p r i n t f ( "

adis

") ;

break;

}
getch();
} w h i l e ( o p c ! =6);

}
E n e ste e je m p lo , e n la fu n c i n p rin cip al s e e n c u e n tra el m e n d e las o p eracio n es
y d e a h s e invoca c a d a u n a d e ellas; e sto s e re p ite m ie n tra s n o s e e sc o ja la o p ci n
n m ero 6.

6.3 M atrices o arreglos bidim ensionales


Los a rre g lo s b id im e n s io n a le s s o n ta m b i n lla m a d o s ta b la s o m a tric e s.
C a d a p o s ic i n d e u n a rre g lo b id im e n s io n a l tie n e d o s n d ic e s: el p rim e ro
in d ic a el n m e ro d e re n g l n y el se g u n d o el n m e ro d e c o lu m n a e n q u e
se e n c u e n tra el e le m e n to . L a fo rm a c o n v e n c io n a l d e d e c la ra r u n a rre g lo
b id im e n sio n a l es:

<Tipo dato> <identificador> <[nm ero d e renglones]> <[nm ero de


colum nas ]>
in t m a tr iz l[3][2];
E n u n a rre g lo d e n m e ro s e n te ro s d e tre s re n g lo n e s y d o s c o lu m n a s (3 X 2 ) se
p o d ra n v e r a s lo s n d ic es:

0,0

0,1

1,0

1,1

2,0

2,1

C u a n d o s e a lu d e a la m a triz c o m p le ta , c o m o d u ra n te la a s ig n a c i n o la im p re s i n
d e v a lo re s, e n g e n e ra l s e h a c e d e m a n e ra s im ila r a c u a n d o s e a lu d e a u n a rre g lo

www.FreeLibros.me

142

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

u n id im e n s io n a l, c u id a n d o s o la m e n te q u e s e h a g a re fe re n c ia a lo s n d ic e s de
re n g l n y c o lu m n a . L a in ic ia liz a c i n s e re a liz a d e la s ig u ie n te m an e ra:
i n t m a t r i z [ 3 ] [ 2 ] = {1, 2 , 3 , 4 , 5 , 6 } ;

i n t m atriz[3][2]= {
{1, 2 }

{3,4}
{5,6}

};
E se g u n d o c a s o m u e s tra q u e e n re a lid a d u n a rre g lo b id im e n s io n a l es u n a rre g lo
de v e c to re s. P a ra a lm a c e n a r u n v a lo r d e sd e el tec la d o :
scanf("

%d", & m a t r i z [ 0 ] [ 0 ] ) ;

A la a c c i n d e m a n ip u la r to d o s lo s e le m e n to s d e u n a m a triz s e le p u e d e lla m a r
rec o rrid o , y s te s e lle v a a c a b o u tiliz a n d o d o s c ic lo s

for

a n id a d o s, y a q u e es

n e c e sa rio re c o rre r la s c o lu m n a s p a ra c a d a u n a d e la s filas. P o r e je m p lo , p a ra


a sig n a r a to d o s los e le m e n to s d e la m a triz u n v a lo r d e sd e el tec la d o :
f o r ( i = 0 ; i < = 2 ;i++)
f o r ( j =0 ; j <=1; j ++)
sca n f("% d ",& m a triz [i][j]);

P a ra c a d a v a lo r d e i (q u e e n e s te c a s o re p re se n ta la s filas) s e re c o rre r n to d o s los


v a lo re s d e

(q u e s o n la s c o lu m n a s ), y a q u e c a d a re n g l n tie n e d o s c o lu m n a s en

la m a triz d e e je m p lo .
H e le m e n to p rim o rd ia l d e u n a m a triz e s t c o n s titu id o p o r su s n d ic e s , p o rq u e
sto s d e te rm in a n el o rd e n e n el q u e s e d e b e e je c u ta r el c ic lo f o r . P a ra im p rim ir un
valor:
p r i n t f ( " % d ", m a t r i z [ i ] [ j J ) ;

P a ra im p rim ir to d o s lo s v a lo re s d e l a rre g lo e n el m is m o o rd e n e n q u e s e le y e ro n
los d a to s, se g n el e je m p lo a n te rio r:
f o r ( i = 0 ; i < = 2 ;i++)
f o r ( j =0 ; j <=1 ;j ++)
p r i n t f ( U96d", m a t r i z [ i J [ j ] ) ;

Si s e in v ie rte n lo s n d ic e s s e c re a el m is m o e fe c to d e re c o rre r la , q u e s o n las


c o lu m n a s, m s r p id a m e n te q u e lo s re n g lo n e s c o n j :

www.FreeLibros.me

6.3 M atrices o arreglos bid im ensionales

143

f o r ( j =0 ; j <=2 ; j ++)
f o r f i = 0 ;i<= 1 ;i++)
p r i n t f f U96d\t , m a t r i z [ j ] [ i j ) ;
A h o ra, re c o rre r p o r c o lu m n a , p o d ra s e r as:
f o r ( i = 0 ; i <=1 ;i++)
f o r ( j =0 ; j <=2 ; j ++)
p r i n t f f "%cP , m a t r i z [ j ] [ i ] ) ;
O
p r in tff % d \f,m a triz[i][j]);
P ara im p rim ir to d o s lo s v a lo re s fila p o r fila:
f o r ( i = 0 ;i<= 2 ;i++)
f o r f j =0 ; j <=1 ; j ++)
printf('*d\t',m atriz[i][j]);

y p a ra im p rim ir lo s v a lo re s c o lu m n a p o r c o lu m n a p u e d e s e r as:
f o r ( i = 0 ; i <=2 ; i ++)
f o r f j =0 ; j <=1 ; j ++)
p r i n t f f n96d, m a t r i z [ j J [ i ] ) ;
o ta m b i n
f o r f j =0 ; j <=2 ; j ++)
f o r ( i = 0 ;i<= 1 ;i++)
printff,&matriz[i][jj);

E je rc ic io s re s u e lto s
E je r c ic io 6 .6 A lm a c e n a r n m eros en tre 1 y

25,

g en erados aleatoriam ente,

en una tabla d e 3 x 2 renglones y colu m n as

Descripcin
In d ic a r la fu n c i n d e n m e ro s a le a to rio s.
A lm a c e n a r lo s n m e ro s g e n e ra d o s.
M o stra r la m a triz .

(c o n tin a )

www.FreeLibros.me

144

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)
Variabl es
Nombre

Tipo

Us o

tabla

Entero,

Entero

Recorre filas.

Entero

R e c o r r e c ol um nas .

real

Al macena l o s nmeros.

Codificacin
/* T a b l a con nmeros a l e a t o r i o s

entre

1 y 25 */

itine l u d e < stdio.h>


tti nc lu d e <conio.h>
tti nc lu d e < s t d l i b .h >
main()
{
in t

tab la [3 ][2 ],

i,j;

c l r s c r ( );
random ize();
f o r ( i = 0 ; i <3; i++)

f o r ( j =0 ; j <2 ; j ++)
t a b l a [ i ] [ j ]=1 +r and om( 2 5 ) ;
f o r ( i = 0 ; i <3; i ++)

{
f o r ( j = 0 ; j < 2 ;j++)
p r i n t f f " \ t%d", t a b l a [ i ) [ j ] ) ;
p r i n t f f " \ n " );
}
getchf );
return 0 ;
}

Explicacin
Se d e c la ra la m a triz in d ic a n d o el n m e ro d e re n g lo n e s y d e c o lu m n a s;
a c o n tin u a c i n c o n lo s d o s c ic lo s s e re c o rre n la s p o sic io n e s d e la m is m a
a lm a c e n a n d o u n n m e ro a le a to rio . C o m o s e e x p lic a n te s, random g e n e ra
n m e ro s e n tre 0 y 2 4 y s e le s u m a u n o p a ra q u e s e a n e n tre 1 y 2 5 . A l fin a liz a r
se m u e s tra la m a triz .

www.FreeLibros.me

6.3 M atrices o arreglos bid im ensionales

145

Ejecucin
13
4
13
24

Eje r c ic io 6.7 Realizar la suma de dos matrices, con una


dim ensin de hasta 4 X 4

Descripcin
D efin ir el ta m a o d e la p rim e ra m a triz .
D efin ir el ta m a o d e la se g u n d a m a triz .
V erificar q u e s e a n d e la m is m a d im e n si n .
L le n a r la m a triz , p rim e ro u n a y lu e g o la se g u n d a.
S u m a r la s d o s m a tric e s.
M o stra r el re s u lta d o d e la su m a.
Variables
Nombre

Tipo

Us o

posX,

Entero

Posicin

band_ 1

Entero

Bandera.

m1, m2, m3

Entero

M a t r i c e s a sumar y a a l m a c e n a r .

I,

Entero

n d i c e s p a r a r e n g l n y columna.

Entero

D i m e n s i n de l a s m a t r i c e s .

p o s Y,

del

cursor para im prim ir.

PX_ 1, PX_2

c o l _ 1 , r en _ 1 , c o l _ 2 , ren _ 2

C on s t a n t e s
Nombre

Uso

Columna

Nmero de c ol um nas .

Rengln

Nmero de r e n g l o n e s .

Codificacin
/* Suma de m a t r i c e s

*/

U i n c l u d e < s t d i o . h>

(c o n tin a )

www.FreeLibros.me

146

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)
# i n c l u d e < c o n i o . h>
ttdefine col umna 4
ttdefine r e n g l n 4

mai n( )

{
i n t m1 [ r e n g l o n ] [ c o l u m n a ] ,m2 [ r e n g l o n ] [ c o l u m n a ] , m 3 [ r e n g l o n ] [ c o l u m n a ] ;
i n t i , j , c o l _ 1, r en _ 1, c o l _ 2 , r e n _ 2 , p o s X , p o s Y , p X _ 1 , pX_2;
i n t band_1 ;
clrs c r();
do

{
p r i n t f ( "\n\t M atriz

1, dame e l numero de r e n g l o n e s y c o l u m n a s " ) ;

s c a n f ( u%d ^ d ,&ren _ 1 , & c o l _ 1 ) ;


p r i n t f f \ n \ t M a t r i z 2,

dame e l numero de r e n g l o n e s y c o l u m n a s

s canf (" *ed %du, & r e n _ 2 , & c o l _ 2 ) ;


i f ( r e n _ 1 ==ren_ 2 & & co l _ 1 ==col_ 2 )
b a n d _ 1 =Q;
else

{
b a n d _ 1 =1 ;
p r i n t f ( " n m e r o s de d a t o s i n v l i d o s ) ;

}
} v iile (b a n d _ 1);
c l r s c r ( );
pX_1=Q;
te x tco lo r(5 );
g o t o x y ( 6 , 7);
/* l l e n a r l a p r i m e r a m a t r i z
c p rin tf("m a triz

*/

1 ") ;

posX=5;posY=9;
f o r ( i = 0 ; i < r e n _ 1 ;i++)

{
f o r ( j =0 ; j < c o l _ 1 ; j ++)

{
gotoxy(posX,posY);
p r i n t f ("

");

s c a n f ( *6d" ,&m1 [ i ] [ j ] ) ;
posX+=2;

www.FreeLibros.me

");

6.3 M atrices o arreglos bid im ensionales

147

}
posX=5;
posY+=2;

}
pX_2=35;
g o to xy(4 0 ,7 );
/* l l e n a r l a s e g u n d a m a t r i z

*/

c p r i n t f ( " m a t r i z 2 ");
p o s X =40; p o s Y =9;
f o r ( i =0 ; i <ren_ 2 ; i ++)

{
f o r ( j =0 ; j < c o l _ 2 ; j ++)

{
gotoxy(posX ,posY ) ;

p rin tfC

");

s c a n f ( " % d " , &m2 [i ] [ j J ) ;


posX+=2;

}
posX=40;
posY+=2;

}
/* su m ar

*/

f o r ( i =0 ; i <ren_ 1 ; i ++)
f o r ( j =0 ; j <col_ 1 ;j++)
m 3 [ i ] [ j ] = m 1 [ i] (j J+m2[i] [ j J;
p os X= 30;p osY =3 0 ;
gotoxy( 28, 28);
textco lo r(5 );
/ * m o s t r a r suma

*/

c p r i n t f (" R e s u l t a d o " ) ;
f o r ( i = 0 ; i < r e n _ 1 ; i ++)

{
f o r ( j =0 ; j < c o l _ 1;j++)

{
g o t o x y (p o s X , p o s Y) ;
p rin tf("% d \t",m 3 [i][j]);
posX+=3;

}
p o s X =30;
(c o n tin a )

www.FreeLibros.me

148

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)
p o s Y +=3;

}
getch();
return

0;

Explicacin
S e s o lic ita el n m e ro d e re n g lo n e s y c o lu m n a s d e la p rim e ra m a triz ; a
c o n tin u a c i n s e s o lic ita p a ra la se g u n d a , s e v e rific a q u e la d im e n s i n s e a ig u al
y e n c a s o c o n tra rio p re g u n ta d e n u e v o las d im e n sio n e s . Y a q u e es v lid a la
d im e n si n s e s o lic ita n lo s d a to s ; p a ra c a d a u n a d e las m a tric e s, el c u rs o r s e c o lo c a
en la p o s ic i n q u e m u e s tra la d im e n s i n d e la m a triz .
A c o n tin u a c i n re a liz a la s u m a y m u e s tra la m a triz re s u lta n te c o n se rv a n d o la
d im e n si n .

Ejecucin
M atriz

1, dame

e l numero

de r e n g l o n e s y

columnas 2 3

M atriz

2, dame

e l numero

de r e n g l o n e s y

columnas 2 3

m atriz

m atriz

Resultado
2

Sum a de m atrices usando funciones


/* Suma de m a t r i c e s , u t i l i z a n d o

funciones

*/

#include<stdio.h>
U i n c l u d e < c o n i o .h>
Udefine col umna 4
Udefine r e n g l n 4

v o i d e s c r i b e ( i n t m1 [ r e n g l n ] [ c o l u m n a ] , i n t r e n _ 1 , i n t

{
in t i,j,p o sX ,p o sY ;
posX=3Q; po sY =3 0;

www.FreeLibros.me

c o l _ 1)

6.3 M atrices o arreglos bid im ensionales

goto xy(2 8 , 28);


te x tco lo r(5 );
cp rin tff"

R e su lta d o ");

f o r ( i =0 ; i <ren_ 1 ;i++)

{
f o r ( j =0 ;j < c o l _ 1 ;j ++)

{
g o t o x y ( p o s X , p o s Y) ;
p rin tf('% d \ f,m H i][j]);

posX+=3;

}
posX=30;
p o s Y +=3;

}
}
v o i d l l e n a r f i n t m [ r e n g l n ] [ c o l u m n a ] , i n t r e n , i n t c o l , i n t pX)

{
i n t i , j f posX,posY;
p o s X =5+pX; p o s Y = 9 ;
f o r ( i = 0 ;i<ren;i++)

{
f o r ( j =0; j < c o l ; j ++)

{
g o t o x y (p o s X ,p o s Y ) ;
p rin tff"

");

s c a n f ( B96d", & m [ ] [ j ] ) ;
posX+=2;

}
posX=5+pX;
p o s Y +=2 ;

}
}
v o i d s u m a r ( i n t m1 [ r e n g l n ] [ c o l u m n a ] , i n t m2 [ r e n g l n ] [ c o l u m n a ] , i n t
m3[rengln] [colum na], i n t

ren _ 1 ,in t col_ 1 )

{
in t i, j ;
f o r ( i =0 ; i <ren_ 1 ;i++)

www.FreeLibros.me

149

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

f o r ( j =0 ; j <col_ 1 ; j ++)
m 3 [i][j]= m 1 [i][j]m 2 [i][jl;
e s c r i b e ( m 3 , r e n _ 1, c o l _ 1);

}
mai n( )

{
char opr;
i n t m1 [ r e r i g o n ] [ c o lu mn aJ ,m 2 [ r e n g l o n ] [ c o l u m n a ] , m 3 [ r e n g l o n ] [ c o l u m n a ]
i n t i , j , c o l _ 1 , r en _ 1, c o l _ 2 , r e n _ 2 , p o s X , p o s Y , p X _ 1 , p X _ 2 ;
i n t band_1 ;
c lrs c rf);
do

{
p r i n t f f \n\t M atriz

1,

dame e l numero de r e n g l o n e s y c o l u m n a s

")

s c a n f ( u%d %d " , & r e n _ 1 , & c o l _ 1) ;


p r i n t f f " \n\t M a triz

2,

dame e l numero de r e n g l o n e s c ol umnas

s c a n f ( U96d %c/" , & r e n _ 2 , & c o l _ 2 ) ;


i f ( r e n _ 1 ren_ 2 & & c o l _ 1 ==col_ 2 )
b a n d _ 1 =Q;
else

{
b a n d _ 1 =1 ;
p r i n t f f " n m e r o s de d a t o s i n v l i d o s ) ;

}
}w hile(band_ 1) ;
c lrs c rf);
pX_1=0;
t e x t c o lo r ( 5 );
g o t o x y ( 6 , 7);
cp rin tf("m a triz

1 ) ;

11e n a r ( m 1 , r en _ 1, c o l _ 1, p X _ 1);
pX_2=35;
g o t o x y (40, 7);
cp rin tf("m a triz

2 ) ;

l l e n a r (m2,ren_2, c o l _ 2 , p X _ 2 ) ;
sumar (m1 ,m2,m3, ren _ 1 , c o l _ 1 );
g e t c h f );
return 0 ;

www.FreeLibros.me

") ;

6.4

A r r e g l o d e c aractere s y c a d e n a d e caracteres

6.4 Arreglo de caracteres y cadena de caracteres


G e n e ra lm e n te s e d ic e q u e es a rre g lo d e c a ra c te re s c u a n d o lo q u e s e a lm a c e n so n
c a ra c te re s y n o e x is te el c a r c te r n u lo al fin al ( / 0 ). C u a n d o el a rre g lo d e c a ra c te re s
te rm in a c o n el c a r c te r n u lo s e lla m a c a d e n a d e c a ra c te re s . A m b o s fu n c io n a n d e
fo rm a s im ila r a lo s a rre g lo s n u m ric o s , p a rtie n d o d e la b a s e d e q u e c a d a c a r c te r
o c u p a n o rm a lm e n te u n by te.
'H'

'0 '

'L'

'A '

ste es u n a rre g lo d e c a ra c te re s c o m o s e v e ra a lm a c e n a d o e n m e m o ria . L a


d e c la ra c i n d e e s te a rre g lo es:
char s a l u d o [ 4 ] ;

y la a s ig n a c i n ser:
saludo

[0]

= 'H ';

saludo

[ 1 J = 'O ';

saludo

[2 ] =

saludo

[3]

= 'A ';

D e sd e el te c la d o s e d e fin e as:
s c a n f ( " 96 c " , & s a l u d o [ 0 ] ) ;

P ara im p rim ir u n c a r c te r d e la c a d e n a s e p u e d e u tiliz a r

p rin tf;

lo q u e m u e s tra

en p a n ta lla el c a r c te r c o n te n id o e n la c e ld a c o n p o s ic i n 0.
p r i n t f ( "%c", s a l u d o [ 0 ] ) ;

O tra fo rm a d e le e r y m o s tra r c a ra c te re s es m e d ia n te la s fu n c io n e s q u e a
c o n tin u a c i n s e d e sc rib e n ; el e je m p lo 6.3 m u e s tra u n a a p lic a c i n d e la s m ism a s.

Funcin g e t c h a r f ) P rm ite le e r u n a c a d e n a c a r c te r p o r c arc ter.


Funcin p u t c h a r f ) E s ta fu n c i n es o p u e s ta a

g e tch a rf); putcharf)

e s c r ib e e n la

sa lid a u n c arc ter.

Ej e m p l o 6.2 Contar el nm ero de ocasiones que aparece la letra


'a' en una lnea
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
(c o n tin a )

www.FreeLibros.me

152

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

m in ( )

(continuacin)

{
in t

C uent aCar=0;

c h a r Cadena;
w h ile

(Cadena!=EOF)

{
Cadena=getchar();
i f

( C ad en a ' a ')
++CuentaCar;

}
p r i n t f ( " \ n A p a r e c i e r o n %c/

veces l a l e t r a

'a '

",CuentaCar);

getchf);
return 0 ;

Con

getchar

s e le e n lo s c a ra c te re s; p a ra s a lir d e la le c tu ra d e c a ra c te re s se

p re s io n a n las te c la s C trl+ Z , q u e es el fin d e ln e a . U n a v e z le d o u n c a r c te r


se c o m p a ra c o n la le tra a y si es ig u a l s e s u m a c o n Cue nt aC a r. A l final se
m u e stra e l re su lta d o .

Ej e

m p l o

6 .3

Im prim ir en pantalla, en maysculas, un nombre


que fu e ledo en minsculas

t t i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
# i n c l u d e ( c t y p e .h )
mai n( )

ii
c h a r Cadena;
p r i n t f ( \n
w h ile

E s c r i b a s u nombre:

');

(Cadena!=EOF)

Cadena=getchar( ) ;
p u t c h a r ( t o u p p e r ( Cadena));

getchf);
return 0 ;
}

www.FreeLibros.me

6.4 A rre g lo d e caracteres y caden a d e caracteres

Se d e c la ra u n a b ib lio te c a n u e v a d e n o m in a d a

ctype

153

q u e p e rm ite a n a liz a r

c a ra c te re s y h a c e r c o n v e rsio n e s. C o n tie n e , e n tre o tra s , la fu n c i n

toupper,

que

c o n v ie rte u n c a r c te r e s c rito e n m in s c u la e n u n o e s c rito e n m a y sc u la .


El p ro g ra m a le e r u n n o m b re , c a r c te r p o r c a r c te r h a s ta q u e o p rim a C trl+ Z .
Ya q u e s e u s la fu n c i n

getchar,

c o n v ie rte a m a y s c u la c a d a c a r c te r

c o n fo rm e s e le e y al fin al lo im p rim e .

Funciones g e t c h ( ) y g e t c h e ( ) E stas fu n c io n e s n o s e in c lu y e n e n el e s t n d a r de
C , p e ro s e in c o rp o ra n e n la m a y o ra d e lo s c o m p ila d o re s.
L as d o s fu n c io n e s p e rm ite n le e r u n c a r c te r d e l te c la d o :

getchf)

n o lo v is u a liz a en

p a n ta lla , m ie n tra s q u e g e t c h e f ) lo le e y lo im p rim e e n p a n ta lla . E sta s fu n c io n e s se


e n c u e n tra n e n la b ib lio te c a c o n i o . h .

Cadena de caracteres
L as c ad e n as d e c a ra c te re s su e le n te n e r u n c a r c te r al final q u e in d ic a la te rm in a c i n
d e la c a d e n a (se c o n o c e c o m o c a r c te r n u lo , y e n c d ig o A S C II es 0 ). E n C , la
lo n g itu d d e u n a rre g lo d e c a d e n a d e c a r c te r s e d e fin e p o r el ta m a o d e la c a d e n a
m s u n o , p a ra a lm a c e n a r el c a r c te r n u lo . P a ra le e r u n a c a d e n a se p u e d e u tiliz a r
scanf,

a n o ta n d o s lo el n o m b re d e l a rreg lo , y p a ra m o stra rlo s e u tiliz a

p rin tf.

char A [ 5 ] ;
s c a n f ( U96SU, & A ) ;

'\0 '

Para im p rim ir la c a d e n a d e c a ra c te re s c o m p le ta s e re q u ie re s lo el n o m b re del


c a m p o y s e im p rim ir d e sd e el in ic io h a s ta e n c o n tra r u n fin d e ln e a ( \ 0 ) o u n
re to rn o d e c a rro ( \ n ).
p rin tf

A);

P a ra el c a s o e n q u e s e d e s e e le e r u n a c a d e n a d e c a ra c te re s c o m o G abriela

M rquez, si s e u tiliz a la fu n c i n

s e a lm a c e n a r s lo la p a la b ra G a b rie la ,
ya q u e e s ta in s tru c c i n d e ja d e le e r al e n c o n tra r u n e s p a c io e n b la n c o . P a ra eso s
caso s es p re fe rib le u tiliz a r la fu n c i n g e t s ( ) .
scanf

L a funcin g e t s ( ) p e rm ite le e r u n a c a d e n a , in c lu y e n d o e sp a c io s e n b la n c o ,
te rm in a n d o c o n el c a r c te r d e fin d e ln e a (e n te r). L a funcin p u t s ( ) im p rim e u n a
c a d e n a d e c a ra c te re s , in c lu y e n d o el c a r c te r d e fin d e ln e a , a s q u e el a p u n ta d o r
se ala el in ic io d e l s ig u ie n te re n g l n .

www.FreeLibros.me

154

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

Ej e m p l o 6.4 A lm acenar un nom bre en el arreglo denom inado M i Nom bre


# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
mai n( )

{
c h a r Mi Nombre[ 5 0 ] ;
p rin tf("\n

E s c r i b a su nombre:

");

gets(MiNombre);
p r i n t f ( "\n\n
puts

Hola,

mi nombre e s " ) ;

( MiNombre) ;

g e t c h f );
return

0;

Funciones para m anejo de cadenas


El C e s t n d a r c o n tie n e la b ib lio te c a

strin g .h ,

q u e p e rm ite u tiliz a r la s fu n c io n e s

de m a n ip u lac i n d e c ad e n as d e c a ra c te re s m s u su a le s, c o m o c a lc u la r la lo n g itu d de
u n a c a d e n a , c o m p a ra r a lfa b tic a m e n te d o s c a d e n a s, c o n c a te n a r c a d e n a s, e tc te ra .

Funcin

s trc p y

C o p ia la c a d e n a a p u n ta d a p o r

c a d e na 2

cadenai,

in c lu y e n d o el

c a r c te r n u lo . S u sin ta x is es:
char s t r c p y ( c h a r c a d e n a l, c h a r cadena2 ) ;

L a fu n c i n to m a el c o n te n id o d e

c a d e na 2

y lo a lm a c e n a e n

c a d e n a i . C a de n ai

debe

se r d e ta m a o ig u a l o m a y o r a c a d e n a 2 , y a q u e a lm a c e n a c o m p le ta m e n te h a s ta el
c a r c te r d e te rm in a c i n d e c a de n a 2 .

Funcin

C o p ia u n a c a n tid a d d e te rm in a d a d e c a ra c te re s d e u n a c a d e n a y
los a lm a c e n a e n u n a rre g lo . S u s in ta x is es:
strn cp y

char s trn c p y (c h a r cadenal,

c h a r c a d e na 2 , i n t n ) ;

T o m a n c a ra c te re s e s c rito s e n c a d e na 2 y lo s a lm a c e n a e n
no s e c o p ia el c a r c te r d e te rm in a c i n d e la c a d e n a 2 .

Funcin

strc a t

cadenal.

P uede ser que

T o m a u n a c a d e n a y la a lm a c e n a e n u n a rre g lo , al final d e lo

qu e el a rre g lo te n g a e s c rito . S u s in ta x is es:


char s t r c a t ( c h a r cadenal,

www.FreeLibros.me

c h a r cadena2 )

6.4 A rre g lo d e caracteres y caden a d e caracteres

T o m a el c o n te n id o d e
de fin d e la

cadaal,

c a de n a 2

y lo d e p o s ita e n

cadaal,

155

a p a rtir d e l c a r c te r

so b re sc rib ie n d o e s e c arc ter.

Funcin s t r n c a t T o m a c ie rta c a n tid a d d e c a ra c te re s d e u n a c a d e n a y


la a lm a c e n a e n u n a rre g lo , a l final d e lo q u e el a rre g lo te n g a e s c rito .
Su s in ta x is es:
c h a r s t r n c a t ( c h a r c a d a a l , c h a r c a d e n a 2 , i n t n)

T o m a el n m e ro d e c a ra c te re s d e fin id o e n
cadaal,

d e fin d e

a p a rtir d e l c a r c te r d e fin d e

n,

de

cadaal,

c a d e na 2

y lo d e p o s ita e n la

so b re sc rib ie n d o el c a r c te r

cadaal.

Funcin strc m p C o m p a ra d o s c a d e n a s d e c a ra c te re s a lfa b tic a m e n te ,


d e v u e lv e 0 si s o n ig u a le s , u n n m e ro n e g a tiv o si la p rim e ra es m e n o r q u e
la s e g u n d a o u n n m e ro p o sitiv o si la p rim e ra es m a y o r a la se g u n d a .
S u s in ta x is es:
i n t s t rc m p ( c o n s t c h a r c a d a a l , c o n s t char cadena2 )

T o m a el c o n te n id o d e

cadaal

y lo c o m p a ra c o n el c o n te n id o d e

cadena2 .

Funcin s t r l e n f ) D e v u e lv e el n m e ro d e c a ra c te re s d e u n a c a d e n a , h a s ta el
q u e a n te c e d e al c a r c te r n u lo , d e te rm in a c i n d e c ad en a.
E je rc ic io s re s u e lto s
Ej e r c i c i o 6 .8 Leer un arreglo de caracteres con la instruccin s c a n f
y m ostrar lo capturado

Descripcin
L e e r c a d a u n o d e lo s c a ra c te re s.
V erificar si s e le e u n fin d e c a d e n a d e c arc ter.
M o stra r la c a d e n a d e c a ra c te re s led a.

Vari abl es
Nombre

Tipo

Uso

cad

Carcter

Al mac ena l a

car

Carcter

Al macena un c a r c t e r .

Entero

Recorre e l

cadena l e d a .

arreg lo.

(c o n tin a )

www.FreeLibros.me

156

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(c o n tin u a c i n )

Codificacin
/ * C a p t u r a de u n a c a d e n a d e c a r a c t e r e s c o n s c a n f */

U i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

v o id m a in ()

{
char
in t

cad[20] ,car;
i= 0 ;

clrscrf);
p r i n t f f " \nIntroduzca

una

cadena

de

caracteres

( n o mas de

18)

\n*) ;

do

{
s c a n f ( "%c" , &car);
i f ( c a r ! = ' \ n ')
{
c a d [i]= ca r;

++;
}
}w h ile(ca r!= '\n ');
c a d [ i ] =' \ 0 ' ;

/* Se

p r i n t f ( u \n L a

aade

cadena

el

fin d e

capturada

es:

cadena

*/

%s",

cad);

getchf);

Explicacin
Se le e u n c a r c te r, s e a lm a c e n a e n el v e c to r

cad,

e n la p o s ic i n 0 se

in c re m e n ta el n d ic e , s e e v a l a la c o n d ic i n y si el c a r c te r le d o es d ife re n te
d e fin d e n u e v a ln e a , s e re p ite el c ic lo . A l fin a liz a r el c ic lo s e c o lo c a el fin de
c a d e n a y a c o n tin u a c i n s e m u e s tra la c a d e n a d e c a ra c te re s led a.

Ejecucin
Introduzca

una

cadena

de

caracteres

( n o mas d e

Ga b y
La cadena

capturada

e s Gaby

www.FreeLibros.me

18)

6.4 A rre g lo d e caracteres y caden a d e caracteres

157

Eje r c ic io 6.9 Leer un arreglo de caracteres y m ostrar la longitud de la cadena


leda, carcter a carcter, con s t r le n , y con s i z e o f
finalm ente m ostrar la posicin en m em oria del arreglo
Descripcin
L ee r la c a d e n a h a s ta q u e s e o p rim a fin d e ln e a.
M o s tra r c a d a u n o d e lo s re su lta d o s.

Variables
Nombre

Tipo

Uso

cad

Carcter

Al mac ena l a

car

Carcter

Al macena un c a r c t e r .

Entero

Al mac ena l a

Entero

Recorre e l

cadena l e d a .

lo n g it u d del a rre g lo .
arreg lo.

Codificacin
#include<stdio.h>
# i n c l u d e < c o n i o . h>
# i n c l u d e < s t r i n g . h>
tdefine MAX 20

mai n( )

{
c h a r c ad[ MAX] , c a r ;
i n t i=0, j ;
clrs c rf);
p r i n t f f " \ n I n t r o d u z c a una cadena de c a r a c t e r e s (no mas de 18)

\n");

do

{
s c a n f ( " %c" , & c a r ) ;
i f

( c a r l = x\n ')

{
cad[i]= car;

i++;

}
} w h ile ( c a r ! = '\ n ');
c a d [ i ] = ' \ 0 ' ; / C o l o c a n d o fin de cadena
(contina)

www.FreeLibros.me

158

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

(continuacin)
c l r s c r f );
/* i m p r i m i r A S C I I

*/

p r i n t f ( " \ n L a cadena c a p t u r a d a e s : %s",


p r i n t f ( " \n

cad);

A S C II c o r r e s p o n d i e n t e \ n " );

f o r ( j = 0 ; j <i ; j ++)
p r i n t f ( u\ t % d * , c a d [ j ] ) ;
p r i n t f ( \n L a l o n g i t u d de l a

c ad e n a ,

c o n t a d a con i

e s : %cT, i ) ;

p r i n t f ( " \n L a l o n g i t u d de l a

c a d e na medi da co n s t r l e n

e s : %c/",

s t r le n ( c a d ) );
p r i n t f ("\ n La lo n g it u d de l
p r i n t f ( \n L a d i r e c c i n

a r r e g l o c a d e s : %c/",

donde s e e n c u e n t r a l a

s iz e o f (cad)) ;

c a d e na c a p t u r a d a e s :

%d",&cad);
getch();

Explicacin
S e le e la c a d e n a 1 c a r c te r a c arc ter, s e a g re g a el c a r c te r n u lo y s e m u e s tra la
c a d e n a d e c a ra c te re s se g n el n m e ro A S C II q u e le c o rre s p o n d a a c a d a le tra .
A c o n tin u a c i n s e m u e s tra la lo n g itu d se g n el c o n ta d o r (q u e in c lu y e el e sp a c io
en b la n c o ), la lo n g itu d m e d id a c o n la in s tru c c i n

s trle n

la c a d e n a ) y el ta m a o d e l a rre g lo c o n la in s tru c c i n

(n m e ro d e c a ra c te re s de

size o f

(n m e ro d e b y tes

de to d o el a rre g lo ). F in a lm e n te s e m u e s tra la d ire c c i n d e m e m o ria d o n d e se


in ic i el a lm a c e n a m ie n to d e la c ad en a.

Ejecucin
I n t r o d u z c a una cadena de c a r a c t e r e s

(no mas de 18)

gaby marquez
L a c a d e na c a p t u r a d a es
gaby marquez
103

97

98

121

32

109

97

114

113

122

L a l o n g i t u d de l a

c adena,

n L a l o n g i t u d de l a
La l o n g i t u d d e l
La d i r e c c i n

c o n t a d a c on i

es:

c a d e na medi da c on s t r l e n

12
es:

a r r e g l o c a d e s 20

de l a

cadena c a p t u r a d a e s :

2293584

www.FreeLibros.me

12

117

101

6.4 A rre g lo d e caracteres y caden a d e caracteres

159

Eje r c ic io 6.10 Leer un nom bre y contar el nm ero de ocasiones


que aparece la letra seleccionada
Descripcin
L e e r n o m b re.
L ee r le tra a co n tar.
M o stra r re su lta d o .

Variabl es
Nombre

Tipo

Uso

total

Entero

C uent a e l nmero de i n c i d e n c i a s .

Entero

Recorre e l

nombre

A rreglo caracteres

A l m a c e n a e l nombre.

a r r e g l o de c a r a c t e r e s .

Codificacin
/* M u e s t r a men p a r a c a p t u r a de nombre y c u e n t a l e t r a s
H include

<stdio.h >

ttinclude

< stdlib.h>

ttinclude

< s t r i n g . h>

*/

mai n( )

{
in t

to ta l,i;

c h a r nombre[ 4 0 ] , l e t r a ;
c lrs c r();
p r i n t f f " \nDame e l n o m b r e \ n " ) ;
no mb re[ 0 ] = ' \ 0 ' ;
g e t s (nombre);
fflush(stdin) ;
p r i n t f ( \n Cua l l e t r a

s e va a c o n t a r \ n " ) ;

s c a n f f "%c", & l e t r a ) ;
total= 0 ;
f o r ( i =0 ; i < s t r l e n ( n o m b r e ) ; i ++)

{
i f

(letra==nom bre[i))
total++;

(c o n tin a )

www.FreeLibros.me

160

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

[continuacin)

}
prin tf("\n La le tr a

- %c - s e e n c o n t r % v e c e s en e l nombre:

96 s \ n " , l e t r a , t o t a l , n o m b r e ) ;
getch();

0;

return

Explicacin
Se s o lic ita u n n o m b re y a c o n tin u a c i n s e lim p ia la e n tra d a e st n d a r; la c a d e n a
es a lm a c e n a d a e n la v a ria b le
v aria b le

total

nombre ,

d e sp u s s e le e e n

le tra

el c a r c te r a c o n ta r; la

llev ar la su m a d e las o casio n e s q u e s e en cu e n tre . E n el c u e rp o del

c ic lo s e e n c u e n tra la in s tru c c i n

s trie n ,

q u e d e v u e lv e el n m e ro d e c a ra c te re s

led o s. A l final s e m u e s tra el c a r c te r y el n m e ro d e o c u rre n c ia s, a s c o m o


el n o m b re . E s im p o rta n te m e n c io n a r q u e s e c o n sid e ra n d ife re n te s la s le tra s
m a y sc u la s y la s m in s c u la s .

Ejecucin
Dame e l nombre
g a b r i e l a marquez
Cual l e t r a s e va a c o n t a r
a
La l e t r a

- a - s e e n c o n t r 3 v e c e s en e l nombre: g a b r i e l a marquez

Eje r c ic io 6.11 Distinguir entre un nm ero y una letra; si es letra,


adem s distinguir si es mayscula o minscula

Descripcin
L ee r el c arc ter.
E v a lu a r si es n m ero .
Si n o es n m e ro , e v a lu a r si es le tra .
Si es le tra , e v a lu a r si es m a y sc u la .

Variabl es
Nombre

Tipo

Us o

car

Carcter

Al mac ena e l

www.FreeLibros.me

c a r c te r a evaluar.

6.4

A r r e g l o d e c aractere s y c a d e n a d e caracteres

Codificacin
/*I d e n t i f i c a s i

un c a r c t e r e s una l e t r a

Uinclude

<stdio.h >

H include

<ct ype.h>

H include

<c o ni o. h >

del

a l f a b e t o o un d g i t o

*/

mai n( )

{
char car;
p r i n t f ( " \ n C a p t u r e un c a r a c t e r \ n " ) ;
s c a n f ( " %c" , & c a r ) ;
i f

(is d ig it(c a r))


p r i n t f ( " \ n E l c a r c t e r c a p t u r a d o e s un d i g i t o \ n " ) ;

else

{
i f

(isa lp h a (ca r))


p r i n t f ( " \ n E l c a r c t e r c a p t u r a d o e s una l e t r a

i f

del a lfa b e t o " ) ;

(isu ppe r(car))


p r i n t f (" y es m a y u s c u la \n ");

e lse
p r i n t f (" y es m i n u s c u l a \ n " );

}
getchf);
return

0;

Explicacin
S e c a p tu ra el c a r c te r y s e c o m p a ra c o n la in s tru c c i n
e n tre c e ro y n u e v e s e m u e s tra el te x to

is d ig it.

S i es u n d g ito

"El c a r c t e r c a p t u r a d o e s un d g i t o

d e lo c o n tra rio , s e c o m p a ra d e n u e v o p a ra v e rific a r si es le tra , y d e s e rlo e sc rib e


q u e es u n a le tra . A c o n tin u a c i n c o m p a ra si es m a y s c u la y lo in d ic a ; d e lo
c o n tra rio e s c rib e q u e es m in sc u la .

Ejecucin
C a p t u r e un c a r c t e r
S
E l c a r c t e r c a p t u r a d o e s una l e t r a

d e l a l f a b e t o y es mayscula

www.FreeLibros.me

162

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

Resum en
S e lla m a a rre g lo al c o n ju n to d e e le m e n to s o v a ria b le s d e l m is m o tip o d e d ato .
L os a rre g lo s p u e d e n s e r d e u n a o d e v a ria s d im e n sio n e s .
El a rre g lo u n id im e n s io n a l s e c o n o c e ta m b i n c o m o v e c to r o lis ta , y s e d e fin e
m e d ia n te u n tip o d e d a to , u n id e n tific a d o r y la c a n tid a d d e e le m e n to s e n tre
c o rc h ete s.
P a ra te n e r a c c e s o a u n e le m e n to s e u tiliz a u n n d ic e , q u e in d ic a la p o s ic i n del
a rre g lo a c o n su lta r, ta m b i n s e u s a p a ra a s ig n a r v a lo re s.
El a rre g lo b id im e n s io n a l es lla m a d o m a triz o ta b la ; e n c a d a p o s ic i n tie n e dos
n d ic es: u n o p a ra in d ic a r la fila y o tro p a ra la c o lu m n a .
Es im p o rta n te e s c rib ir sie m p re el n d ic e a c o n tin u a c i n d e l id e n tific a d o r p a ra te n e r
a c c e s o a u n a p o sic i n d e l a rre g lo , y a s e a p a ra le e r u n v a lo r o p a ra a sig n a rlo .
El a rre g lo p u e d e a lm a c e n a r c a ra c te re s . L a d ife re n c ia e n tre fo rm a r u n a rre g lo de
c a ra c te re s y fo rm a r u n a c a d e n a d e c a ra c te re s, c o n s is te e n q u e e n el se g u n d o c a so
se a g re g a el c a r c te r n u lo \ 0 al final.
E n la b ib lio te c a s t r i n g . h s e e n c u e n tra n fu n c io n e s p a ra la m a n ip u la c i n
d e c a d e n a s d e c a ra c te re s , c o m o u n ir d o s c a d e n a s d e c a ra c te re s , c o m p a ra r dos
c a d e n a s o c o p ia r u n a c a d e n a s o b re o tra.

Evaluacin
I. Conteste las siguientes preguntas.
1. Q u es u n a rre g lo ?
2 . E l n d ic e s e u tiliz a p a ra in d ic a r la ___________________ e n u n a rre g lo .
3 . C o n q u n m e ro in ic ia la n u m e ra c i n d e u n a rre g lo ?
4 . P u e d e u n a rre g lo a lm a c e n a r d a to s d e tip o b sic o ?
5 . P u e d e u n a rre g lo a lm a c e n a r d a to s d e tip o e s tru c tu ra d o ?
6 . E s p o sib le in ic ia liz a r el a rre g lo c u a n d o s e d e c la ra ?
7 . C m o s e e s c rib e p a ra a s ig n a r u n v a lo r e n u n a rre g lo ?

www.FreeLibros.me

Ejercicios p ro p u e s to s

8 . E s p o s ib le q u e el a rre g lo te n g a u n a , d o s o m s d im e n sio n e s ?
9. C u l es la d ife re n c ia e n tre a rre g lo d e c a ra c te re s y c a d e n a d e c a ra c te re s ?
10. E s p o s ib le c o m p a ra r d o s c a d e n a s d e c a ra c te re s y d e c ir c u l tie n e m a y o r
lo n g itu d ?
11. C m o s e o rd e n a n lo s c a ra c te re s ?

n . M uestre el resultado del siguiente ejercicio.


E s c rib a u n p ro g ra m a q u e a lm a c e n e u n a lis ta d e c in c o n o m b re s , d ig a cu l
n o m b re es el m a y o r y c u n to s c a ra c te re s tie n e.

Ejercicios propuestos
I. Codifique los siguientes program as.
1. L ee r e im p rim ir el n o m b re c o m p le to d e u n a lu m n o , c o n su c a rre ra
y c d ig o .
2. H a c e r u n p ro g ra m a q u e p e rm ita le e r c ie rta c a n tid a d d e n o m b re s de
a sig n a tu ra s q u e d e b e lle v a r u n a lu m n o .
3 . D e fin ir u n p ro g ra m a q u e p e rm ita le e r u n te x to d e 2 0 ln e a s.
4. C o n ta r el n m e ro d e v o c a le s q u e a p a re c e n e n u n a c a d e n a d e c a ra c te re s.
5. E sc rib ir u n p ro g ra m a q u e p e rm ita le e r la lo n g itu d d e u n a c a d e n a de
c a ra c te re s.
6 . E lim in a r lo s d u p lic a d o s e n u n a rre g lo o rd e n a d o (p o r e je m p lo , 1 2 2 3 4 5
5 5 6 7 8 9 9 10 11).
7. A lm a c e n a r e n tre s a rre g lo s p a ra le lo s in fo rm a c i n d e p ro v e e d o re s:
e n u n o el n o m b re d e l p ro v e e d o r; e n o tro , la c iu d a d e n q u e tra b a ja ,
y e n el te rc e ro el n m e ro d e a rtc u lo s q u e v e n d i . R e a liz a r la s sig u ie n te s
o p e ra c io n e s: m o s tra r u n p ro v e e d o r p o r a rtc u lo , b o rra r u n p ro v e e d o r,
in s e rta r u n n u e v o p ro v ee d o r.
8 . L ee r lo s e le m e n to s d e u n a rre g lo d e 3 x 6 y m o s tra r lo s e le m e n to s d e c a d a
re n g l n e n u n a c o lu m n a .

www.FreeLibros.me

163

164

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

9. L e e r u n a fe c h a , p e d ir u n n m e ro d e d a s q u e s e s u m a a e s a fe c h a , m o s tra r
la fe c h a final.
10. L e e r u n a fra s e y e s c rib ir c a d a p a la b ra e n u n ren g l n .
11. O rd e n a r c in c o c a d e n a s d e tex to .

II. C om plete las lneas en blanco.


/ * U n i r dos a r r e g l o s o r d e n a d o s */
U in c lu d e <stdio.h>
tdefine MAX 100
#define p p r i n t f
ttdefine s s c a n f
i n t m a in fin t argc,

char

*argv[J)

{
i n t A[MAX] , B[ MAX], u n i d o s [ M A X ] f l A , l B , l C , i , j , k ;
/* l l e n a r l o s

arreg los

*/

p ( " \ n c u a n t o s e l e m e n t o s en e l

arreg lo A

");

s('% d ',& lA );
f o r ( i =0 ; i <1 A ; i ++)
s C * d ',& A [iJ);
p ( " \ n c u a n t o s e l e m e n t o s en e l

a r r e g l o B ") ;

s ( ____________________ ) ;

f o r ( i =0; i < l B ; i + + )
s C % d , & B [ i ] ) ;
/* comprobar l o n g i t u d de a r r e g l o s

*/

1C=1A+1B;

f ( ______ ;
{
p("

d e ma s i ad o s e l e m e n t o s " ) ;

e x it

( 0);

}
I* i n s e r t a r

*/

i = 0 ; j =0; k=0;
w h i l e f i < l A & & j <1B)

{
if(A [i]< B [j)

{
un i d o s [___ ] =A[___ J ;

www.FreeLibros.me

165

Ejercicios p ro p u e s to s

i - M-;

}
else
{ u n id o s[k j= B [j];

j+ + ;

>
k++;

}
if(i= = lA )
w h i l e f j <1B)

{
u n i d o s [ k ] = B [ j ];

j ++;
k ++;

}
else
w h ile (i< lA )

{
u n i d o s [ k ] = A [ i ];

i ++;
k ++;

}
/* m o s tra r r e s u l t a d o

*/

f o r ( i =0; i <1C; i++)


p ( " \ n \ n %c/ " , u n i d o s [____J ) ;
s y s t e m ( uP A U S E " ) ;
return

0;

H I. D escriba lo que im prim e el siguiente program a.


1

.
H i n d de < stdio.h>
H include

< stdlib.h>

H include

< string.h>

vo id im p rim e N c a ra c te re s fin t

cant,char

titu lo [J)

{
in t

i;

p r i n t f ( \ n " );

www.FreeLibros.me

166

Captulo 6

Datos d e t ip o estructurado. A rre g lo s

f o r f i = 0 ;i<cant;i++)

p r i n t f f U96C \ t B, t i t u l o [ i ] ) ;
p r i n t f f " \ n ) ;
}
i n t main()

{
i n t n;
c h a r f r a s e [ 2 0 ];
p r i n t f f " \nEscriba e l

titu lo

de un l i b r o \ n u) ;

getsffrase);
p r i n t f f " \nEscriba l a

c a n t i d a d de c a r a c t e r e s a i m p r i m i r de esa

fra s e \ n " );
s c a n f ( " t e n, & n ) ;
i m p r i m e N c a r a d e r e s (n , f r a s e ) ;
getchf);
return 0 ;

www.FreeLibros.me

O .F T tJ .G

Datos de tipo
estructurado

E n e s te c a p tu lo s e h a b la r d e l tip o d e d a to s e s tru c tu ra d o y d e la
d e fin ic i n y m a n e jo d e a p u n ta d o re s.

7.1 Estructura
L a e s tru c tu ra o re g is tro es u n tip o d e d ato s e s tru c tu ra d o q u e a g ru p a u n a
o m s v a ria b le s, y a s e a d e u n s o lo tip o o d e d ife re n te s tip o s d e d a to s, y
a d em s sto s p u e d e n s e r a s u v e z d a to s sim p le s o d a to s e s tru c tu ra d o s .
U na e s tru c tu ra s e d e c la ra d e la s ig u ie n te m an e ra:
stru c t id entificador_estructura

{
Tipo_dato identificador_cam po1;
Tipo_ dato id entificador_cam po2;

www.FreeLibros.me

168

Captulo 7

D atos d e t ip o estructurado

};
D onde
identifcador_ e s t r u c t u r a es el n o m b re d e la e stru c tu ra ; e n el c u e rp o d e l m is m o
(d e n tro d e las lla v e s) s e e n c u e n tra n lo s c a m p o s q u e c o n te n d r n la e s tru c tu ra , c a d a
u n o c o n s u re s p e c tiv o tip o d e d a to . S e m u e s tra u n e je m p lo a c o n tin u a c i n :
s t r u c t agenda
{
char nombre[30];
i n t edad;
};
P a ra d e c la ra r v a ria b le s d e tip o a g e n d a sera:
s t r u c t agenda alumno, p r o f e s o r ;
i n t a;
char b , c ;
S e d e c la ra ro n d o s v a ria b le s , alumno y p r o f e s o r , s ig u ie n d o la s m ism a s reg la s
q u e s e h a n e m p le a d o p a ra d e c la ra r u n a v a ria b le s im p le . T a m b i n s e p u e d e n
d e c la ra r a c o n tin u a c i n d e la d e fin ici n :
s t r u c t agenda
{
char nombre[ 30];
i n t edad;
}alumno, p r o f e s o r ;
E n e s te e je m p lo , la e s tru c tu ra a g e n d a tie n e d o s c a m p o s lla m a d o s ta m b i n
m ie m b ro s: nombre es u n a c a d e n a d e c a ra c te re s y edad, u n e n te ro .
P a ra a sig n a r v a lo re s e n la e s tru c tu ra s e p u e d e p ro c e d e r d e la s ig u ie n te m an e ra:
alumno. nombre= "Juan P e r e z " ;
alumno.edad= 1 5;
E n d o n d e s e h a c e re fe re n c ia al id e n tific a d o r d e la v a ria b le , se g u id o d e l o p e ra d o r
p u n to (.) q u e es el o p e ra d o r d e m ie m b ro s d e e stru c tu ra . O b ie n , si s e d e s e a
in g re sa r lo s d a to s d e sd e el te c la d o :

www.FreeLibros.me

7.1 Estructura

169

s c a n f ( "%s", & a l u m n o . n o m b r e ) ;
s c a n f ( "% i" , & a l u m n o . e d a d ) ;

p a ra im p rim ir lo s d a to s led o s:
p r i n t f f "%s", a l u m n o . n o m b r e ) ;
p r i n t f f "%2 ' , a l u m n o . e d a d ) ;

A c o n tin u a c i n s e m u e s tra u n e je m p lo q u e m a n e ja e sta e s tru c tu ra , y s e d e c la ra n


dos v a ria b le s.
E j e m p l o 7 .1 Leer y mostrar los datos de un alum no y un profesor; el ejem plo
utiliza la definicin de estructura com o una variable local
Hiel u d e

<stdio.h >

ttinclude

<c o ni o. h >

mai n( )

{
s t r u c t agenda

{
c h a r no mb re[ 3 0 ] ;
in t

edad;

}alumno, p r o f e s o r ;
c l r s c r ( );

/* in ic ia liz a r

*/

a l u m n o . no mb re[ 0 ] = ' 0 ';


alumno.edad=0 ;
pro fesor.n om bre[0]= '0 ';
p r o f e s o r . edad= 0 ;

/*asignacin
p rin tf("

*/

dame e l nombre d e l alumno " ) ;

s c a n f f "%s", &al umno.nombre[ 0 ] ) ;


p rin tf("

di me l a

e d ad " ) ;

s c a n f f "%d", & a l u m n o . e d a d ) ;
p rin tff"

dame e l nombre d e l p r o f e s o r

") ;

s c a n f f " % s \ & p r o f e s o r .nombre);


p r i n t f f " dime l a

e d ad " ) ;
(contina)

www.FreeLibros.me

170

Captulo 7

D atos d e t ip o estructurado

(continuacin)
s c a n f ( " 96 d " , & p r o f e s o r .e d a d ) ;
/* im p r im ir */
c lr s c r f);
p r i n t f f " \n n o m b re \t \t e d a d \n " ) ;
p r i n t f f " % s\ t % d \ n " , alu m n o . n o m b re ,a lu m n o . e d a d ) ;
p r i n t f f " %s\

, p r o f e s o r .n o m bre, p r o f e s o r . e d a d ) ;

getch();
retu rn 0 ;

E n el e je m p lo s e d e c la ra n d o s v a ria b le s, p r o f e s o r y alum no, q u e tie n e n los m is m o s


c am p o s: u n o q u e es el nombre c o m o c a d e n a d e c a ra c te re s y o tro es la e d a d de tip o
e n tero ; s e in ic ia liz a n lo s d a to s, s e s o lic ita n y s e m u e stra n .

Ej e m p l o 7.2 M o stra r el nom bre y la estatura de un alum no


(manejo de una estructura com o variable global)
t t in c lu d e < s t d i o . h >
H i e lu d e < c o n io .h >
s t r u c t agenda

{
c h a r n om bre[ 3 0 ] ;
flo at e s t a t u r a ;

};
m a in ( )

{
s t r u c t agenda

alu m n o ;

c lr s c r f );
/* i n i c i a l i z a r

*/

alu m n o . n om bre[ 0 ) = ' 0 ' ;


alu m n o . e s t a t u r a = 0 ;
/* a s ig n a c i n */

www.FreeLibros.me

7.1 Estructura

p rin tf("

dame e l nombre d e l alumno " ) ;

s c a n f ( " % s \ &al umno.nombre[ 0 ] ) ;


p rin tff"

dime l a

estatura

");

s c a n f ( "%f", & a l u m n o . e s t a t u r a ) ;

/* i m p r i m i r

*/

c l r s c r ( );
p r i n t f f " \ n n o m b r e \ t \ t \ n " );
p r i n t f f " %s \ t96. 2 f \ n ' , alumno, no mb re, a lu m n o . e s t a t u r a ) ;
g e t c h f );
return 0 ;

E n e s te e je m p lo s e d e c la ra la e s tru c tu ra fu e ra d e la fu n c i n ; el m a n e jo es sim ila r


al e je m p lo a n te rio r, a u n q u e e n e s te c a s o el p rim e r c a m p o d e la e s tru c tu ra ,

nombre>

es u n a c a d e n a d e c a ra c te re s y e s t a t u r a es u n v a lo r d e tip o re a l. S e in ic ia liz a , se
a sig n a n v a lo re s y s e m u e s tra n .
Ej e m p l o 7.3 Solicitar y m ostrar el nom bre y tres calificaciones para
cada alumno; pueden incluirse hasta 10 alum nos
(arreglo de estructuras)
tiinclude

<stdio.h >

Uinclude

<c o ni o. h >

define MAX 10

mainf)

{
struct

{
c h a r no mb re[ 3 0 ] ;
in t

c a l i f i c a c i n [3 ] ;

}alumno[MAX];

c l r s c r f );
in t i,j,n ;

/* i n i c i a l i z a r

*/

(c o n tin a )

www.FreeLibros.me

172

Captulo 7

D atos d e t ip o estructurado

[continuacin)
f o r ( i =0; i <MAX; i ++)
{ a lu m n o [ i] .n o m b r e [0 ] =' \0 ' ;
for

(j=0;j<3;j++)
alumno [ i ] . c a l i f i c a c i n [ j ]=0 ;

}
/* a g r e g a r e l e m e n t o s */
i= 0 ;
p r i n t f ( u \n c u a n t o s e l e m e n t o s s e i n s e r t a r a n

\t");

scanf(*%d",&n);
while(i<n)

{
p rin tff"

\ndame e l nombre %c/ " , i + 1) ;

s c a n f ( "%s" , & a l u m n o [ i ] . no mb re [ 0 ] ) ;
for

(j=0;j<3;j++)

{
p rin tf("

dame l a

c a l i f i c a c i n %c/ " , j + 1 ) ;

s c a n f ( ,>96du, & a l u m n o [ i ] . c a l i f i c a c i n [ j ] ) ;

}
i ++;
}
/* i m p r i m i r

*/

p r i n t f f \ n \ t n o m b r e \ t \ t c a l i f i c a c i n

1 \t c a l i f i c a c i o n

2 \ t c a l i f i c a c i o n 3 \ n \ n " );
f o r ( i = 0 ; i < n; i + + )

{
p rin tff"\t

%s " , alumno [ i ] . n o m b r e ) ;

f o r f j =0; j <3;j ++)

{
p r i n t f f " \ t 96l 0 d " , alumno [ i ]. c a l i f i c a c i n [ j ] ) ;

}
p r i n t f ( " \ n " );

}
getchf);
return 0 ;

www.FreeLibros.me

7.1 Estructura

L a e s tru c tu ra c o n s ta d e d o s c a m p o s: nombre d e tip o c a d e n a d e c a ra c te re s y


un a rre g lo d e tre s e n te ro s p a ra a lm a c e n a r e n c a l i f i c a c i o n e s , la s c a lific a c io n e s
re sp e c tiv a s; to d o s e r a lm a c e n a d o e n u n a rre g lo alumnos d e 10 e le m e n to s. C a d a
p o sic i n d e l a rre g lo a lu m n o s a lm a c e n a u n a e stru c tu ra .
El a c c e s o a la v a ria b le s e lle v a a c a b o c o lo c a n d o el n o m b re d e la m is m a , la
p o sic i n y a c o n tin u a c i n el n o m b re d e l c a m p o d e la e s tru c tu ra a usar.
E n el e je m p lo s e o m iti el n o m b re d e la e s tru c tu ra , q u e p a ra e sto s e je m p lo s es
o p c io n a l; e n o tras p a la b ra s , n o a fe c ta si s e o m ite c u a n d o la d e c la ra c i n d e las
v ariab les s e re a liz a in m e d ia ta m e n te d e sp u s.

Estructuras anidadas
E l c a m p o d e u n a e s tru c tu ra p u e d e , a su v e z , se r o tra e s tr u c tu ra q u e y a h a y a sid o
d efin id a.
s t r u c t nombre_com
{
char nombre[30];
char a p e l l i d o p a t [ 1 5 ] ;
char a p e l l i d o m a t [ 1 5 ] ;
};
s t r u c t agenda
{
s t r u c t nombre_com nombrec;
in t

c a l i f i c a c i n [3] ;

float e s t a t u r a ;
} alumno [ MAX] ;
L a p rim e ra e s tru c tu ra nombre_com c o n s ta d e tres e le m e n to s tip o c a d e n a
d e c a ra c te re s y e s t c o n te n id a e n la e s tru c tu ra agenda, q u e a d e m s de
nombre_com, tie n e lo s c a m p o s c a l i f i c a c i o n e s , q u e es u n a rre g lo d e e n te ro s y
e s t a t u r a , d e tip o real.
P ara a s ig n a r v a lo re s e n la e s tru c tu ra a n id a d a s e p ro c e d e d e la s ig u ie n te m an e ra:
alumno[ 0 ] .nombrec.nombre = "Juan";
alumno[ 0 ] . n o m b r e c . a p e l l i d o p a t = " P e r e z ;

www.FreeLibros.me

173

174

Captulo 7

D atos d e t ip o estructurado

alumno[ 0 ] . n omb rec . a p e l l i d o m a t = " G a r c a " ;


alumno[ 0 ] . e d a d =15;
alumno[ 0 ] . e s t a t u r a = 1 .85;

o b ie n , si s e d e s e a in g re s a r lo s d a to s p o r te c la d o :
s c a n f ( "%s", & a l u m n o [ 0 ] . n o m b r e c . n o m b r e ) ;
s c a n f ( "%s", & a l u m n o [ 0 ] . nombrec. a p e l l i d o p a t ) ;
s e a n f ( U96 s " , & a l u m n o [ 0 ] . n o m b r e c . a p e l l i d o m a t ) ;
s c a n f f "%" , & a l u m n o [ 0 ] . e d a d ) ;
s c a n f ( U96f " , & a l u m n o [ 0 ] . e s t a t u r a ) ;

p a ra im p rim ir lo s d a to s led o s:
p r i n t f f "%s", a lu m n o [ 0 ] . n o mb r e _ c . n o m b r e ) ;
p rin tf

, a l u m n o [ 0 ] . n o mb r e _ c . a p e l l i d o p a t ) ;

p r i n t f f 11%s", a lu m n o [ 0 ] . n o mb r e _ c . a p e l l i d o m a t ) ;
p r i n t f ( "%", a lu m n o [ 0 ] . e d a d ) ;
p rin tf(

2 f " , a lu m n o [ 0 ] . e s t a t u r a ) ;

Ej e m p l o 7.4 M o stra r nom bre, tres calificaciones y estatura para un alumno;


el nom bre est separado por nom bre, apellido paterno
y apellido m aterno
include

<stdio.h >

tinclude

<c o ni o. h >

mai n( )

{
in t j;
s t r u c t nombre_com

{
c h a r no mb re[ 3 0 ] ;
c h a r a p e l l i d o p a t [15];
c h a r a p e l l i d o m a t [15];

};
s t r u c t agenda

www.FreeLibros.me

7.1 Estructura

175

s t r u c t nombre_com nombrec;
in t

c a l i f i c a c i n [3];

float e s t a t u r a ;
}alumno;

/* i n i c i a l i z a r

*/

a l u m n o . n o m b r e c . n omb re[ 0 ]= ' \ 0 ' ;


a l u m n o . n o m b r e c . a p e l l i d o p a t [ 0 / = ' \ 0 ';
a l u m n o . n o m b r e c . a p e l l i d o m a t [ 0 ] = ' \ 0 ';
for

(j=*;j<3;j++)
alum no. c a l i f i c a c i n [j

7 =0 ;

a l u m n o . e s t at u r a= ( d;

/* a g r e g a r un e l e m e n t o */
p r i n t f ( u \ndame e l nombre

") ;

s c a n f ( " % s \ &alumno.nombrec.nombre);
p r i n t f f " \n a p e llid o paterno

");

s c a n f ( "%s", & a l u m n o . n o m b r e c . a p e l l i d o p a t ) ;
p rin tff"

\ n a p e l l i d o materno

");

s c a n f ( " 96s",&alumno. nombrec . a p e l l i d o m a t ) ;


for

(j=0;j<3;j++)

{
p rin tf("

dame l a

c a l i f i c a c i n %c/ , j + 1 ) ;

s c a n f f "%c/", &a lu mn o . c a l i f i c a c i n [ j J ) ;

}
p r i n t f f " dame l a

e s ta tu r a " );

s c a n f f "%f , & a l u m n o . e s t a t u r a ) ;

/* i m p r i m i r

*/

p r i n t f f " \n nom bre\t\tcalificacion

1 \t ca lificacin

2 \tcalifica cion

3 \ t e s t a t u r a \ n \ n " );
p r i n t f f " %s ", al um no .n o mb r ec .n o mb re ) ;
p r i n t f f " %s ", a l u m n o . n o m b r e c . a p e l l i d o p a t ) ;
p r i n t f f " %s ", a l u m n o . n o m b r e c . a p e l l i d o m a t ) ;
f o r f j =0;j <3;j ++)

{
p r i n t f f " M ^ d " , a lu m n o . c a l i f i c a c i n [ j ] ) ;

}
(c o n tin a )

www.FreeLibros.me

176

Captulo 7

D atos d e t ip o estructurado

(continuacin)
p r i n t f ( " \ 2f " , alum no.estatura);
getch();
return

0;

E n el e je m p lo s e m a n e ja u n a e s tru c tu ra

nombre_com

co n tre s c a m p o s d e c a d e n a de

c a rac tere s: n o m b re y a p e llid o s. A c o n tin u a c i n , la e s tru c tu ra agenda c u e n ta co n


tres c a m p o s: u n o d e tip o s t r u c t nombre_com, o tro es u n a rre g lo d e e n te ro s p a ra
las c a lific a c io n e s y o tro d e tip o re a l p a ra la e sta tu ra . A l fin a liz a r la e s tru c tu ra se
d e c la r u n a v a ria b le a lu m n o .
Se in ic ia liz a n lo s c a m p o s, s e s o lic ita n d a to s y s e m u e s tra n ; s e g n el d a to q u e se
m o d ifica s e in d ic a la tra y e c to ria : s e in ic ia c o n la v a ria b le , s ig u e el n o m b re del
c a m p o d e la e s tru c tu ra y d e sp u s el n o m b re d e l c a m p o c o n te n id o . E l re s to
de lo s c a m p o s s e m a n ip u la d e fo rm a sim ila r.

Uso de typedef (definir el nombre de un tipo de dato)


L a p a la b ra

typedef

p e rm ite a s ig n a r u n id e n tific a d o r a u n tip o d e d a to p rim itiv o

(s in n im o ) o d e u n d a to e stru c tu ra d o ; el n o m b re sirv e p a ra d e c la ra r v a ria b le s de


e se tip o . E s te m a n e jo es p r c tic o c u a n d o s e u sa n e s tru c tu ra s , y a q u e e n c u a lq u ie r
p a rte d e l p ro g ra m a s e p o d r n d e c la ra r v a ria b le s d e l tip o d e la e s tru c tu ra ; a d em s
fa c ilita la p o rta b ilid a d , y a q u e si c a m b ia el tip o d e d a to s e r n e c e s a rio m o d ific a r
s lo lo s tip o s d e c la ra d o s.
L a d e fin ic i n d e b e e s ta r d e c la ra d a a n te s d e s e r u sa d a fu e ra d e la s fu n c io n e s. L a
sin ta x is es:
typedef tip o

de d a t o i d e n t i f i c a d o r ;

p o r e je m p lo :
typedef i n t Entero;

d e c la ra r u n a v a ria b le d e tip o

in t

a h o ra s e lla m a ta m b i n

E n t e r o Num;

p a ra u n a e s tru c tu ra
typedef s tru c t{
i n t numero;

www.FreeLibros.me

Entero:

7.1 Estructura

177

E n t e r o n;
}Tipo;
Tipo

nmeros;

Es b u e n a p r c tic a in ic ia r el id e n tific a d o r c o n u n a le tra m a y s c u la p a ra in d ic a r


q u e s e tra ta d e u n s in n im o d e u n tip o d e dato .

Ej e m p l o 7.5 Usar un nuevo tip o de dato, alm acenar en una estructura


un dato de tip o i n t y otro de tipo f l o a t ; m ostrar en pantalla
Hiel u d e

<stdio.h >

ttinclude

<c o ni o. h >

typedef i n t Entero;

typedef s tru c t{
f loat numReal;
E n t e r o n;
}Tipo;

mai n( )

{
E n t e r o a;
T i p o b;
c l r s c r f );
a=1 0 ;
b.n=1;
b. numReal =1 .10;
p rin tff"

%c/ %c/ %f",

a,b.n,b.num Real);

g e t c h f );
return 0 ;

C o m o s e p u e d e ver, s e d e c la ra u n n u e v o tip o
un n u e v o tip o lla m a d o
tip o E n t e r o .

Tipo

in t

lla m a d o

Entero,

q u e c o n tie n e u n n m e ro d e tip o

www.FreeLibros.me

float

y a c o n tin u a c i n
y u n n m e ro de

178

Captulo 7

D atos d e t ip o estructurado

E n el p ro g ra m a p rin c ip a l s e d e c la ra la v a ria b le
S e le a s ig n a v a lo r y s e m u e stra n .

d e tip o

Entero

y la d e tip o

Ejercicios resueltos
E je r c ic io 7.1 (Versin 1) Alm acenar en una estructura el nombre
y los apellidos de una persona, y crear otra estructura
que contenga el nom bre, adems de tres calificaciones;
alm acenar esto en un arreglo, inicializarlo, agregar datos
y mostrarlos, usando un tip o de dato definido p o r el usuario

Descripcin
D efin ir lo s n u e v o s tip o s d e d a to s y las e stru c tu ra s .
In ic ia liz a r lo s e le m e n to s.
In g re s a r d ato s.
M o stra rlo s.
Variabl es
Nombre

Tipo

Uso

i,,n

Entero

n d ic e s para re c o rre r e l

l A lu mn o [MA X]

Estructura

A r r e g l o de d a t o s t i p o

Nombre_com

Estructura

E s t r u c t u r a p a r a e l nombre c o m p l e t o .

Alumno

Estructura

E s t r u c t u r a co n t o d o s l o s

Codificacin
/* us o de t y p e d e f ( t i p o de d a t o de v a r i a b l e )

H include

<stdio.h >

tinclude

<c o ni o. h >

Udefine MAX 10

typedef s t r u c t

{
c h a r no mb re[ 3 0 ] ;
char a p e llid o p a t[ 1 5 ] ;

www.FreeLibros.me

*/

arreg lo.

estructura.

datos.

Tipo.

7.1 Estructura

179

c h a r a p e l l i d o m a t [15];
}Nombre_com;

typedef

struct

{
Nombre_com nombrec;
in t

c a l i f i c a c i n [3];

float e s t a t u r a ;
}Al umno;

mai n( )

{
in t i,j,n ;
Al umno l A l u m n o [ M A X ] ;

/* i n i c i a l i z a r

*/

for(i=0;i< MAX;i+ +)

{
1 A 1 u m n o [ i ] . n o m b r e c . n omb re/ 0 ] = 1\ 0 ';
lA lu m n o [i] .nom brec.ap ellid opat[0 ]= '\ 0 ';
l A l u m n o [ i ] . nombrec. a p e l l i d o m a t [ 0 / = '\ 0 ' ;
for

( j =0 ;j <3 ;j ++ )
l A l u m n o [ i ] . c a l i f i c a c i n [ j ]=0;
l A l u m n o [ i ] . estatura=0;

}
/* a g r e g a r e l e m e n t o s */
i= 0 ;

p r i n t f f " \n C u a n t o s e l e m e n t o s s e i n s e r t a r a n

\ t u) ;

s c a n f ( " 96d"J & n ) ;


while(i<n)

{
p r i n t f f " \ndame e l nombre %d " , i + 1 ) ;
s c a n f ( U96Sn, &1Alumno [ i ] . n omb rec . nombre) ;
p r i n t f ( " \ n a p e l l i d o p a t e r n o %c/ , i + 1 ) ;
s c a n f ( ' ,96Su, & l A l u m n o [ i ] . n o m b r e c . a p e l l i d o p a t ) ;
p r i n t f ( " \ n a p e l l i d o mat er no %c/ , i + 1 ) ;
s c a n f ( B96 s " , & l A l u m n o [ i ] . n omb rec . a p e l l i d o m a t ) ;

(c o n tin a )

www.FreeLibros.me

180

Captulo 7

D atos d e t ip o estructurado

(continuacin)
fo r ( j= * ;j< 3 ;j+ + )

{
p r i n t f (" dame l a

c a l i f i c a c i n %c/ " , j + 1 ) ;

s c a n f ( 096dn, & l A l u m n o [ i ] . c a l i f i c a c i n [ j J ) ;

}
p r i n t f ( dame l a

e s t a t u r a " );

s c a n f ( "%f" , & l A l u m n o [ i ] . e s t a t u r a ) ;

i++;

}
/* im p r im ir */
p r i n t f (" \ n n o m b r e \ t \ t c a l i f i c a c i n 1 \ t c a l i f i c a c i o n 2 \ t
c a lific a c i n 3 \t e s t a t u r a \n \n " ) ;
f o r ( i= 0;i< n ;i+ + )

{
p r i n t f (" %s " , l A l u m n o [ i ] . n o m b r e c . n o m b r e ) ;
p r i n t f (" %s " , l A l u m n o [ i ] . n o m b r e c . a p e l l i d o p a t ) ;
p r i n t f (" %s " , l A l u m n o [ i ] . n o m b r e c . a p e l l i d o m a t ) ;
f o r ( j =0; j <3 ; j + +)

{
p r i n t f (" \t*68d",lA lum no[i] . c a l i f i c a c i n [j ]);

}
p r i n t f ( " \ t% . 2 f " , l A l u m n o [ i ] . e s t a t u r a ) ;
p r in t f( " \n " ) ;

}
getch();
retu rn 0 ;

Explicacin
S e d e fin e el Struct Nombre_com , q u e c o n tie n e lo s c a m p o s: nombre , a p e l l i d o p a t ,
a p e l l i d o m a t d e tip o c a r c te r. A c o n tin u a c i n s e d e fin e el s t r u c t Alum no q u e
c o n tie n e e n u n c a m p o el s t r u c nombre_com (y a d e fin id o ) a d e m s d e lo s c am p o s
c a l i f i c a c i n , q u e es u n a rre g lo d e tre s e le m e n to s, y e s t a t u r a , q u e es d e tip o real.

A l final e s t la v a ria b le a lu m n o , u n a rre g lo d e e sto s s t r u c t s .


El p rim e r p a so fu e in ic ia liz a r to d o s los e le m e n to s d e l a rre g lo a lu m n o , c o n e l fin d e
ln e a o c o n 0, se g n c o rre s p o n d a a u n a c a d e n a d e c a ra c te re s o a u n n m ero .

www.FreeLibros.me

7.1 Estructura

A c o n tin u a c i n s e p re g u n ta c u n to s e le m e n to s s e a lm a c e n a r n e n el a rre g lo y el
n m e ro s e a lm a c e n a e n n ; s e p id e n lo s d a to s y fin a lm e n te s e m u e s tra n e n p a n ta lla .

Ejecucin
Cuant os e l e m e n t o s se i n s e r t a r a n
dame e l nombre 1

Juan

a p e llid o paterno

a p e l l i d o mat er no

1 Lpez

Perez

dame

l a calificacin

1 99

dame

l a calificacin

2 78

dame l a
dame l a

calificacin 3
estatura

dame e l nombre 2

86

1.79

Lu is

a p e llid o paterno 2

Ibarra

a p e l l i d o mat er no 2 Gmez
dame

l a calificacin

1 85

dame

l a calificacin

2 97

dame l a
dame l a

calificacin 3
estatura

2 1.59

nombre

ca lificacin

calificacin

Juan p e r e z

68

calificacin

estatura

lop ez

86

99

78

1.79

Luis Ibarra

Gmez

68

85

97

1.59

E je r c ic io 7.2 (Versin 2) A lm acenar en una estructura el nom bre y los


apellidos de una persona, y crear otra estructura que contenga
el nom bre, adems de tres calificaciones; alm acenar esto en
un arreglo. Inicializar el arreglo, agregar datos y mostrarlos,
usando un tipo definido por el usuario. (Solucin usando
funciones y apuntadores)
/* e s t r u c t u r a s a n i d a d a s usando a p u n t a d o r e s
ttinclude

<stdio.h >

include

<c o ni o. h >

include

< s t d l i b . h>

*/

(c o n tin a )

www.FreeLibros.me

182

Captulo 7

D atos d e t ip o estructurado

[continuacin)
s t r u c t t_nombr e{
c h a r nom[ 1 0 J;
c h a r apem[ 1 0 J;
c h a r a p e p [ 1 0 J;

};
s t ru c t t_datos{
s t r u c t t _nombr e nombrec;
in t

edad;

};
void leerN om bre(struct t_datos

*nn);

void im prim irN om brefstruct t_datos

*nn);

mai n( )

{
s t r u c t t_datos n[3];
c lrs c r();

leerNombre(&n[0J);
imprimirNombref&n[ 0 ] ) ;
getchf);

}
void leerN om bre(struct t_datos

*nn)

{
p r i n t t f " \n nombre " );
s c a n t ( n %s", nn->nombrec. nom);
p r i n t f f " \n a p e l l mat n) ;
s c a n t ( %s",nn->nombrec.apem);
p r i n t f f " \n ape p a t ");
s c a n t (" %s", nn->nombrec. a p e p ) ;
p r i n t f f " \n edad ");
s c a n t ( u %d",&nn->edad);
getchf);
}

www.FreeLibros.me

7.1 Estructura

void im p rim irN o m b re (stru ct t_ datos

183

*nn)

{
p rin tff"

nombre: %s", nn- >nombrec. nom);

p rin tff"

ap p a t e r n o : %s", n n - > n o m b r e c . a p e p ) ;

p rin tf("

ap m a t e r n o : %s", nn- >nombrec. apem);

p r l n t f ( u edad: %c/" , n n - > e d a d ) ;

E je r c ic io 7.3 (Versin 3) A lm acenar en una estructura el nom bre y los


apellidos de una persona, y crear otra estructura que contenga
el nom bre, adem s de tres calificaciones; alm acenar esto en
un arreglo. Inicializar el arreglo, agregar datos y mostrarlos.
(Solucin usando un tipo de dato definido por el usuario)
/* manej o de e s t r u c t u r a s a n i d a d o s c on a r r e g l o s

*/

H i n d de < s t d i o . h >
H include

<c o ni o. h >

Hdefine MAX 10

typedef s t r u c t {
c h a r nombre[ 2 0 ];
char a p e llp [ 10J ;
char apellm [10] ;
}nomc;

typedef s t r u c t

{
nomc nom;
c h a r d i r e c c i o n [ 1 5 ] , t e l [ 1 0 ];
}persona;

typedef s t r u c t

{
persona pers;
i n t n;
} registrop;

(c o n tin a )

www.FreeLibros.me

184

Captulo 7

D atos d e t ip o estructurado

(c o n tin u a c i n )
mai n( )

{
r e g i s t r o p d a t o s [ M A X ];
in t i;
c lrs c rf);
p rin tf("\n

d a t o s de alumn os

\ n ");

p r i n t f ( m c u a n t o s alumn os s e i n g r e s a n

");

s c a n f ( " % d u, 8, d a t o s [ 0 ] . n ) ;
fflush(stdin) ;
for

( i = 0 ; i < d a t o s [ 0 J . n; i ++ )

{
p r i n t f ( " \n dame e l nombre

");

g e t s ( d a t o s [ i ] . p e r s . nom. nombre) ;
p rin tf("\n

dame e l

a p e llid o paterno

");

g e t s ( d a t o s [ i].p e rs .nom .apellp);


p rin tf("\n

dame e l

a p e l l i d o materno

");

g e t s ( d a t o s [ i ]. p e r s . n o m . a p e l l m ) ;
p r i n t f ( " \n dame l a

d ireccin

");

g ets(d a to s[i] .p e rs.d ire cci n );


p rin tf("\n

dame e l

telfon o

*);

g e t s ( d a t o s [ i ] . p e r s . t e l );

}
/* m o s t r a r

*/

c l r s c r f );
p r i n t f ( " \ t nombre\t a p e l l i d o s
for

\ t d i r e c c i o n \ t \ t t e l e f o n o \ n u) ;

(i=0 ; i < d a t o s [ 0 J.n;i++)

{
p r i n t f ( " \ t %s \ t 11, d a t o s [ i ] . p e r s . nom. n o m b r e ) ;
p r i n t f ( " \ t *6S\t , d a t o s [ i ] . p e r s .nom. a p e l l p ) ;
p r i n t f ( n \ t 9 s \ t " , d a t o s [ i J . p e r s . nom. a p e l l m ) ;
p r i n t f ( "% s\t", d a t o s [ i ] . p e r s . d i r e c c i n ) ;
p r i n t f ( U96 S \ n \ n u , d a t o s [ i ] . p e r s . t e l ) ;

}
getchf);
return 0 ;

www.FreeLibros.me

7.2 Apuntadores

185

7.2 A puntadores
U n a p u n ta d o r es u n a v a ria b le q u e c o n tie n e u n a d ire c c i n d e m e m o ria c o m o v a lo r
a lm a c e n a d o . E s d e cir, el a p u n ta d o r a lm a c e n a la d ire c c i n d e u n a v a ria b le , y esa
v a ria b le c o n tie n e u n valor.
E l a p u n ta d o r d e b e d e c la ra rs e in d ic a n d o el tip o d e d a to al q u e a p u n ta e
in ic ia liz a rs e a n te s d e s e r u tiliz a d o .
L o s o p e ra d o re s d e u n a p u n ta d o r s o n & y \ E l s m b o lo & es u n o p e ra d o r u n a rio
y re g re sa la d ire c c i n d e la v a ria b le a p u n ta d a ; el o p e ra d o r * d e in d ire c c i n
o d e re fe re n c ia d e v u e lv e el v a lo r c o n te n id o e n la v a ria b le a p u n ta d a.
El le n g u a je C u s a lo s a p u n ta d o re s e n la m a n ip u la c i n d e d a to s sim p le s,
arre g lo s, e stru c tu ra s y fu n c io n e s; e n e s te p u n to s e e x p lic a n los d a to s sim p le s
y la a ritm tic a .
Al m o m e n to d e s e r d e c la ra d o , al a p u n ta d o r s e le in d ic a el tip o d e l d a to al q u e
a p u n ta . E l a p u n ta d o r es u n tip o d e d a to sim p le q u e s ie m p re s e a s o c ia a o tro tip o
q u e p u e d e se r s im p le o e stru c tu ra d o . P o r e je m p lo , a p u n ta r a

fioat,

a p u n ta r a

e stru c tu ra , a p u n ta r u n tip o d e fin id o p o r el u su a rio , e tc te ra .


L a d e c la ra c i n es sim ila r a la d e c u a lq u ie r v a ria b le , s lo q u e s e a n te p o n e un
a ste risc o a n te s d e l id e n tific a d o r.
<Tipo d a t o > * < i d e n t i f i c a d o r > ;

D o n d e T ip o d a t o , es el tip o d e d a to , q u e p u e d e s e r s im p le o e stru c tu ra d o ;
* (a ste risc o ) in d ic a q u e la v a ria b le a lm a c e n a u n a d ire c c i n d e m e m o ria ;
i d en t i fi c a d o r es el n o m b re a s ig n a d o a la v a ria b le .
in t

*apint;

float *apfloat;

A h o ra s e d e c la ra u n a v a ria b le d e tip o
in t

fioat

y o tra tip o

in t:

d a to l;

f loat d a t o 2 ;

P ara a s ig n a r la s d ire c c io n e s d e las v a ria b le s a lo s a p u n ta d o re s:


apint=&dato1 ;
apf loat =&dat o 2 ;

www.FreeLibros.me

186

Captulo 7

D atos d e t ip o estructurado

E n to n c e s a p i n t a lm a c e n a la d ire c c i n d e d a t o i y apfioat a lm a c e n a la d ire c c i n


d o n d e s e e n c u e n tra a lm a c e n a d a la v a ria b le d a t o 2 . P a ra m o d ific a r el v a lo r d e d a to i
y d a to 2 , m e d ia n te lo s a p u n ta d o re s
*a p i n t =3;
*apfioat = 3 . 2 ;
A h o ra d a t o i a lm a c e n a el v a lo r 3, y d a t o 2 a lm a c e n a 3.2 . E s im p o rta n te a s ig n a r a
los a p u n ta d o re s la d ire c c i n d e la s v a ria b le s a n te s d e h a c e r o p e ra c io n e s.
V eam os u n e je m p lo .
Ej e m p l o 7.6 D efinir dos variables y dos apuntadores a esas variables;
asignar valores a las variables usando los apuntadores
/*

1.

manejo de a p untadores

septiembre

2010

*/

Itin e l u d e <stdio.h>
Uinclude <conio.h>
main()
{
I* d e c l a r a c i n de v a r i a b l e s y apuntador a e s e t i p o de v a r i a b l e */
i n t datol;
i n t * a p i n t;
float d a t o 2 ;
float *apfloat;
p r i n t f ( " \ n Manejo de ap u ntadores

1 \n");

c lr s c r f);
/* Asignando l a d i r e c c i n a l o s a p u n t a d o r e s */
a p i n t = &dato 1 ;
apfioat = &dato 2 ;
/* Asignando v a l o r e s a l a s v a r i a b l e s */
* a p i n t = 3;
*apfioat =

3 .2;

www.FreeLibros.me

7.2 A p u n t a d o r e s

p r i n t f ( \rt d a t o l %c/

d i r e c c i n d a to

%c/ c o n t e n i d o apuntador %c/

, d a t o l , & d a t o 1 , a p i n t ) ;
p r i n t f ( " \ n d a t o 2 %. 2 f

d i r e c c i n dato

%c/ c o n t e n i d o apuntador %c/

", d a t o 2 ,&dato 2 , apfloat);


/ * modificando l a s v a r i a b l e s */
* a p i n t = 45;
*apfloat = 5 1 . 3 ;
p r i n t f ( " \ n d a t o l %c/

d i r e c c i n d a to

%c/ c o n t e n i d o apuntador %c/

", d a t o l , & d a t o 1 , a p i n t ) ;
p r i n t f ( " \ n d a t o 2 %.2 f d i r e c c i n dato
%c/ ", d a to 2 ,&dato 2 , apfloat);

%c/ c o n t e n i d o apuntador

getch();
return 0 ;
>

E n e ste e je m p lo s e a s ig n a n los v a lo re s y s e m u e s tra el c o n te n id o d e la s v a ria b le s y


su d ire c c i n , a d em s d e l c o n te n id o d e los a p u n ta d o re s , d a t o i q u e d a c o n el v alo r
d e 3 y dato 2 co n el v alo r de 3.2. E n la se g u n d a im p re si n , s e o b se rv a q u e el v alo r de
tos d ato s s e m o d ific : m e d ia n te la m a n ip u la c i n d e l a p u n ta d o r, d a t o i tie n e a h o ra
un v a lo r d e 4 5 y d a t o 2 u n v a lo r d e 5 1 .3 (la d ire c c i n d e las v a ria b le s s e m a n tie n e ).
Es p o s ib le re a liz a r o p e ra c io n e s a ritm tic a s u sa n d o a p u n ta d o re s , c o m o o b te n e r el
re s id u o d e d iv id ir e n tre 2 el d a t o i , y a la v a ria b le d a to 2 s u m a rle 10.
* a p t i n t = 3;
*apfloat = 3 . 2 ;
*a p i n t = *a p i n t % 2 ;
*apfloat = *apfloat+1 0 ;
C o n e sto , d a t o i a lm a c e n a u n 1 q u e es el re s id u o y d a t o 2 a lm a c e n a 13.2. E s
im p o rta n te o b s e rv a r q u e u n a p u n ta d o r es u n a d ire c c i n e n m e m o ria y es u n v a lo r
e n te ro , p e ro u n a p u n ta d o r n o es u n e n te ro .
P a ra o p e ra c io n e s d e in c re m e n to o d e c re m e n to s e p u e d e p ro c e d e r as:
*a p i n t = ++(*apint) ;
*apfloat = - - ( a p f l o a t ) ;

www.FreeLibros.me

188

Captulo 7

D atos d e t ip o estructurado

R e s u lta n d o e n d a t o i el v a lo r 2 y e n d a to 2 el v a lo r 12.2.
Ej e m p l o 7.7 Realizar operaciones aritm ticas con apuntadores y mostrar
el resultado. La primera variable inicializa con el valor de 3,
luego se obtiene el residuo de dividir entre 2 y finalm ente se
incrementa en 1. La segunda variable, de tipo f l o a t , inicia con el
valor 3 .2 , despus se le suma 10 y finalm ente se reduce en uno
/*

. a r i t m t i c a de a pu ntadores

*/

Itin e l u d e <stdio.h>
Hielude <conio.h>
main()
{
/* d e c l a r a c i n de v a r i a b l e s y apuntador a e s e t i p o de v a r i a b l e */
i n t datol;
i n t * a p i n t;
float d a t o 2 ;
float *apfloat;
p r i n t f ( " \ n A r i t m t i c a de a p untadores 2 \ n " ) ;
c lr s c r f);
/* Asignando l a d i r e c c i n a l o s a p u n t a d o r e s */
a p i n t = &dato 1 ;
apfloat = &dato 2 ;
/* Asignado v a l o r e s a l a s v a r i a b l e s y a p lic a n d o r e s i d u o y suma*/
* a p i n t = 3;
*apfloat = 3 . 2 ;
p r i n t f ( " \n \n d atol valor i n i c i a l

%c/

p r i n t f ("\n dato2 valor i n i c i a l


* a p i n t = *a p i n t % 2 ;

www.FreeLibros.me

", * a p i n t ) ;
* apfloat);

7.2 Apuntadores

189

*apf loat = *apf loat + 1 0 ;

p rin tf

("\n\n datol

residuo 2

p rin tf

( * \ n d a t o 2 sumado 1 0

%c/
%. 2 f

",
",

*apint) ;
* a pf l oa t );

/* o p e r a d o r de i n c r e m e n t o y d e c r e m e n t o */
*apint

= ++(*apint);

*apf loat = - - ( * a p f l o a t ) ;

p rin tf

("\n \n d a to l incrementado

p rin tf

( " \ n d a t o 2 de cr em en ta do

%c/
%. 2 f

",

*apint);

",

*apfoat) ;

getch();
return 0 ;

El re s u lta d o d e e s te e je m p lo s e v e as:
datol

valor i n i c i a l

dat o2

valor i n i c i a l

3.2

datol

residuo 2

dat o2

sumando 10

datol

incrementado

dato2

de cr em en ta do

13.20

2
12.20

L o s a p u n ta d o re s a d a to s d e tip o e s tru c tu ra s e m a n ip u la n f c ilm e n te , y a q u e se


s u s titu y e el o p e ra d o r p u n to p o r el d e flech a.
L a o p e ra c i n (* a p in t)= 1 0 ; es s im ila r a a p in t-> 1 0 ;

Ej e m p l o 7.8 Leer en una estructura anidada los datos del nom bre com pleto
y la edad, accediendo m ediante un apuntador a estructura
/*

manej o de e s t r u c t u r a s co n a p u n t a d o r e s

tiinclude

<stdio.h >

Uinclude

<c o ni o. h >

*/

(c o n tin a )

www.FreeLibros.me

190

Captulo 7

D atos d e t ip o estructurado

(icontinuacin)
tinclude

< stdlib.h>

m a i n ()

{
s t r u c t t_nombr e{
c h a r nom[ 1 0 ];
c h a r apem[ 1 0 ] ;
c h a r a p e p [ 1 0 J;

};
s t r u c t t_datos{
s t r u c t t _nombr e nombrec;
in t

edad;

};
s tr u c t t_datos

*nn;

s t r u c t t _ d a t o s n;

c lrs c rf);
nn=&n;

p r i n t f ( " \n\n L e e r d a t o s
p rin ttf"

\n");

\n nombre " ) ;

s c a n f ( n %s", n n -> n om br ec . no m) ;
p r i n t f ( n \n a p e l l mat ' ) ;
s c a n t ( " %s", nn- >nombrec. apem);
p rin tff"

\n ape p a t

");

s c a n t (" %s11, nn >nombrec. apep) ;


p r i n t t ( " \n e d ad ") ;
s c a n t ( n %", & n n - > e d a d ) ;
p r i n t f ( " \n\n M o s t r a r d a t o s
p rin tt("

\n");

nombre: %s",n n -> n om br ec . no m) ;

p r i n t t ( u ap p a t e r n o : %s", n n - > n o m b r e c . a p e p ) ;
p rin ttf"

ap m a t e r n o : %s", nn- >nombrec. apem);

p r i n t t ( " edad: %c/" , n n - > e d a d ) ;


getchf);
return

0;

www.FreeLibros.me

Evaluacin

E n e s te e je m p lo s e d e c la ra n la s e stru c tu ra s y d o s v a ria b le s: u n a p a ra la e s tru c tu ra


y u n a p a ra el a p u n ta d o r nn d e l tip o d e la e s tru c tu ra . S e a c c e d e a c a d a m ie m b ro de
la e s tru c tu ra m e d ia n te el a p u n ta d o r nn.

Resum en
L a e s tru c tu ra c o n s is te e n u n c o n ju n to d e v a ria b le s a g ru p a d a s c o n u n n o m b re ; las
v a ria b le s p u e d e n s e r d e l m is m o o d e d ife re n te tip o d e d a to s. G e n e ra lm e n te , lo s
d ato s e st n re la c io n a d o s .
P a ra d e fin ir u n a e s tru c tu ra s e in d ic a la p a la b ra re s e rv a d a s t r u c t y, e n tre lla v e s, los
c am p o s c o n tip o d e d a to e id e n tific a d o r.
Para te n e r a c c e s o a la e s tru c tu ra s e e s c rib e e l n o m b re d e la v a ria b le y e l o p e ra d o r
p u n to (.) se g u id o d e l id e n tific a d o r d e l c a m p o a a c c e d e r p a ra la le c tu ra o e sc ritu ra .
P a ra d e fin ir u n n u e v o tip o d e d a to s e p u e d e u tiliz a r t y p e d e f ; c o n e s to s e a s ig n a un
n o m b re d ife re n te a u n tip o d e d a to . E s ta p r c tic a es c o m n e n la s e stru c tu ra s .
Es p o s ib le d e fin ir u n a e s tru c tu ra q u e c o n te n g a o tra s e stru c tu ra s ; a e s to s e le
lla m a a n id a m ie n to d e e s tru c tu ra s . O tra a p lic a c i n es la d e fin ic i n d e u n a rre g lo
q u e c o n te n g a e n c a d a p o s ic i n u n a e stru c tu ra ; e s to s e c o n o c e c o m o a rre g lo de
e stru c tu ra s.
U n a p u n ta d o r es u n a v a ria b le d e tip o b s ic o q u e a lm a c e n a la d ire c c i n d e
m e m o ria d e u n a v a ria b le ; s e u s a p a ra te n e r a c c e s o a v a ria b le s p o r s u d ire c c i n , y
se a p lic a e n la m a n ip u la c i n d e d a to s sim p le s, a rre g lo s, e s tru c tu ra s y fu n c io n e s.
T ie n e d o s o p e ra d o re s: el & (am persand) y el * (asterisc o ); el p rim e ro d e v u e lv e
la d ire c c i n d e m e m o ria d e u n a v a ria b le y el se g u n d o d e v u e lv e el c o n te n id o
de la v a ria b le a p u n ta d a p o r el a p u n ta d o r.

Evaluacin
I. C onteste las siguientes preguntas.
1. U n a e s tru c tu ra es u n tip o d e d a t o ____________________
2 . U na e stru c tu ra c o n siste e n u n c o n ju n to d e v ariab les c o n el m is m o tip o
de datos.
S (

No (

www.FreeLibros.me

191

192

Captulo 7

D atos d e t ip o estructurado

3 . U n a e s tru c tu ra c o n s is te e n u n c o n ju n to d e v a ria b le s q u e p u e d e n s e r d e
d ife re n te tip o d e dato .
S (

No (

4. P u e d e u n a e s tru c tu ra c o n te n e r o tra ?
S (

No (

5 . E l o p e ra d o r p u n to (.) s irv e p a ra te n e r a c c e s o a ___________________ de


la e stru c tu ra .
6 . L a p a la b ra t y p e d e f p e rm ite d e fin ir u n n u e v o tip o d e d ato .
S (

No (

7 . T ie n e el a p u n ta d o r u n tip o d e d a to ?
S (

No (

8 . E s p o s ib le h a c e r o p e ra c io n e s a ritm tic a s u sa n d o a p u n ta d o re s ?
S (

No (

9 . C u a n d o el o p e ra d o r & a n te c e d e a u n a v a ria b le , e n to n c e s d e v u e lv e la
___________________ d e la v a ria b le .
10. C u a n d o el o p e ra d o r * a n te c e d e u n a v a ria b le , e n to n c e s s e tie n e a c c e so
al c o n te n id o d e ____________________ a p u n ta d a.

II. M uestre el resultado del siguiente ejercicio.


D e fin ir u n a e s tru c tu ra c o n d a to s d e u n p a c ie n te : n o m b re , fe c h a in g re so ,
fe c h a sa lid a , y o tra e s tru c tu ra q u e c o n te n g a la e s tru c tu ra d e l p a c ie n te ,
a d e m s d e s u e s ta d o d e sa lu d . P e rm itir a lm a c e n a r d a to s, b u s c a r u n p a c ie n te
y o rd e n a r lo s p a c ie n te s p o r fe c h a d e in g re so .

Ejercicios propuestos
I. Realice un p ro g ram a que efecte lo siguiente.
1. D e fin a el m u n d o c o n c in c o c o n tin e n te s > c o m p u e sto s p o r p a s e s q u e,
a su v e z, c o n tie n e n c iu d a d e s; la s c iu d a d e s , fin a lm e n te , a lb e rg a n
p u e b lo s.

www.FreeLibros.me

Ejercicios p ro p u e s to s

2 . H a g a la s d e fin ic io n e s n e c e sa ria s y la d e c la ra c i n d e la v a ria b le del


m u n d o . S u p o n g a q u e d e c a d a c o n tin e n te , p a s, c iu d a d y p u e b lo s e c o n o c e
el n o m b re y el n m e ro d e h a b ita n te s.
3 . M u e stre la s p o b la c io n e s d e u n c o n tin e n te .

4. O b te n g a el to ta l d e h a b ita n te s d e u n o d e lo s c o n tin e n te s.
5 . M u e stre el p ro m e d io d e la e d a d d e lo s h a b ita n te s p o r p o b la c i n , p a s y
c o n tin e n te .
6 . M u e stre to d a la in fo rm a c i n p o r c o n tin e n te , p a s y p o b la c i n .

D escriba qu realiza el siguiente program a.


H i n d de < s t d i o . h >
H include

< stdlib.h>

H include

<c o ni o. h >

H include

< s t r i n g . h>

s tru c t Pizza{
in t

tam;

float p r e c i o ;
c h a r i n g [ 3 ] [15];

};
mai n( )

{
s t r u c t P i z z a p e d i d o s [10];
i n t in d ice= 0,o p c ,c o n t,i;
do{
do{
c l r s c r f );
p r i n t f f "**************** PIZZAS
p r i n t f ("1.
hacer?:

*************\n \ n \ n \ n " ) ;

H a c e r p e d i d o \ n 2 . m o s t r a r \ n 3 . S a l i r \ n \ n Q u e desea
");

scanf("%d",&opc);
} w h i l e ( o p c ! =1 && o p c ! =2&&opc!=3);

//************

escoger

TAMAO

i f ( o p c = = 1)

www.FreeLibros.me

194

Captulo 7

D atos d e t ip o estructurado

{
c lrscr();
p rin tf("\n

t a m a n i o de su p i z z a ? \ n \ n \ n \ n " ) ;

p rin tf("1 .

Chica\n2.

Mediana\n3.

Grande\n\n\nOpcion: \ t

s c a n f ( "%c/\& p e d i d o s [ n d i c e ] . t a m ) ;
//*********** A P L I C A R PRECIO
i f ( p e d i d o s [ n d i c e ] . tam==1 )
p e d i d o s [ n d i c e ] .precio= 45;
i f ( p e d i d o s [ n d i c e ] . tam==2 )
p e d i d o s [ n d i c e ] .precio=70;
e ls e p e d id o s[n d ice ] .precio= 100;
//************ e s c o g e r INGREDIENTES
cont=0 ;
do{
c l r s c r f );
p r i n t f ( u\n i n g r e d i e n t e s de s u p i z z a ?
p r i n t f ("1.

Jamon\n2.

Tocino\n3.

(mximo 3 ) \ t " ) ;

Elote\n4.

Jalapenio\n5.

Salchich a
\n6.

E x t r a q u e s o\ n 7 .
ingredien te:

Listo\n\n\nAgregar

");

s c a n f f "%c/ , & i ) ;
if(i= = 1)

s t r c p y ( p e d i d o s [ n d i c e ] . i n g f c o n t J , "J amn") ;

if(i= = 2)

s t r c p y (p e d i d o s [ n d i c e ] . i n g f c o n t ] , " T o c i n o " );

if(i= = 3)

s t r c p y (p e d i d o s [ n d i c e ] . i n g [ c o n t ] , " E l o t e " );

i f ( i==4) s t r c p y ( p e d i d o s [ n d i c e ] . i n g [ c o n t ] , " J a l a p e n o " ) ;


if(i= = 5)

s t r c p y (p e d i d o s [ n d i c e ] . i n g [ c o n t ] , " S a l c h i c h a " ) ;

if(i= = 6)

s t r c p y ( p e d i d o s [ n d i c e ] . i n g f c o n t ] , "Queso");

p r i n t f ( " \ n l n g r e d i e n t e a g r e g a d o ") ;
cont++;
getch();
} w h i l e ( c o n t < 3 && o p c l = 7 ) ;
c l r s c r f );
p r i n t f ( "Esta l i s t o

su p e d i d o " ) ;

n d i c e ++;

}
if(opc==2)

{
f o r ( i = 0 ; i < i n d i c e ; i++)

www.FreeLibros.me

");

Ejercicios p ro p u e s to s

p rin tf("

%c/

p re cio

%. 2 f ? n , p e d i d o s [ i ] . t a m , p e d i d o s [ i ] . p r e c i o ) ;

getch();

}
y
} w h i l e ( o p c ! =3);

n i . Codifique el siguiente p ro g ram a y cada uno de los incisos.


1. D e fin a u n a rre g lo d e re g is tro s q u e c o n te n g a : n o m b re d e l p ro fe so r,
m a te ria s im p a rtid a s, c d ig o d e p ro fe s o r y sa la rio .
2 . l i s t e lo s p ro fe s o re s c o n to d o s su s d ato s.
3 . B u s q u e u n p ro fe s o r y m u e s tre su s d ato s.
4 . M u e stre to d o s lo s p ro fe so re s q u e im p a rte n u n a m a te ria e n p a rticu la r.
5 . M u e stre el p ro fe s o r c o n el s a la rio m s alto .

www.FreeLibros.me

195

www.FreeLibros.me

Funciones
(programacin modular)

L a p ro g ra m a c i n m o d u la r es u n a t c n ic a q u e c o n s is te e n s e p a ra r u n
p ro b le m a e n las d ife re n te s ta re a s q u e s e q u ie re n re so lv e r, d a n d o o rig e n
a la c re a c i n d e m d u lo s (p e q u e o s p ro g ra m a s a lo s q u e lla m a re m o s
fu n c io n e s), d o n d e c a d a m d u lo o fu n c i n s e d ise a , s e c o d ific a y se
p ro c e sa d e m a n e ra in d e p e n d ie n te .
A m a n e ra d e e je m p lo , su p o n g a m o s q u e s e d is e a u n p ro g ra m a q u e
c a lc u la el s u e ld o d e l tra b a ja d o r d e u n a e m p re sa . P e n s a r e n el p ro b le m a
de in ic io a fin es d e m a s ia d o c o m p le jo , y a q u e im p lic a m u c h o s c lc u lo s.
P o r lo tan to , es m e jo r d iv id irlo d e tal fo rm a q u e e n la e ta p a d e a n lis is
se id e n tifiq u e n las d istin ta s ta re a s a re s o lv e r p a ra c a lc u la r u n su eld o :
p o r e je m p lo , c u n to s e d e b e p a g a r d e IM S S , c u n to d e IS P T , c u n to de
h o ras ex tra , si es q u e la s tu v o , e tc te ra . S e p o d ra d is e a r u n a fu n c i n
(o m d u lo ) in d e p e n d ie n te p a ra c a d a u n a d e e sta s ta re a s y al fin al a rm a r
to d as e sta s fu n c io n e s e n u n s o lo p ro g ra m a .

www.FreeLibros.me

198

Captulo 8

Funciones (prog ram acin m odular)

E sto im p lic a p e n s a r e n lo g e n e ra l d e u n s u e ld o y d e s g lo s a r el p ro b le m a h a s ta sus


o p e ra c io n e s m s b sic a s o p a rtic u la re s, lle v a n d o a c a b o u n d is e o d e s c e n d e n te ,
ta m b i n c o n o c id o c o m o to p d o w n .
El u so d e la s fu n c io n e s h a c e la p ro g ra m a c i n m s fc il y e fic ie n te p u e s p e rm ite :
R e d u c ir la c o m p le jid a d d e l p ro g ra m a ( d iv id e y v e n c e r s ).
E lim in a r c d ig o d u p lic a d o .
C o n tro la r f c ilm e n te lo s e fe c to s d e lo s c a m b io s.
O c u lta r d e ta lle s d e im p le m e n ta c i n .
R e u tiliz a r c d ig o .
F a c ilita r la le g ib ilid a d d e l c d ig o .
U n a fu n c i n re a liz a u n a ta re a e s p e c fic a a g ru p a n d o u n c o n ju n to d e in s tru c c io n e s
c o n u n n o m b re . P a ra q u e s e e je c u te n las in s tru c c io n e s c o n te n id a s e n la fu n c i n
sta s e d e b e in v o c a r o lla m a r m e d ia n te s u n o m b re e n o tra fu n c i n , la c u a l p u e d e
Ser main.
C a d a fu n c i n p u e d e s e r d ise a d a , v e rific a d a s in t c tic a m e n te y d e p u ra d a de
m a n e ra in d e p e n d ie n te ; e n o tra s p a la b ra s , c a d a fu n c i n s e p u e d e p ro b a r s in te n e r
qu e e s p e ra r a q u e e s t n p ro g ra m a d a s to d a s la s d e m s fu n c io n e s q u e ta m b i n se
u s a r n e n el p ro g ra m a . S in e m b a rg o , la s fu n c io n e s n o p u e d e n a c tu a r d e m a n e ra
a u t n o m a , es d e cir, n o p u e d e n e je c u ta rs e p o r s m ism a s: su e je c u c i n sie m p re
d e p e n d e r d e q u e s e a in v o c a d a e n a lg u n a o tra fu n c i n y e s to a s u v e z d e b e e sta r
re la c io n a d o s ie m p re c o n la e je c u c i n d e u n a fu n c i n ma in().
E n el le n g u a je C s e p u e d e n d is tin g u ir d o s tip o s d e fu n c io n e s: la s p re d e fin id a s y
las d e fin id as p o r el p ro g ra m a d o r. L a s fu n c io n e s p re d e fin id a s s e e n c u e n tra n e n las
b ib lio te c a s e s t n d a r d e C , y es n e c e s a rio h a c e r u so d e la d ire c tiv a Uinciude p a ra
in v o carlas. C o n re s p e c to a la s d e fin id as p o r e l p ro g ra m a d o r, s te la s d is e a se g n
sus n e c e sid a d e s.
D u ra n te el p re s e n te te x to s e h a e s ta d o in v o c a n d o v a ria s d e la s fu n c io n e s
p red e fin id a s e n d istin to s e je m p lo s: p o r e je m p lo p r i n t f , s c a n f , c i r s c r , e n tre o tras.
El o b je tiv o d e e s te c a p tu lo e s t o rie n ta d o a e x p lic a r al le c to r la fo rm a d e c re a r
sus p ro p ia s fu n c io n e s.

Funcin main ( )
Es la fu n c i n p rin c ip a l y p u e d e c o n te n e r d e p o c a s a m u c h a s ln e a s ; su p a p e l es
c o o rd in a r a las o tra s fu n c io n e s m e d ia n te lla m a d a s o in v o c a c io n e s. E l sig u ie n te
d ia g ra m a m u e s tra la je r a r q u a q u e e x is te e n u n p ro g ra m a m o d u la r e n le n g u a je C ,

www.FreeLibros.me

8.1 F u n cio n e s

en el c u a l s e p u e d e v e r q u e s ie m p re d e b e e x is tir u n a fu n c i n main y s ta p u e d e
h a c e r u so d e c u a lq u ie r c a n tid a d d e fu n c io n e s, y a s e a n c re a d a s p o r el u s u a rio o
p re d e fin id a s e n el le n g u a je . L a s fu n c io n e s in v o c a d a s p o r main p u e d e n lla m a r a su
v ez o tra s fu n c io n e s.

L as fu n c io n e s d e fin id a s p o r el u s u a rio tie n e n to d a s la s p ro p ie d a d e s y


a lg u n a s c a ra c te rstic a s s im ila re s a la s d e lo s p ro g ra m a s q u e h e m o s m a n e ja d o
a n te rio rm e n te , p e ro p a ra p o d e r u tiliz a r fu n c io n e s es n e c e sa rio p rim e ro d e fin irla s o
c re a rla s. D e fin ir u n a fu n c i n sig n ific a c o d ific a rla y la fo rm a d e d e fin ir fu n c io n e s
p u e d e v a ria r, d e b id o a q u e tra b a ja n d e d ife re n te s m a n e ra s.

8.1 Funciones
C o m o y a s e m e n c io n , c a d a fu n c i n s e d is e a d e m a n e ra in d e p e n d ie n te . L a
a c c i n d e d is e a r o c re a r u n a fu n c i n e n C es c o n o c id a ta m b i n c o m o d e fin irla y,
se g n el p ro p sito e sp e c fic o , la s fu n c io n e s p u e d e n s e r d ise a d a s d e la s sig u ie n te s
m an eras:

1. Funciones sin paso de parm etros. S o n su b p ro g ra m a s q u e n o re q u ie re n


in fo rm a c i n a d ic io n a l d e s u e n to rn o , p u e s sim p le m e n te e je c u ta n u n a a c c i n
c a d a v e z q u e s o n in v o c a d a s.

2. Funciones con paso de parm etros. P a ra la e je c u c i n d e e sto s


su b p ro g ra m a s s e re q u ie re a d e m s d e s u in v o c a c i n , q u e s e le p a se
in fo rm a c i n a d ic io n a l d e s u e n to rn o .

3. Funciones que no regresan valor. S u b p ro g ra m a s q u e lu e g o d e su


e je cu c i n n o d e v u e lv e n al e n to rn o a lg n v alo r c o m o re su lta d o d e s u e je cu c i n .

4. Funciones que regresan valor. F u n c io n e s q u e lu e g o d e s u e je c u c i n


g e n e ra n u n v a lo r c o m o re s u lta d o y e n tre g a n e s e v a lo r a su e n to rn o .
Todas estas fu n cio n es se p u e d e n c o m b in ar, es decir, s e p u e d e d ise a r u n a fu n ci n
con p arm etro s q u e reg rese v a lo r o q u e n o lo h a g a, si a s s e req u iere; o b ie n d ise ar
una ftin ci n sin p arm etro s q u e reg rese v a lo re n u n m ism o p ro g ram a. E sto d e p e n d e r
del p rogram ador, y d e c m o d e c id a q u e es m s co n v en ien te el d ise o d e la funcin.

www.FreeLibros.me

199

200

Captulo 8

Funciones (prog ram acin m odular)

El e n to rn o d e c u a lq u ie r fu n c i n es la fu n c i n p o r la q u e e s in v o ca d a. P o r e je m p lo ,
si

mai n

in v o c a a u n a fu n c i n d is e a d a c o n p a so d e p a r m e tro s y q u e re g re s a un

valor, e n to n c e s

mai n

es el e n to rn o d e sta , y s e r

main

la q u e le p ro p o rc io n e la

in fo rm a c i n (p a r m e tro s) q u e d ic h a fu n c i n re q u ie ra y la q u e re c ib a el v a lo r q u e
d ic h a fu n c i n d e v u e lv a . L a e s tr u c tu ra g e n e ra l p a ra d e fin ir u n a fu n c i n e n C es:
*Tipo_dato

id entificado r

(*l i s t a

de p a r m e t r o s )

{
* v ariab les lo c a le s ;
c u e r p o de l a

funcin;

* re tu rn dato;

}
E l * sig n ific a q u e p u e d e n o n o a p a re c e r, d e p e n d ie n d o d e l d is e o d e la fu n c i n .
E n la ta b la 8.1 s e d e s c rib e n lo s a sp e c to s m s so b re sa lie n te s e n el d is e o d e u n a
ftin c i n , se g n la d e fin ic i n d e sc rita .
Ta b l a 8.1 Descripcin de la definicin de funcin
Concepto

Explicacin

Tipo dato

Es e l
si

tip o

de d a t o d e l

e s que l a

v a l o r qu e d e v u e l v e l a

funcin l o

debe i n i c i a r

co n l a

omite e l t i p o

hace.

funcin,

S i no d e v u e l v e v a l o r ,

p a la b r a rese rv a d a v o id . S i

de d a t o ,

se

de manera p r e d e t e r m i n a d a

d e v u e l v e un e n t e r o .
L ista

de

parmetros

Es una l i s t a

de v a r i a b l e s c on s u s r e s p e c t i v o s t i p o s

de d a t o s qu e u t i l i z a

el

s i g u i e n t e formato: t i p o l

param etrol, tip o 2 param etro2,. . . ,


s t o s son l o s
c uando se l e

Cuando e x i s t e n ,

d a t o s qu e debe r e c i b i r l a

funcin

invoque.

Cuerpo de l a

Son l a s s e n t e n c i a s o i n s t r u c c i o n e s qu e e j e c u t a r

funcin

la

V ariables lo c a le s

L a s c o n s t a n t e s y v a r i a b l e s d e c l a r a d a s d e n t r o de l a

f u n c i n c a d a vez qu e sea i n v o c a d a .

f u n c i n s on l o c a l e s

a la

misma y no e x i s t e n f u e r a de

e lla .
Valor devuelto

Mediante l a

p a l a b r a r e s e r v a d a r e t u r n s e puede

por l a

devolver e l

r e s u l t a d o de l a

funcin

funcin,

funcin re q u ie re re g re sa rlo .
Identificador

E s e l nombre a s i g n a d o a l a

www.FreeLibros.me

funcin.

si

e s qu e l a

8.1 Funciones

In ic ie m o s e x p lic a n d o la fo rm a m s s e n c illa d e e m p le a r fu n c io n e s: s in p a so de
p a r m e tro s ni d e v o lu c i n d e valor.
void id e n t if ic a d o r

( )

{
v ariab les lo c a le s ;
c u e r p o de l a

funcin;

}
d onde:
P a la b ra re s e rv a d a q u e e n u n a fu n c i n in d ic a q u e s ta s lo

vo id

e je c u ta su s in stru c c io n e s s in d e v o lv e r n a d a a s u e n to rn o .
N o m b re q u e el p ro g ra m a d o r e lig e p a ra la fu n c i n y c o n el cu al

id entificado r

la in v o c a r p o ste rio rm e n te .
( )

L o s p a r n te s is s o n p a rte d e la s in ta x is d e u n a fu n c i n : si e st n
v a co s, s ig n ific a q u e la fu n c i n n o re c ib e p a r m e tro s.

O b s e rv e q u e a q u s e o m ite la in s tru c c i n
c o n la p a la b ra

retum

, p u e s to q u e s e in ic ia la fu n c i n

void.

E je m p lo 8.1 Resolver el sim ple problem a de la suma de dos s, m ediante


una funcin sin paso de parm etros ni devolucin de valor
v o i d sumal ( )

{
float a , b , c ;
p rin tf("te cle a

e l primer

");

scanf("% f",&a);
p rin tf("te cle a

el

s egu ndo

") ;

scanf("*f",&b);
c=a+b;
p r i n t f ( " E l r e s u l t a d o e s % f",

c);

}
v o id main( )

{
suma 1 ( ) ;

www.FreeLibros.me

202

Captulo 8

Funciones (prog ram acin m odular)

E n e s te e je m p lo s e p ro g ra m la fu n c i n
tres v a ria b le s lo c a le s: a ,

b y c.

y d e n tro d e la m is m a s e d e c la ra n

sumai

L as in s tru c c io n e s a sig n a d a s a la fu n c i n

sumai

so n s o lic ita r v a lo re s al u su a rio , a lm a c e n a rlo s e n a y re s p e c tiv a m e n te ; c a lc u la r


la s u m a d e sto s y a lm a c e n a rla e n c; fin a lm e n te m o s tra r el v a lo r d e c. L a fu n c i n
sumai

h a c e to d o lo n e c e s a rio p a ra s u m a r d o s n m e ro s . P r c tic a m e n te , la n ic a

ta re a d e

mai n

es in v o c a r a la fu n c i n p a ra q u e e lla s e o c u p e d e l re s to . C o m o se

p u e d e v e r e n el e je m p lo , la lla m a d a a

sumai

e s u n a s e n te n c ia m s d e

main.

Es im p o rta n te te n e r p re s e n te q u e la e je c u c i n d e c u a lq u ie r p ro g ra m a c re a d o
m e d ia n te fu n c io n e s, s e in ic ia r s ie m p re e n la fu n c i n

main.

Q u izs el e je m p lo a n te rio r es p o c o p r c tic o , y a q u e n o h a y m u c h a d ife re n c ia e n tre


so lu c io n a r e l p ro b le m a u sa n d o fu n c io n e s o s in u tiliz a rla s , y el p ro b le m a re a lm e n te
es p e q u e o , p e ro si e m p le a m o s v a ria s ta re a s e n u n p ro g ra m a , v a le la p e n a el u so
d e fu n c io n e s.
R )r otro lado, c ab e se alar q u e

sumai

h a ce u so d e las funciones

p rin tf

scanf,

que

tam bin so n funciones, a u n q u e stas estn predefinidas e n e l leng u aje C . E sto nos
indica q u e n o s lo

main

p u e d e invocar a las funciones, sino q u e e n tre e llas tam b in

pueden invocarse. L a ventaja d e las fu n cio n es es q u e u n a v ez dise ad as p u ed en


utilizarse las veces q u e se requiera, slo b asta co n invocarlas y ejecu tarn las ins
trucciones q u e tengan asignadas. L as fu n cio n es

p r i n t f o scanf

se p u e d e n em p lea r

infinidad d e veces. C ad a vez q u e se req u ie re le e r o m o strar alg n d ato en un p ro g ram a


se invocan y listo; lo m ism o sucede co n las fu n cio n es q u e el p ro g ram a d o r disea.
C o m o s e m e n c io n a n te rio rm en te , u n p ro g ra m a m o d u la r o co n fu n c io n e s d e b e
co n ta r in v ariab le m e n te c o n u n a fu n c i n

mai n ,

la c u a l c o n tro la la a p a ric i n de

c u alq u ie r otra fu n ci n . L a e je c u c i n d e u n p ro g ra m a in ic ia c o n lo q u e c o n tie n e

mai n,

pero e n c u a n to sta llam a a a lg u n a otra fu n ci n , s e e je c u ta n las in stru c c io n e s de


esta ltim a. U n a v ez c o n c lu id a la fu n c i n q u e s e invoc, s e re g re sa el c o n tro l a la
fu n ci n main y s e c o n tin a c o n la sig u ien te ln e a h a sta te rm in a r s u co n te n id o . E n el
sig u ien te d ia g ra m a las flechas in d ic a n el o rd e n e n q u e s e lleva a c a b o la ejecu ci n .
void fu n c io n X (

v o i d mai n ( )

{
in stru cci n

1;

in stru cci n

1;

in stru cci n

2;

in stru cci n

2;

f u n c i o n X ( );
in stru cci n

www.FreeLibros.me

4;

8.1 Funciones

E n e s te e je m p lo s e d is e a la

funcionx

con

in s tru c io n e s y la fu n c i n

main

co n c u a tro in stru c c io n e s d e la s q u e la te rc e ra es p re c is a m e n te la in v o c a c i n a
f u n c i o n x . L a e je c u c i n s e in ic ia e n mai n , p o r lo q u e s e e je c u ta n la s in stru c c io n e s
1 y 2, p e ro e n c u a n to a p a re c e la lla m a d a a

funcionx

s e in ic ia la e je c u c i n d e sus

in stru c c io n e s; al te rm in a rla s , s e re g re sa el c o n tro l al p u n to e n q u e s e in v o c


la fu n c i n re c i n fin a liz a d a , es d e cir, a mai n p a ra p ro s e g u ir e n to n c e s c o n la

e je c u c i n d e la in s tru c c i n 4 y te rm in a r el p ro g ra m a .
S in e m b a rg o , la s fu n c io n e s p u e d e n s e r in v o c a d a s n o s lo d e sd e m a i n , sin o
q u e ta m b i n s e p u e d e n in v o c a r d e sd e c u a lq u ie r o tra fu n c i n y s u e je c u c i n
se lle v a a c a b o d e m a n e ra sim ila r. E s to s e p u e d e o b s e rv a r e n el d ia g ra m a
sig u ien te:

in stru cci n

1;

in stru cci n

2;

f u n c io n Y ();

}
E n e s te e je m p lo s e d is e a ro n

funcionx, fu n cio n Y

main.

C o m o y a s e e x p lic ,

la e je c u c i n in ic ia e n mai n , p o r lo q u e s e e je c u ta n la s in s tru c c io n e s 1 y 2,
c u a n d o v ie n e la in s tru c c i n 3 q u e es la in v o c a c i n a f u n c i o n Y s e e je c u ta n sus
in stru c c io n e s 1 y 2 y lu e g o s e e n c u e n tra c o n la lla m a d a a

funcionx

p o r lo q u e

se p a s a el c o n tro l a s ta e je c u ta n d o su s tres in s tru c c io n e s p a ra c o n tin u a r co n


funcionY

q u e fu e la q u e la lla m ; a h o ra s e e je c u ta n la s in s tru c c io n e s 4 y 5 d e

funcionY

c o n lo q u e fin a liz a y s e c o n tin a c o n

mai n

www.FreeLibros.me

h a s ta q u e fin aliza.

204

Captulo 8

Funciones (prog ram acin m odular)

Ej e m p l o 8.2 Calcular el prom edio individual de un conjunto de alumnos


v o i d prom( )

{
i n t n,

i;

float c ,

p=0 ;

p r i n t f ( " C u a n t a s m a t e r ia s se l e

van a p r o m e d i a r a l

alumno?");

s c a n t C"%", & n ) ;
f o r ( i =1 ; i< =n ;i ++)

{
p r i n t f ("T eclea l a

c a l i f i c a c i n ) ;

s c a n t ( "% f", & c ) ;


p=p+c;

}
p= p ln ;
p r i n t f ( " E l p r o m e d i o d e l alumno e s : % f",

p);

}
v o i d main( )

{
in t

resp;

do{
prom( ) ;
p rin tf("S i

d e s e a s p r o m e d i a r o t r o alumno t e c l e a

1 ) ;

scanf("% i,& resp );

}
w h i l e ( resp== 1 ) ;

E n e s te p ro g ra m a s e p u e d e a p re c ia r m e jo r la v e n ta ja e n el u so d e fu n c io n e s, ya
que

prom

s e d is e u n a s o la v e z y e n el

mai n

s e in v o c a r la s v e c e s q u e el u su a rio

n e c e site o d e c id a o b te n e r el p ro m e d io in d iv id u a l d e u n c o n ju n to d e a lu m n o s sin
sa lir d e l p ro g ra m a .
L a e je c u c i n u n a v e z m s in ic ia e n
y lu e g o s e in v o c a a

prom ;

mai n ,

d o n d e s e d e c la r la v a ria b le lo c a l

resp,

a c o n tin u a c i n s e e je c u ta n la s in s tru c c io n e s d e esa

fu n ci n . D e sp u s s e p re g u n ta si s e d e s e a c a lc u la r o tro p ro m e d io y, d e p e n d ie n d o
de la re s p u e s ta , s e re p ite o n o el c o n te n id o d e d o - w h i l e .

www.FreeLibros.me

8.2 Funciones q u e devuelven valores

N o o b sta n te , el d is e o e s p e c fic o d e estas fu n c io n e s tie n e c ie rta s d e sv e n ta ja s, ya


q u e ta n to los v a lo re s d e e n tra d a c o m o lo s d e sa lid a s e a lm a c e n a n e n v a ria b le s
lo c a le s y e s o p u e d e n o s e r re c o m e n d a b le e n a lg u n o s c a so s.

V ariables locales

L as v a ria b le s lo c a le s tie n e n la s sig u ie n te s c a ra c te rstic a s:


1. S lo p u e d e n s e r re c o n o c id a s y u tiliz a d a s p o r la fu n c i n e n la q u e e st n
d e c la ra d a s ; n in g u n a o tra, ni s iq u ie ra main, q u e es el p ro g ra m a p rin c ip a l, tie n e
a c c e so a la s v a ria b le s lo c a le s d e c la ra d a s e n o tra fu n c i n .
2 . L o s e sp a c io s re s e rv a d o s e n m e m o ria p a ra v a ria b le s lo c a le s e s t n d isp o n ib le s
s lo e n el m o m e n to e n q u e s e e s t e je c u ta n d o la fu n c i n d o n d e fu e ro n
d e c la ra d a s, u n a v e z q u e s e te rm in a la e je c u c i n d e la fu n c i n d e s a p a re c e n d e
la m e m o ria , lo q u e o c a s io n a q u e, d e sp u s d e a lm a c e n a r lo s d a to s d e e n tra d a
y m o s tra r lo s re s u lta d o s e n la s fu n c io n e s sumai y prom q u e s e d is e a ro n , e sto s
d ato s s e p ie rd a n y n o e x is ta fo rm a d e re c u p e ra rlo s .
A n a liz a n d o lo s d o s e je m p lo s q u e h e m o s re v is a d o , q u d e b e ra h a c e rs e si
el re s u lta d o d e la s u m a d e d o s n m e ro s s e re q u ie re p a ra a lg n o tro c lc u lo
fu e ra d e la fu n c i n s u m a l? O b ie n , q u s e d e b e r a g re g a r al p ro g ra m a si
d e sp u s d e p ro m e d ia r a c a d a a lu m n o s e n e c e s ita ra c a lc u la r el p ro m e d io
g e n e ra l d e to d o s lo s a lu m n o s? C o m o e s t n d ise a d o s e sto s p ro g ra m a s s e ra
im p o s ib le , d e b id o a q u e los re s u lta d o s s e e n c u e n tra n e n v a ria b le s lo c a le s,
d e ta l m a n e ra q u e e n c u a n to s e te rm in a n a m b a s fu n c io n e s c a d a re s u lta d o q u e
g e n e ra n d e sa p a re c e .
P ra p o d e r d is p o n e r d e lo s re s u lta d o s , in c lu s o c u a n d o s e h a te rm in a d o la fu n ci n ,
d e b em o s u tiliz a r o tro tip o d e fu n c io n e s.

8.2 Funciones que devuelven valores


E ste se g u n d o tip o d e fu n c io n e s tr a b a ja d e m a n e ra d ife re n te a la s a n te rio re s
o fre c ie n d o u n a v e n ta ja a d ic io n a l: p o d e r te n e r el re s u lta d o q u e p ro p o rc io n a
la fu n c i n d isp o n ib le a la s d e m s fu n c io n e s p a ra o p e ra c io n e s p o s te rio re s . L as
fu n c io n e s q u e a c o n tin u a c i n d e s c rib ire m o s n o re q u ie re n p a so d e p a r m e tro s ,
p e ro d e v u e lv e n u n v a lo r a s u e n to rn o (re c u e rd e q u e su e n to rn o es la fu n c i n
q u e la lla m a y q u e p u e d e s e r main o c u a lq u ie r o tra ). L a sin ta x is es la sig u ie n te :

www.FreeLibros.me

205

206

Captulo 8

tipo_dato id e n tific a d o r

Funciones (prog ram acin m odular)

( )

{
d e c l a r a c i n de v a r i a b l e s l o c a l e s ;
c u e r p o de l a
return

funcin;

(v alor);

}
E ste tip o d e fu n c io n e s in ic ia c o n

tipo_dato

y s e a g re g a la p a la b ra re s e rv a d a

return:

S i u n a fu n c i n v a a d e v o lv e r u n v a lo r, e n to n c e s d e b e in ic ia r c o n el

Tipo_dato

tip o d e d a to q u e d e v o lv e r , q u e p u e d e s e r c u a lq u ie r tip o p rim itiv o


in t, flo at, ch ar, e tc te ra .
E s la p a la b ra re s e rv a d a q u e en v a el v a lo r q u e la fu n c i n

retum

d e v u e lv e a la fu n c i n q u e la m a n d a lla m a r; el v a lo r es u n d ato ,
a s q u e p u e d e s e r u n a v a ria b le , u n a e x p re si n a ritm tic a , e tc te ra ,
in c lu s o lo q u e o tra fu n c i n d e v u elv a.

Ej e m p l o 8.3 Disear la solucin para el caso de la suma de dos s m ediante una


funcin que regresa un valor: el resultado del clculo de la suma
float suma 1 ( )

{
float a , b , c ;
p rin tf("te cle a

e l prim er

*):

s c a n fC W '& a );
p rin tf("te cle a

el

segu ndo

"):

s c a n f ( "% f" , & b ) ;


c=a+b;
r e t u r n c;

v o id main( )

{
float r e s ;
res=suma 1 ( ) ;
p rin tf ("E l

r e s u l t a d o e s % f",

res);

www.FreeLibros.me

8.2 Funciones q u e devuelven valores

E n e s te e je m p lo la fu n c i n sumai in ic ia c o n el tip o d e d a to fioat, lo cu al


sig n ific a q u e re g re sa r u n v a lo r re a l a la fu n c i n q u e la in v o c a (e n e s te c a so
main). L as a c c io n e s e n la e je c u c i n d e sumai s o n s o lic ita r lo s v a lo re s al u su a rio ,
a lm a c e n a rlo s e n a y re sp e c tiv a m e n te , a lm a c e n a r el re s u lta d o e n c, y d e v o lv e r el
v a lo r d e c a main.
Es n e c e s a rio a c la ra r q u e la fu n c i n re g re s a s lo el v a lo r d e la v a ria b le c, p e ro sta
ju n to c o n las v a ria b le s a y b d e s a p a re c e n u n a v e z c o n c lu id a la fu n c i n sumai.
P b r lo ta n to main s e e n c a rg a d e re c ib ir el re s u lta d o d e la o p e ra c i n ; e n e s te c a so
so la m e n te p a ra im p rim irlo .
P r o tro la d o , ta m b i n es im p o rta n te o b s e rv a r q u e el main d e e s ta n u e v a v e rs i n
tie n e u n a lig e ra d ife re n c ia c o n el d e la a n te rio r e n la lla m a d a a sumai, y a q u e si
u n a fu n c i n d e v u e lv e u n v a lo r es o b lig a c i n d e l p ro g ra m a q u e la in v o c a c a c h a r
o re c ib ir d e a lg u n a m a n e ra el v a lo r q u e re to m a la fu n c i n in v o ca d a, p o r e ste
m o tiv o s e d e c la ra u n a v a ria b le lla m a d a r e s , e n la q u e m e d ia n te u n a a sig n a c i n
main re c ib e el v a lo r q u e le d e v u e lv e sumai lu e g o d e s u e je c u c i n .
El m is m o p ro g ra m a c o n a lg u n a s v a ria c io n e s:
float sumal ( )
{
float a ,b ;
p r i n t f ( " t e c l e a e l p r i m e r ");
s c a n f ( " 96f ,&a);
p r i n t f ( t e c l e a e l segundo ");
sc a n f( "% f" ,& b ) ;
r e t u r n a+b;
}

void m ain( )

{
p r i n t f ( " E l r e s u l t a d o e s %f", s u m a l ( ) ) ;

}
E n la fu n c i n suma i s e p re s c in d i d e la v a ria b le c, y a q u e s e re g re sa d ire c ta m e n te
el v a lo r d e la e x p re si n a ritm tic a a+b. E n el c a s o d e m a i n ta m b i n s e o m iti la
v a ria b le r e s , p u e s to q u e e n e s te e je m p lo la fu n c i n m a i n re c ib e el v a lo r q u e le
re g re sa s u m a l , u tiliz n d o la c o m o a rg u m e n to d e p r i n t f y es el v a lo r d e a+b lo q u e
a p a re c e r e n la p a n ta lla .

www.FreeLibros.me

207

208

Captulo 8

Funciones (prog ram acin m odular)

L a s e n te n c ia p r i n t f ( "%f , s u m a i ( ) ) ; sig n ific a im p rim e lo q u e re g re s a la fu n c i n


sumal

V eam os o tro e je m p lo p a ra m o stra r la v e n ta ja d e h a b e r m o d ific a d o la fu n c i n


s uma i p a ra q u e a h o ra d e v u elv a u n valor. S e d ise a r u n p ro g ra m a q u e su m e c u a tro

valores p ro p o rc io n a d o s p o r el u su a rio . P e ro si n u e stra fu n c i n s u m a s lo dos


n m ero s, q u s e p u e d e h a c e r e n e ste c a s o ? F cil! S e lla m a d o s v e c e s a la fu n ci n .
float s u m a l ( )

{
flo at a , b ;
p r i n t f ( " t e c l e a e l p rim e r ");
s c a n f ( u% f n, & a ) ;
p r i n t f ( " t e c l e a e l segundo " );
s c a n f ( " * 6f n,&b) ;
r e t u r n a+b;

void main( )
{
p r i n t f ( " El r e s u l t a d o e s

%f " ,

sum al( ) +suma1 ( ) ) ;

}
E n e s te e je m p lo , la fu n c i n sumai es in v o c a d a d o s v e c e s. P rim e ro s e lla m a c o m o
a rg u m e n to d e la n ic a in s tru c c i n d e main, q u e es p r i n t f ; la p rim e ra lla m a d a a
sumai p id e d o s v a lo re s al u su a rio , h a c e la s u m a y la re g re s a a d o n d e fu e in v o ca d a.
D e sp u s h a y u n a se g u n d a lla m a d a e n la q u e s e p id e n los o tro s d o s v a lo re s y se
d e v u elv e ta m b i n el re s u lta d o a d o n d e s e in v o c . F in a lm e n te , main h a c e la su m a
de lo s d o s v a lo re s y lo s im p rim e .
E je m p lo 8.4 Disear, re to m a n d o el e jem p lo d e la fu n ci n qu e calcula
el prom edio, un program a d o n d e la fu n c i n devuelva un valor
q u e se acu m u le en una variable en m a in para luego o b te n e r
el p ro m e d io grupal d e

alum nos

float prom( )
{
i n t n, i ;
float c, p= 0 ;

www.FreeLibros.me

8.2 Funciones q u e devuelven valores

p r i n t f ( " C ua n t a s m a t e r i a s s e l e

van a p r o m e d i a r a l

209

alumno?") ;

scanf("% i",&n);
f o r ( i =1 ;i<=n;i++)

{
p r i n t f ("T eclea l a

c a l i f i c a c i n " );

scanf("% f",&c);
p=p+c;

}
P=Pln;
r e t u r n p;

}
v o id main( )

{
in t

resp,

c=

0;

float promg
do{
promg = promg + prom( ) ;
p rin tf("S i

d e s e a s p r o m e d i a r o t r o alumno t e c l e a

1");

scanf("% i",&resp);
if(re sp )
c++;

}
w h i l e ( r e s p 1) ;
p r i n t f (" E l promedio g e n e r a l

de l o s %c/ alumn os es % f",

c , promg l e

);

V eam os u n n u e v o e je m p lo p a ra o b s e rv a r c m o u n a fu n c i n p u e d e s e r lla m a d a p o r
o tra fu n c i n , n o n e c e s a ria ni e x c lu s iv a m e n te p o r el

main.

Ej e m p l o 8.5 Calcular el rea de un trapecio


float s u ma b as es f )

{
float bm,BM;
p r i n t f ( " Dame l a

b a s e menor

");

s c a n f f "% f" , &bm);


p r i n t f ( " Dame l a

base mayor");

(c o n tin a )

www.FreeLibros.me

210

Captulo 8

Funciones (prog ram acin m odular)

(c o n tin u a c i n )

s c a n f ( '% f ,&BM);
r e t u r n (bm+BM);
}

float area ( )
{
float h;
p r i n t f ( Dame l a a l t u r a u) ;
scanf("* 6f " , & h ) ;
r e t u r n sumabases( ) * h / 2 ;
}
v o id m a i n ( )
{
p r i n t f ( "% f" , a r e a ( ) ) ;
}

L a fu n c i n main in v o c a a la fu n c i n a re a , e n s ta s e p id e la a ltu ra y lu e g o
in v o ca a la fu n c i n sumabases, la c u a l s o lic ita el v a lo r d e la s b a se s y re g re sa
el re s u lta d o d e la s u m a a area, q u e es la q u e la lla m a e n su d e fin ici n ;
c u a n d o area re c ib e el v a lo r d e sumabases lo u tiliz a p a ra c o n c lu ir el c lc u lo ,
y a su v e z re g re sa el re s u lta d o a main y a h s e im p rim e .

8.3 Funciones con paso de parm etros


H a sta a h o ra , el d is e o d e n u e stra s fu n c io n e s h a h e c h o q u e main sim p le m e n te
las in v o q u e , y a q u e c o n s lo lla m a rla s p id e n d ire c ta m e n te al u s u a rio lo s v a lo re s
de e n tra d a re q u e rid o s p a ra trab a ja r. P e ro e x is te n o tro tip o d e fu n c io n e s d o n d e
h a y u n a c o m u n ic a c i n m s e s tre c h a e n el c o n te x to d e u n p ro g ra m a m o d u la r: las
fu n c io n e s c o n p a so d e p a r m e tro s.
U n a fu n c i n c o n p a so d e p a r m e tro s es a q u e lla q u e a d e m s d e s e r in v o ca d a
re q u ie re in fo rm a c i n p o r p a rte d e l s u b p ro g ra m a q u e la lla m a . E s ta in fo rm a c i n
se re fie re a lo s d a to s d e e n tra d a q u e s e n e c e s ita n p a ra q u e la fu n c i n tra b a je .

www.FreeLibros.me

8.3 Funciones con paso d e parm etros

H a y d o s fo rm a s d e p a s a r d ato s a la s fu n c io n e s: p a so p o r v a lo r y p o r re fe re n c ia .
E stas fu n c io n e s p u e d e n te n e r u n o o v a rio s p a r m e tro s q u e p u e d e n e n tre g a rse
s lo p o r valor, s lo p o r re fe re n c ia o d e a m b a s fo rm a s. L o s p a r m e tro s p u e d e n
se r d e u n m is m o tip o d e d a to s o d e tip o s d e d a to s d ife re n te s, se g n s e re q u ie ra
en el d is e o d e la fu n c i n : p o r e je m p lo , u n a fu n c i n p u e d e re c ib ir n ic a m e n te
d ato s e n te ro s o, si a s s e re q u ie re , r e c ib ir d a to s d e tip o e n te ro , re a l o c arc ter.

8.3.1 Funciones con parmetros por valor


L a fo rm a g e n e ra l d e e ste tip o d e fu n c i n e s la sig u ie n te :

tipo_dato identificador (tipo_dato parm etro )


I

declaracin d e variables locales;


cuerpo d e la funcin;
return (valor);
)
L o n u e v o e n el d is e o d e la m is m a es el c o n te n id o d e lo s p a r n te sis:
(tipo_dato
parm etro)

V ariab les (p a r m e tro s) a n te c e d id a s p o r s u tip o d e d a to d o n d e la


fu n c i n re c ib e lo s v a lo re s q u e re q u ie re p a ra tra b a ja r p o r p a rte del
m d u lo q u e la in v o ca . P u e d e s e r u n o o v a rio s.

E je m p lo 8 .6 Resolver nuevam ente el problem a de la suma de dos nmeros,


pero usando una funcin con paso de parm etros por valor
float suma 3 (float a, float b)
{
r e t u r n a+b;
}

void main( )
{
float n 1 , n 2 , c;
p r i n t f ( "Dame e l p rim e r v a l o r " ) ;
(c o n tin a )

www.FreeLibros.me

212

Captulo 8

Funciones (prog ram acin m odular)

(continuacin)
s c a n f ( (" * 6f " , & n 1 ) ;
p ri n t f( " D a m e e l segundo v a l o r " ) ;
scanf(("*f",& n2 );
c=suma3(n1,n 2 ) ;
p r i n t f ( La suma e s % f", c ) ;
}

O b s e rv e c m o la fu n c i n suma 3 s e d e c la ra c o n d o s p a r m e tro s d e tip o re a l (a y


b \ lo s c u a le s s o n u n a e s p e c ie d e m o ld e d o n d e la fu n c i n re c ib e lo s v a lo re s q u e
n e c e sita p a ra tra b a ja r.
L as a c c io n e s d e main, al e je c u ta rs e , s o n la s sig u ie n te s: s o lic ita r lo s d a to s al
u su a rio y a lm a c e n a rlo s e n n i y n 2 re s p e c tiv a m e n te , e in v o c a r a suma3 c o n los
v alo res a lm a c e n a d o s e n n i y n 2 (lo s c o n te n id o s d e m y n 2 , e n tr a n a la fu n c i n
a trav s d e lo s p a r m e tro s a y e n el o rd e n e n q u e s e e n v ia ro n , es d e cir, el v a lo r
d e m e n tra a trav s d e a y n 2 e n tra a tra v s d e b). S e a lm a c e n a la s u m a e n c;
suma3 d e v u e lv e el v a lo r d e la v a ria b le c a main. F in a lm e n te main im p rim e el
re su lta d o .

Parm etros fo rm a le s y arg u m en tos


L os p a r m e tro s fo rm a le s (ta m b i n d e n o m in a d o s p a r m e tro s fic tic io s) so n
las v a ria b le s q u e s e d e c la ra n d e n tro d e l p a r n te s is ju n to c o n la fu n c i n ;
en e s te c a s o a y b. P o r o tro la d o , lo s v a lo re s c o n q u e s e in v o c a a la fu n c i n se
d e n o m in a n a rg u m e n to s o p a r m e tro s re a le s . E n el e je m p lo ta le s a rg u m e n to s
so n re p re s e n ta d o s p o r n i y n 2 .
F re c u e n te m e n te , el t r m in o p a r m e tro s e u tiliz a in d is tin ta m e n te ta n to p a ra
re fe rirs e a lo s fictic io s c o m o a lo s re a le s; s in e m b a rg o , a q u s e d e n o m in a r n
p a r m e tro s a lo s fic tic io s y a rg u m e n to s a lo s re a le s. D ic h o d e o tra m an e ra:
so n p a r m e tro s lo s q u e s e d e c la ra n e n la d e fin ic i n d e la fu n c i n y a rg u m e n to s
los v a lo re s c o n q u e s e in v o c a n a la m ism a .
C a b e se a la r ta m b i n q u e lo s p a r m e tro s s o n v a ria b le s sie m p re , m ie n tra s q u e los
a rg u m e n to s p u e d e n s e r v a ria b le s, c o n sta n te s, e x p re s io n e s a ritm tic a s e in c lu so
lo q u e d e v u e lv a la lla m a d a a o tra fu n c i n , s ie m p re y c u a n d o lo s a rg u m e n to s
c o in c id a n e n c a n tid a d , tip o d e d a to y o rd e n c o n lo s p a r m e tro s ta l c o m o s e h a y a n
d e c la ra d o e n la fu n c i n .

www.FreeLibros.me

8.3 Funciones con paso d e parm etros

213

E n el e je m p lo , suma3 fu e d e fin id a p a ra re c ib ir d o s p a r m e tro s d e tip o re a l (a y b),


p o r lo ta n to , c u a n d o e n main s e in v o c a suma3 , a e sta v a ria b le s e le e n tre g a n dos
a rg u m e n to s ( m y n 2 ) ta m b i n d e tip o real.
Los p a r m e tro s p o r v a lo r re c ib e n u n a c o p ia d e lo q u e v a le n lo s a rg u m e n to s;
su m a n ip u la c i n es in d e p e n d ie n te , es d e cir, u n a v e z fin a liz a d a la fu n c i n , los
a rg u m e n to s c o n tin a n c o n el v a lo r q u e te n a n an te s.
E ste tip o d e m a n e jo d e p a r m e tro s s e d e n o m in a fu n c i n c o n p a so d e p a r m e tro s
p o r valor.
P ra c o m p re n d e r m e jo r lo a n te rio r, s im u le m o s u n a c o rrid a d e e s c rito rio so b re
el p ro g ra m a . S i al s o lic ita r los d a to s el u s u a rio d ie ra c o m o e n tra d a s 4 y 5,
sa b ra m o s q u e s e a lm a c e n a ra n e n n i y n 2 , re s p e c tiv a m e n te , y q u e sto s se ra n
los v a lo re s q u e suma3 re c ib ir a e n a y b. P o r ta n to , suma3 d e v o lv e r el v a lo r de
9 a main, q u e lo r e c ib ira e n c, y d e sp u s lo im p rim ira .
Si e n el main s e im p rim ie ra n lo s v a lo re s d e m y n 2 , s e v is u a liz a ra 4 y 5, ya
q u e suma3 re c ib i s lo la c o p ia d e lo s v a lo re s d e m y n 2 , p e ro es in c a p a z d e
m o d ific a rlo s p u e s n o tie n e a c c e s o a la d ire c c i n d e m e m o ria a s ig n a d a a estas
v ariab les.

E je m p lo 8.7 Crear la funcin para sum ar dos nmeros, pero con ligeros
cam bios a m ain para que el programa calcule la suma de cuatro s
float suma3(f l o a t a,

fl oat b)

{
r e t u r n a+b;

}
v o id main( )

{
float n 1 , n2,

n3,

n4,

c;

p r i n t f ( "Dame e l p r i m e r v a l o r " ) ;
s c a n t ( ( ' % f , & n 1) ;
p r i n t f ( " Dame e l

segundo v a l o r ) ;

scant(("% f",&n2 );
p r i n t f ( " Dame e l

tercer valor");

s c a n t ( ( n96f" ,&n3) ;

(c o n tin a )

www.FreeLibros.me

214

Captulo 8

Funciones (prog ram acin m odular)

(c o n tin u a c i n )
p rin tf(" D a m e e l c u a rto v a l o r " ) ;
s c a n f ( ( "%f" , & n 4 ) ;

C=suma3(suma3(n1,n 2 ) , s u m a 3 ( n 3 , n 4 ) ) ;
p r i n t f (" La suma e s

c);

main

s o lic ita lo s c u a tro v a lo re s al u s u a rio y u n a v e z q u e lo s tie n e a lm a c e n a d o s

h a ce u n a lla m a d a a su m a 3 , p e ro e n e s ta o c a s i n lo s a rg u m e n to s d e la p rim e ra
in v o c a c i n a suma3 so n lla m a d a s la m is m a fu n c i n : e n u n a in s tru c c i n s e in v o ca
en tre s o c a sio n e s a

suma3.

L a p rim e ra e n e je c u ta rs e es la lla m a d a a s u m a 3 ( n i , n 2 ) , la c u a l d e v u e lv e
un v a lo r, la s e g u n d a fu n c i n e n e je c u ta rs e es s u m a 3 ( n 3 , n 4 ) y re g re s a un
se g u n d o v a lo r. E sto s d o s v a lo re s s o n to m a d o s c o m o a rg u m e n to s d e la fu n c i n
s u m a 3 ( s u m a 3 ( n i , n 2 ) >s u m a 3 ( n 3 f n 4 ) ) , y to d o s e a lm a c e n a e n c p a ra d e sp u s
im p rim irse . E s im p o rta n te m e n c io n a r q u e las lla m a d a s a la s fu n c io n e s s e v an
e je c u ta n d o d e a d e n tro h a c ia a fu e ra.

E je m p lo 8 .8 Crear un programa con dos funciones: una que calcule


el cuadrado de un nm ero y otra que calcule el cubo.
Am bas deben devolver el resultado
in t

cu a d ra d o (in t

x)

{
retu rn fx

* x);

}
in t

cu b o fin t

y)

{
return

cuadrado(y)*y;

}
v o id m a in (

{
in t

opc,

n;

p rin tf("E lig e

una

o p cio n

1)

CUADRADO \n 2 )

www.FreeLibros.me

CUBO\n");

8.3 Funciones con paso d e parm etros

215

s c a n f f ( "%" , & o p c ) ;
p r i n t f ( " Dame e l numero a e l e v a r 1') ;
s c a n f ( ( "%" , & n ) ;
switch(opc)

{
ca se

1:

p r i n t f ( " ^ d " , cuadrado( n ) ) ;

break;
c a s e 2 : p r i n t f ( "%cP, c u b o ( n ) ) ;
break;
d e f a u l t : p r i n t f ( " ERROR") ;

}
}

Si e n el main s e s e le c c io n a la o p c i n 1, s e e je c u ta r c u a d r a d o , la c u a l re c ib e un
valor, lo m u ltip lic a p o r s m is m o y d e v u e lv e el re s u lta d o a main. E n c a s o d e q u e
se a s e le c c io n a d a la o p c i n 2, s e in v o c a r a

cubo,

s ta a s u v e z in v o c a a

cuad rado ,

el c u a l re c ib e el re su lta d o , lo m u ltip lic a p o r el p a r m e tro y d e v u e lv e el c ub o a


main. O b s e rv e q u e ta n to main c o m o cubo h a c e n u n a lla m a d a a c u a d r a d o : c u a lq u ie r
fu n c i n p u e d e in v o c a r a o tra.

8.3.2 Parmetros por valor y por referencia


L a fo rm a d e p a s a r p a r m e tro s d e u n a fu n c i n a o tra q u e s e h a e s ta d o e m p le a n d o
en lo s e je m p lo s e x p lic a d o s h a s ta a h o ra s e d e n o m in a p a so p o r v a lo r. E n e s te tip o
d e p a so d e p a r m e tro s, las fu n c io n e s lla m a d a s re c ib e n a trav s d e lo s p a r m e tro s
n ic a m e n te c o p ia d e l c o n te n id o d e lo s a rg u m e n to s y n o tie n e n la c a p a c id a d de
m o d ific a r s u v a lo r. V eam os u n e je m p lo .

Ej e m p l o 8.9 Realizar una funcin que intercam bie dos valores entre s
# i n c l u d e < s t d i o . h>
v o i d i n t e r c a m b i o ( i n t x,

i n t y)

{
in t

aux;

aux=x;
x=y;

(c o n tin a )

www.FreeLibros.me

216

Captulo 8

Funciones (prog ram acin m odular)

(c o n tin u a c i n )

y=aux;
}
void main()
{
i n t n 1, n 2 ;
scanf("%d %cT, &n1 ,&n 2 ) ;
i n t e r c a m b i o (n 1 , n 2 ) ;
p r i n t f ( uLos v a l o r e s son n 1 = %d y n 2 = %c/", n 1 , n 2 ) ;
}

C a b e re c o rd a r a q u n o s re fe rim o s c o n p a r m e tro s y a rg u m e n to s: p a r m e tro s


so n la s v a ria b le s q u e s e u tiliz a n e n la fu n c i n d e i n t e r c a m b i o e n e ste e je m p lo
x y y m ie n tra s q u e lo s a rg u m e n to s s o n lo s v a lo re s c o n lo s q u e s e h a c e la
lla m a d a o in v o c a c i n d e la fu n c i n {ni y n 2 ) d e c la ra d o s e n el main d e e s te m is m o
e je m p lo .
L a fu n c i n main s o lic ita d o s n m e ro s al u s u a rio y lo s re c ib e e n m y n 2 . S u p o n g a
q u e el u s u a rio d e c id e te c le a r 9 y 10. main p a s a c o m o a rg u m e n to s a m y n 2 a la
fu n c i n d e in te rc a m b io , la c u a l al e je c u ta rs e re c ib e el 9 a trav s d e x y el 10 a
trav s d e y, y lo s in te rc a m b ia . A l te rm in a r d e e je c u ta rs e la fu n c i n i n t e r c a m b i o ,
main im p rim e lo s v a lo re s d e m y n 2 . E n p a n ta lla a p a re c e ra :
Los v a l o r e s son n 1 = 9 y n 2 =

10

E n e s te e je m p lo es p o sib le o b s e rv a r lo q u e s e e x p lic an tes: la fu n c i n


i n t e r c a m b i o n o tie n e e l p o d e r d e m o d ific a r lo s v a lo re s d e lo s a rg u m e n to s, s lo
los u tiliz a . E s to s e d e b e a q u e c u a n d o u n p a r m e tro e n tra p o r v a lo r a u n a fu n c i n ,
sta tie n e a c c e s o s lo a u n a c o p ia d e lo q u e v a le el a rg u m e n to , p e ro s in a c c e d e r a
la lo c a lid a d d e m e m o ria d o n d e e s t a lm a c e n a d o el d a to . E n el e je m p lo , la fu n c i n
i n t e r c a m b i o re c ib i s lo c o p ia d e lo s v a lo re s d e m y n 2 , y a u n q u e in te rc a m b i los
p a r m e tro s , lo s a rg u m e n to s p e rm a n e c ie ro n c o n su m is m o v a lo r u n a v e z fin a liz a d a
la fu n c i n y d e re g re s o e n el main.
Parm etros p o r referencia

E l p a so d e p a r m e tro s p o r re fe re n c ia im p lic a u tiliz a r lo s o p e ra d o re s & y *. El


o p e ra d o r & s e a n te p o n e a u n a v a ria b le , d a n d o c o n e llo a c c e s o a s u d ire c c i n

www.FreeLibros.me

8.3 Funciones con paso d e parm etros

217

de m e m o ria a sig n a d a . S e u tiliz a e n lo s a rg u m e n to s p a ra p a s a rle p o r re fe re n c ia


d ic h a v a ria b le . E l e je m p lo c l s ic o d e u n a fu n c i n d e e s te tip o es s c a n f , d o n d e los
v alo res in tro d u c id o s p o r m e d io d e l te c la d o s o n a lm a c e n a d o s p o r re fe re n c ia en
la v a ria b le o v a ria b le s in d ic a d a s ; c u a n d o s e u tiliz a la fu n c i n , s e le lla m a c o n el
o p e ra d o r & a n te s d e l id e n tific a d o r d e c a d a v a ria b le .
s c a n f ( ' t o % * i ' , &a, &b, &c ) ;
L u eg o d e re c ib ir las v a ria b le s a rg u m e n to , lo q u e s e a lm a c e n a e n e lla s p e rm a n e c e
in c lu so d e sp u s d e fin a liz a d a la fu n c i n , d a d o q u e p a s a ro n p o r re fe re n c ia .
E l o p e ra d o r * e s u n a p u n ta d o r q u e a p u n ta a la d ire c c i n d e la v a ria b le p a sa d a
c o m o a rg u m e n to . S e u tiliz a ta n to e n la d e c la ra c i n d e lo s p a r m e tro s fo rm a le s
d e la fu n c i n c o m o e n el c u e rp o d e la m is m a . D e b e a p a re c e r a n te s d e l n o m b re de
un p a r m e tro fo rm a l e n la c a b e c e ra p a ra in d ic a r q u e d ic h o p a r m e tro s e r p a sa d o
p o r re fe re n c ia , y d e b e a p a re c e r e n el c u e rp o d e la fu n c i n a n te p u e s to al n o m b re
d e u n p a r m e tro fo rm a l p a ra a c c e d e r al v a lo r d e la v a ria b le e x te rn a a la fu n c i n y
re fe re n c ia d a p o r el p a r m e tro fo rm a l.
O b se rv e el sig u ie n te e je m p lo , q u e es u n a v e rs i n d e l p ro g ra m a a n te rio r. A q u se
u tiliz a el p a so p o r re fe re n c ia , lo c u a l lu e g o d e la e je c u c i n p re s e n ta re su lta d o s
d ife re n te s a lo s d e la v e rs i n c o n p a so d e p a r m e tro s p o r valo r:

E je m p lo 8.10 Realizar una funcin que intercambie dos valores entre s,


utilizando parm etros por referencia
# i n c l u d e < s t d i o . h>
v o id i n t e r c a m b i o ( i n t *x, i n t *y)
{

}
void main()

{
in t n 1,n 2 ;
(c o n tin a )

www.FreeLibros.me

218

Captulo 8

Funciones (prog ram acin m odular)

(continuacin)
scanf("%d %cT, &n1 ,&n 2 ) ;
inte rca m bio(& n 1 , &n2 ) ;
p r i n t f ( " L o s n ue vo s v a l o r e s son n 1 = %d y n 2 = *td", n 1 , n 2 ) ;
}

L a e je c u c i n d e l p ro g ra m a es ig u a l al p ro g ra m a a n te r io r in ic ia e n el main
so lic ita n d o d o s v a lo re s q u e s e a lm a c e n a n e n m y n 2 . S u p o n g a q u e el u su a rio
te c le a 5 y 8. E sta s v a ria b le s s o n e n tre g a d a s a la fu n c i n i n t e r c a m b i o , y c o m o
p a sa n p o r re fe re n c ia , d e e s e p u n to e n a d e la n te lo q u e su c e d a c o n x y y d e n tro d e la
fu n c i n a fe c ta r d ire c ta m e n te a lo s a rg u m e n to s es d e cir, a m y n 2 , p o r lo q u e
al fin a liz a r la fu n c i n el m e n s a je q u e s e m o s tra r e n p a n ta lla ser:
Los n ue vo s v a l o r e s son n1 = 8 y n2 = 5
O b s e rv e q u e los v a lo re s s e in v irtie ro n : a h o ra m a p a re c e c o n 8 y n 2 c o n 5. O tra
c o n sid e ra c i n q u e s e d e b e h a c e r es q u e u n a fu n c i n p u e d e re c ib ir a m b o s tip o s
de p a r m e tro s . E n se g u id a s e p re s e n ta u n e je m p lo d e fu n c i n q u e u tiliz a el p rim e r
p a r m e tro p o r v a lo r y el se g u n d o p o r re fe re n c ia , lo q u e im p lic a q u e c u a lq u ie r
v a lo r q u e p a s e a la fu n c i n a trav s d e a n o p o d r s e r m o d ific a d o , m ie n tra s q u e lo
q u e su c e d a c o n b d e n tro d e la fu n c i n a fe c ta r d ire c ta m e n te al a rg u m e n to q u e se
c o lo q u e e n s u lugar.
Ej e m p l o 8.11 Realizar una funcin que intercambie dos valores entre nmeros,
utilizando un parmetro por valor y otro por referencia
void f u n c f i n t a , i n *b)
{
a=a+5;
*b= *b +2;
}
vo id m a i n ( )
{
i n t x,y;
scanf("%d %c/", &x,&y);
f u n c f x , &y ) ;
p r i n t f ( " E l v a l o r de x e s de %d y e l de y e s de %c/", x , y ) ;
}

www.FreeLibros.me

8.3 Funciones con paso d e parm etros

L a fu n c i n

mai n

s o lic ita d o s n m e ro s al u su a rio , lo s c u a le s r e c ib e e n x y y

re sp e c tiv a m e n te . S u p o n g a q u e lo s v a lo re s s o n 3 y 7;
a rg u m e n to s a la fu n c i n

func,

func

al

mai n

main

lo s p a s a c o m o

q u e lo s re c ib e a trav s d e su s p a r m e tro s

tal m o d o q u e a re c ib e s lo el v a lo r d e 3, p e ro
y

219

le s u m a 5 a a y ta m b i n s u m a 2 a

b.

a y b,

de

re c ib e la d ire c c i n d e l a rg u m e n to

S e te rm in a la fu n c i n y s e re g re sa

a c o n tin u a r c o n la s ig u ie n te ln e a , q u e c o n siste e n im p rim ir el m e n sa je ;

q u e d a ra d e la s ig u ie n te m an e ra:
El

v a l o r de x e s de 3 y e l

de y e s de 9

C o m o x e n tr p o r v a lo r n o s e a fe c t s u d a to o rig in a l; e n c a m b io y e n tr p o r
re fe re n c ia y c u a lq u ie r m o d ific a c i n al p a r m e tro

le a fe c ta . P o r e llo , al c o n c lu ir

la fu n c i n , e in c lu s o fu e ra d e e lla , y te r m in c o n 9.

E je rc ic io s re s u e lto s

E j e r c i c i o 8 .1 Realizar un programa que permita al usuario escoger una


operacin: el factorial de un nmero, la potencia indicada
de un nm ero o im prim ir una tabla de m ultiplicar

Funcin m

a in

Descripcin
In v o ca r la fu n c i n

men.

In v o ca r la fu n c i n se g n la o p c i n e le g id a .
In v o ca r u n a fu n c i n d e a c u e rd o c o n la e le c c i n .
C o n tin u a r m ie n tra s el u s u a rio a s lo d e cid a.

Variabl es
Nombre

Tipo

Uso

opc

Entero

P a r a a l m a c e n a r e l v a l o r de l a

f u n c i n d es eada.

R e a liz a las in v o c a c io n e s a la s fu n c io n e s, s e in ic ia lla m a n d o la fu n c i n

men

re c ib e el n m e ro d e la fu n c i n q u e s e d e s e a c alcu lar.
(contina)

www.FreeLibros.me

220

Captulo 8

Funciones (prog ram acin m odular)

[continuacin)

Funcin m e n
Descripcin
P re se n ta r la s c u a tro o p c io n e s q u e el u s u a rio p u e d e elegir.
L ee r el v a lo r d e la o p c i n .
R e p e tir la s d o s a c c io n e s a n te rio re s m ie n tra s n o s e e lija u n v a lo r e n tre 1 y 4 ,
in clu siv e.
R e g re sa r a la fu n c i n m ain e l v a lo r e le g id o .
V a ria b le s
N o m b re

T ip o

U so

Op

Entero

A lm a c e n a l a o p e r a c i n d e s e a d a .

Funcin

fa c to r ia l

Descripcin
S o lic ita r u n n m ero .
L e e r el n m ero .
C a lc u la r e l fa c to ria l m u ltip lic a n d o e l n m e ro p o r to d o s su s a n te c e so re s h a s ta 1.
Im p rim ir el fa c to ria l.
V a ria b le s
N o m b re

T ip o

U so

num

Entero

A lm a c e n a e l c l c u l o d e l f a c t o r i a l .

Funcin p

o te n c ia

Descripcin
S o lic ita r la b a s e y el e x p o n e n te .
L e e r b a s e y e x p o n e n te .
C a lc u la r la p o te n c ia m u ltip lic a n d o la b a se , ta n ta s v e c e s c o m o lo in d iq u e el
ex p o n e n te .

www.FreeLibros.me

8.3 Funciones con paso d e parm etros

Im p rim ir la p o te n c ia .
Vari abl es
Nombre

Tipo

Us o

Entero

Al macena e l

Entero

Al macena l a b a s e de l a

tmp

Entero la rg o

A c u m u l a d o r de m u l t i p l i c a c i o n e s de l a

fa c to ria l.
potencia.
base por

s misma.
Entero

Funcin

V a r i a b l e de c o n t r o l qu e c u e n t a l a

re p e tici n .

ta b la

Descripcin
S o lic ita r el n m e ro d e la ta b la y el lm ite .
L ee r el n m e ro y el lm ite .
Im p rim ir la ta b la d e sd e 1 h a s ta el lm ite .
P re g u n ta r si c a lc u la o tra ta b la d e m u ltip lic a r o re g re s a al m e n p rin c ip a l.
L ee r la o p c i n .
R e p e tir la ta b la d e m u ltip lic a r m ie n tra s el u s u a rio a s lo d e te rm in e .
Variables
Nombre

Tipo

Uso

Entero

T a b l a de m u l t i p l i c a r .

lim it

Entero

I n d i c a h a s t a qu nmero s e m o s t r a r l a

tabla

de m u l t i p l i c a r .
Entero

V a r i a b l e de c o n t r o l que toma l o s
1 hasta

v a l o r e s desde

lim it.

Codificacin
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

v o i d f a c t o r i a l ()

{
(c o n tin a )

www.FreeLibros.me

222

Captulo 8

Funciones (prog ram acin m odular)

(continuacin)
in t

num;

double

fa ct;

c l r s e r f );
p r i n t f ( " \ n \ n \ t F a c t o r i a l \ n u) ;
p r i n t f ( u\ t I n t r o d u c e

un n u m e r o :

");

s c a n t ( U96 d " , &num) ;


fact= 1;
f o r ( ;num>0 ;num- -)
fa ct

*=

num;

p r i n t f ( n\ n \ t e l

resu lta d o es:

%. 0 1 f \ n \ n " , f a c t ) ;

}
vo id p o t e n c ia f)

{
in t

b ,p ,i;

double

tmp;

c lrs c rf);
p r i n t f ( u\ n \ n \ t P o t e n c i a \ n " ) ;
p r i n t f ( \tIntroduce l a
s c a n f ( u%du,

base:

&b);

p r i n t f ( " \n\tIntroduce l a
s c a n f ( n%du,

");

potencia:

");

&p);

tmp=b;

f o r ( i = 1 ; i< p ; i++)
tmp*=b;
p r i n t f ( u\ n \ t L a p o t e n c i a

de

%c/ a

la

%c/

es:

}
void t a b la ( )

{
in t

n,lim it,i;

c l r s c r f );
p r i n t f ( u\ n \ n \ t T a b l a
p rin tf("\tD e

de m u l t i p l i c a r \ n " );

q u e n u me ro e s l a

tab la:

");

p r i n t f ( n \ t H a s t a q ue numer o m o s t r a r a :

) ;

s c a n f ( 096dB, & n ) ;

s c a n f f "%cT,

& lim it);

f o r ( i = 1; i < = l i m i t ;

i ++)

www.FreeLibros.me

% .01f.\n\n",

b,p,

tmp);

8.3 Funciones con paso d e parm etros

p r i n t f f " \ n \ n \ t 96d x %c/ = 96d\n" , i ,

n,

223

i* n );

}
i n t menu()

{
in t

op=Q;

c lrs c rf);
p r i n t f f " \ n \ n \ t M e n u . \ n H) ;
p r i n t f f " \n\t1)

F a c t o r i a l . \ n " );

p r i n t f f " \n\t2)

P o t e n c ia . \ n " );

p r i n t f f " \n\t3)

T a b l a de m u l t i p l i c a r a n " ) ;

p r i n t f f " \n\t4)

S a l i r . \ n ");

w h i l e fop<1 || op >4)

{
p rin tff"

\n\t

scanf("%d",

> ");

&op);

}
r e t u r n op;

}
i n t m ainf)

{
in t

opc =

0;

w h i l e ( o p c l =4)

{
o p c =menu( ) ;
iffo p c

== 1 )

{
fa c to ria lf);

}
else i f f o p c

== 2 )

{
p o t e n c ia f );

}
else i f

( o p c == 3)

{
ta b la f);

(c o n tin a )

www.FreeLibros.me

224

Captulo 8

Funciones (prog ram acin m odular)

(continuacin)
}
getch();

}
p rin tf

("\n \n \n \t adis

) ;

getch();
return

0;

Explicacin
L a e je c u c i n d e l p ro g ra m a s e in ic ia e n la fu n c i n p rin c ip a l c o n la in v o c a c i n d e la
fu n c i n men. E l c o n tro l v a a e s ta fu n c i n y s e m u e s tra n c u a tr o o p c io n e s a e sc o g e r
p o r el u su a rio ; d e sp u s d e e le g ir u n a, el v a lo r c o rre s p o n d ie n te s e d e v u e lv e al
p ro g ra m a p rin c ip a l. E n c a s o d e q u e el u s u a rio te c le e u n v a lo r q u e n o e s t e n tre 1 y
4, el m e n s e re p e tir .
U n a v e z e le g id a la o p c i n , s e in v o c a r a la fu n c i n c o rre s p o n d ie n te o s e te rm in a r
la e je c u c i n d e l p ro g ra m a si s e e lig i 4 . E n c a s o d e lla m a rs e a u n a fu n c i n , s ta se
e je cu ta; al fin aliz a r, s e lle v a el c o n tro l a la fu n c i n p rin c ip a l, s e in v o c a la fu n c i n
men y s e re p ite n lo s p aso s.
E n c a s o d e e le g ir el n m e ro 4 , s e im p rim e la p a la b ra a d i s y te rm in a la
e je c u c i n d e l p ro g ra m a .

Ejecucin
M

e n u.

F a cto ria l.

Potencia.

T a b l a de m u l t i p l i c a r
S a lir.

>1

www.FreeLibros.me

8.3 Funciones con paso d e parm etros

F a cto ria l
I n t r o d u c e un nmero:
E l r e s u l t a d o es:

24

e n u.

F a cto ria l.

Potencia.

T a b l a de m u l t i p l i c a r

S a lir.

Adis.

Eje r c ic io 8.2 Escribir un programa con una funcin que realice las siguientes
operaciones con un nmero: raz cuadrada, cuadrado y cubo.
M ostrar el resultado en forma de tabla, con los nm eros del
1 al 10
Descripcin
G e n e ra r lo s n m e ro s d e l 1 al 10.
In v o ca r la fu n c i n c o n c a d a u n o d e lo s n m e ro s d e l 1 al 10.
Im p rim ir el re su lta d o .
Tabla d e p a r m e t r o s
Nombre

Tipo

Uso

Entero

Parmetro p o r v a l o r p a r a l o s

ra z

Peal

Parmetro p o r r e f e r e n c i a p a r a c l c u l o

valores del

uno a l

diez.

de p o t e n c i a \ .

(c o n tin a )

www.FreeLibros.me

226

Captulo 8

Funciones (prog ram acin m odular)

(continuacin)
Tabl a d e p a r m e t r o s
Nombre

Tipo

Uso

c uad

Entero

Parmetro p o r r e f e r e n c i a p a r a c l c u l o

de p o t e n c i a 2.

cubo

Entero

Parmetro p o r r e f e r e n c i a p a r a c l c u l o

de p o t e n c i a 3.

Codificacin
l * F u n c i o n e s co n p a r m e t r o s p o r v a l o r * /
M o s t r a r una t a b l a
potencias \,

H include

<stdio.h >

Uinclude

<c o ni o. h >

ftinclude

<math.h>

c on l o s nmeros d e l
3

(ra iz

cuadrada,

v o i d p o t e n c i a s f i n t n, f l o a t * r a i z ,

in t

1 al

d i e z c on s u s r e s p e c t i v a s

cuadrado y cubo).

*cuad,

in t

*cubo)

{
*raiz= sq rt(n);
*cuad=n*n;
*c ubo=pow(n,3);

}
mai n( )

{
in t i,

cu ad ,

c ub o;

float r a i z ;
c l r s c r ( );
p r i n t f ( " \ n \ t numero\t r a i z \ t c u a d r a d o
for

c u b o \ n m) ;

( i = 1 ; i < = 1Q;i++)

{
p o t e n c i a s (i , & r a i z , &c u ad ,& cu b o);
p r i n t f ( * \ t%6d %6 . 2 f %6d 9e6d\ n , i , r a i z , c ua d , c ub o) ;

}
getchf);
return

0;

www.FreeLibros.me

*/

Resumen

227

Explicacin
S e m u e s tra el e n c a b e z a d o d e la ta b la y, c o n el c ic lo

for,

s e g e n e ra n lo s n m e ro s

del 1 al 10 (q u e es el n m e ro d e o c a sio n e s a lla m a r la fu n c i n

p o t e n c i a s ).

E ste

c ic lo c o n tie n e d o s in s tru c c io n e s . L a p rim e ra lla m a la fu n c i n , c o n el s m b o lo


& a n te p u e s to a los p a r m e tro s d e re fe re n c ia (q u e e n e s e m o m e n to p u e d e n te n e r
c u a lq u ie r v a lo r). A l e je c u ta rs e p o te n c ia s s e re a liz a n la s o p e ra c io n e s re s p e c tiv a s y
se a lm a c e n a n e n la d ire c c i n d e m e m o ria c o rre s p o n d ie n te a c a d a p a r m e tro . L a
s ig u ie n te in s tru c c i n m u e s tra el v a lo r d e la s v a ria b le s, q u e s o n la ra z c u a d ra d a ,
el c u a d ra d o y el c u b o d e c a d a n m ero .
S e d e fin i la fu n c i n p o te n c ia s c o n c u a tro p a r m e tro s: , q u e es u n p a r m e tro p o r
v alo r;

r a z , cuad

c ub o

q u e s o n p a r m e tro s p o r re fe re n c ia . A l s e r in v o c a d a la

tie n e u n n m e ro y el re s to lle v a n la d ire c c i n d e m e m o ria e n q u e s e e n c u e n tra n .


L a p rim e ra o c a s i n q u e s e in v o c a la fu n c i n

potencias,

lle v a el v a lo r d e 1 y

los d e m s p a r m e tro s tie n e n a lm a c e n a d a b a s u ra h a s ta q u e s e e je c u ta la o p e ra c i n


y a lm a c e n a n el re s u lta d o , q u e al s e r p a r m e tro p o r re fe re n c ia s e a lm a c e n a e n la
d ire c c i n q u e tie n e c a d a v a ria b le .

Ejecucin
numero

ra z

c u a d r ad o

cubo

1.00

1.41

1.73

27

2.00

16

64

2.24

25

125

2.45

36

216

2.65

49

343

2.83

64

512

3.00

81

729

10

3. 16

100

1000

Resum en
E n e s te c a p tu lo s e a n a liz la p ro g ra m a c i n m o d u la r, u n a t c n ic a q u e c o n s is te e n
re s o lv e r p o r s e p a ra d o u n p ro b le m a , d a n d o o rig e n a la c re a c i n d e m d u lo s
(p e q u e o s p ro g ra m a s lla m a d o s fu n c io n e s).

www.FreeLibros.me

228

Captulo 8

Funciones (prog ram acin m odular)

C a d a m d u lo o fu n c i n s e d is e a , s e c o d ific a y s e p ro c e s a d e m a n e ra
in d e p e n d ie n te .
E l u so d e fu n c io n e s p erm ite:
R e d u c ir la c o m p le jid a d d e l p ro g ra m a ( d iv id e y v e n c e r s ).
E lim in a r c d ig o d u p lic a d o .
C o n tro la r f c ilm e n te lo s e fe c to s d e lo s c a m b io s.
O c u lta r d e ta lle s d e im p le m e n ta c i n .
R e u tiliz a r el c d ig o .
F a c ilita r la le g ib ilid a d d e l c d ig o .
H a y fu n c io n e s d e d o s tip o s: la s in te rn a s o p re d e fin id a s, y la s e x te rn a s o d ise a d a s
p o r el p ro g ra m a d o r.
In d e p e n d ie n te m e n te d e to d a s la s fu n c io n e s, main d e b e e x is tir s ie m p re e n u n
p ro g ra m a e n C , d a d o q u e es la fu n c i n p rin c ip a l y s lo a p a rtir d e s ta s e p o d r
h a c e r u so d e la s d e m s.
L as fu n c io n e s p u e d e n s e r d ise a d a s d e d ife re n te s m a n e ras:
S in p a so d e p a r m e tro s.
C o n p a so d e p a r m e tro s.
Q u e re g re s e n valor.
Q u e n o re g re s e n valor.
C o m b in a n d o la s a n te rio re s.
U n p ro g ra m a p u e d e te n e r v a ria b le s lo c a le s o g lo b a le s . V a ria b le lo c a l es a q u e lla
q u e s e d e c la ra d e n tro d e c u a lq u ie r fu n c i n y p u e d e s e r u tiliz a d a s lo p o r d ic h a
fu n ci n . L as v a ria b le s g lo b a le s s e d e c la ra n fu e ra d e c u a lq u ie r fu n c i n y, se g n
d o n d e s e d e c la re n , v a ria s fu n c io n e s p u e d e n te n e r a c c e s o a e llas.
U n a fu n c i n p u e d e te n e r p a so d e p a r m e tro s p o r v a lo r o p o r re fe re n c ia . L os
p a r m e tro s p o r v a lo r s o n a q u e llo s e n lo s c u ales la fu n c i n re c ib e s lo u n a
c o p ia d e l c o n te n id o d e lo s a rg u m e n to s. L o s p a r m e tro s p o r re fe re n c ia s o n
a q u e llo s a trav s d e lo s c u ales la fu n c i n re c ib e la d ire c c i n e n m e m o ria de
los a rg u m e n to s , h a c ie n d o p o s ib le la m o d ific a c i n d e e sto s d a to s d e n tro
de la fu n c i n y m a n te n ie n d o lo s c a m b io s al te rm in a r la e je c u c i n d e la
ftin c i n m e n c io n a d a .

www.FreeLibros.me

Evaluacin

229

Evaluacin
I. C onteste las siguientes preguntas:
1. T c n ic a q u e c o n s is te e n d iv id ir u n p ro b le m a e n p ro b le m a s m s p e q u e o s
p a ra re s o lv e rlo s p o r s e p a ra d o _______________________________________.

2 . R e s o lv e r u n p ro b le m a d e lo g e n e ra l a lo p a rtic u la r sig n ific a r e a liz a r un


d is e o _______________________________________ .
3 . C o n ju n to d e in s tru c c io n e s q u e s e a g ru p a n b a jo u n m is m o n o m b re

4 . M e n c io n e tre s v e n ta ja s q u e el u so d e fu n c io n e s o fre c e
-----------------------------, -----------------------------y --------------------------------.
5 . E l u so d e la fu n c i n main es o p c io n a l? ___________________ .
6 . F u n c io n e s q u e n o re q u ie re n in fo rm a c i n d e s u e n to rn o y p a ra su
e je c u c i n b a s ta c o n s u lla m a d a : ___________________ .
7 . F u n c io n e s q u e c o m o re s u lta d o d e s u e je c u c i n g e n e ra n u n v a lo r
e n tre g n d o lo a s u e n to rn o : ___________________ .
8 . A las v a ria b le s q u e s e d e c la ra n d e n tro d e u n a fu n c i n (y q u e p o r
ta n to p u e d e n s e r u tiliz a d a s s lo p o r e s a fu n c i n ) s e le s c o n o c e c o m o

9 . Q u es u n a v a ria b le g lo b a l? _______________________________________.

10. C u l d e los s ig u ie n te s s e ra el p ro to tip o d e u n a fu n c i n c o n p a so de


p a r m e tro s p o r v a lo r q u e n o re g re sa v a lo r?
a) i n t f 1 ( i n t x ) ;
b) v o id f 1 ( ) ;

c) void f

(int x );

11. C u l d e los s ig u ie n te s s e ra el p ro to tip o d e u n a fu n c i n s in p a so de


p a r m e tro s q u e n o re g re s a v a lo r?
a) i n t f 1 ( i n t x ) ;
b) v o id f

( );

c) void f 1 ( i n t x ) ;

12. C u l d e los s ig u ie n te s s e ra e l p ro to tip o d e u n a fu n c i n c o n p a so de


p a r m e tro s y q u e re g re s a v a lo r?
a) i n t f 1 ( i n t x ) ;
b) v o id f 1 ( ) ;

www.FreeLibros.me

c) void f

(int x );

230

Captulo 8

Funciones (prog ram acin m odular)

13. L as fu n c io n e s p u e d e n s e r d ise a d a s p o r ___________


o p u e d e n s e r ______________________________________
14. E x p liq u e la d ife re n c ia e n tre p a r m e tro y a rg u m e n to .

1 5. U n a c o n s ta n te o u n a e x p re s i n a ritm tic a p o d ra n se r p a r m e tro s


fo rm a le s ?
S (

No (

16. L o s p a r m e tro s p o r ___________________ re c ib e n u n a c o p ia d e lo q u e


v a le n lo s a rg u m e n to s.
17. L o s p a r m e tro s p o r ____________________ re c ib e n la d ire c c i n e n m e m o ria
d e lo s a rg u m e n to s.

n . Realice el siguiente ejercicio.


R e a lic e u n a fu n c i n q u e p e rm ita a lm a c e n a r u n s m b o lo . E n o tra fu n c i n
d e fin a la s c o o rd e n a d a s d e u n re c u a d ro y c o d ifiq u e o tra q u e p e rm ita h a c e r un
re c u a d ro c o n d ic h o s m b o lo . C o d ifiq u e el p ro g ra m a p rin c ip a l q u e in v o c a la
p rim e ra fu n c i n .

Ejercicios propuestos
1. R e a liz a r u n a fu n c i n q u e m u e s tre lo s d a to s d e l u su a rio : n o m b re , d ire c c i n ,
e d a d , n m e ro d e h e rm a n o s, a fic io n e s.
2 . R e a liz a r c u a tro fu n c io n e s p a ra c a lc u la r el c u a d ra d o d e u n n m e ro : u n a de
ellas s in p a r m e tro s , o tra q u e d e v u e lv a el re s u lta d o a la fu n c i n p rin c ip a l, o tra
co n p a r m e tro s p o r v a lo r y q u e d e v u e lv a el re s u lta d o a la fu n c i n p rin c ip a l,
y fin a lm e n te o tra c o n p a r m e tro s: u n o d e v a lo r p a ra el n m e ro y o tro p o r
re fe re n c ia p a ra el re su lta d o .
3 . R e a liz a r u n a fu n c i n q u e le a h a s ta 10 v a lo re s p a ra u n a rre g lo , e n v i n d o lo
c o m o p a r m e tro , y c a lc u le e n o tra fu n c i n el p ro m e d io , el v a lo r m ay o r, el
v alo r m e n o r y lo s m u e s tre e n la fu n c i n p rin c ip a l.
4 . R e a liz a r u n a fu n c i n q u e d ib u je e n la p a n ta lla u n m a rc o c o n a ste risc o s.

www.FreeLibros.me

Ejercicios resueltos

A c o n tin u a c i n s e m u e s tra n v a rio s eje rcicio s c o d ific a d o s e n le n g u a je C,


o rg a n iz a d o s p o r e s tru c tu ra d e c o n tro l y lle v a n u n a b re v e d e sc rip c i n .
A lg u n o s e je rc ic io s s o n a p lic a c io n e s d e c a so s d e c a rre ra s d e in g e n ie ra ,
p a ra p ro m o v e r el in te r s d e lo s e stu d ia n te s.

9.1 Secuenciacin
E je rc ic io s q u e m u e s tra n el u so d e la e s tru c tu ra d e c o n tro l s e c u e n c ia c i n .

9.1.1 Calcular el rea de una balastra


/*C l c u l o d e l

volumen de una b a l a s t r a */

t f i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

www.FreeLibros.me

232

Captulo 9

Ejercicios resueltos

void main()

{
textbackground(YELLOW);
textcolor(B LU E);
c lrs c rf);
f loat b , h , l , v ;
p r i n t f ( " C a l c u l a r e l volumen de l a
printf("Dam e l a
scanf("% f",

b a l a s t r a de 240 v o l t s \ n " ) ;

b a s e \ n " );

& b);

printf("Dam e l a
s c a n f f "% f",

a lt u r a \ n " );

& h);

printf("Dam e l a

l o n g i t u d \ n " );

s c a n f ( ' % f , & 1 ) ;
v=b*h*l;
p rin tf("e l

volumen de l a

b a l a s t r a e s %.2 f " , v ) ;

getchf);

9.1.2 Calcular el pago a realizar por nmero


de apagadores y contactos
/*Precio por s a lid a e l c t r i c a * I
t f i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
#de fine s a l i d a

100

void main()

{
textbackground(YELLOW);
textcolor(R ED );
c l r s c r f );
float p r e c i o , c ;
p r i n t f ("P recio por s a lid a
printf("Dam e l a

e l e c t r i c a \ n " );

c a n t i d a d de s a l i d a s

tomando en c u e n t a que c a d a a p a g ad o r y

c o n t a c t o e s una s a l i d a \ n " ) ;
scanf("% f",

& c);

precio= salida*c;
p r i n t f ( " e l p r e c io por l a s

s a l i d a s es % f " ,

g e t c h f );
}

www.FreeLibros.me

p recio);

9.1 Secuenciacin

233

9.1.3 Calcular las coordenadas del vrtice de una parbola


/*Programa p a r a o b t e n e r l a s c o o r d e n a d a s d e l

vrtice

de una p a r b o l a */

# i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
v o id main()

{
c l r s c r ( );
float a , b , c , x , y ;
prin tf("P rogram a para c a lc u la r e l
printf("Dam e e l

vrtice

de una p a r a b o l a \ n " ) ;

coeficiente d e l

termino c u a d r a t ic o

coeficiente d e l

termino l i n e a l

") ;

s c a n f ( " 96 f " , & a ) ;


p r i n t f ( "Dame e l

") ;

scanf("*6f",&b);
p r i n t f ( "Dame e l

termino in d e p e n d ie n te

") ;

scanf("%f",&c);

x=-b/(2*a ) ;
y=((4*a*c)-(b*b))/(4*a);
p rin tf("E l

vrtice

e s t a en l a

coordenada ( % 5 . 2 f , * 5 . 2 f ) " , x , y ) ;

getchf);

9.1.4 Calcular la m edida de los ngulos complementario


y suplem entario, dado el valor de un ngulo
/* n g u l o s c o m p l e m e n t a r i o s y s u p l e m e n t a r i o s

*/

# i n c l u d e < s t d i o .h>
t t i n c l u d e < c o n i o .h>
v o id main()

{
clrscrf);

float a ng , ang_ sup, ang_ com;


p r i n t f ( "Angulos complementarios y s u p le m e n t a r i o s \ n " );
p r i n t f ( "Dame l a

medi da de l o s

n g u l o s en g r a d o s d e c i m a l e s

scanf("% f",&ang);
ang_com=90-ang;
ang_sup= 1 8 0 - a n g ;
p r i n t f ( "Su n g u l o c o m p l e m e n t a r i o e s % . 2 f \ n " , a n g _ c o m ) ;

www.FreeLibros.me

") ;

234

Captulo 9

printf("S u

Ejercicios resueltos

n g u l o s u p l e m e n t a r i o e s 96. 2 f \ n " , a n g _ s u p ) ;

getchf);

9.1.5 Calcular la magnitud de un vector dados


sus com ponentes
/* M a g n i t u d de v e c t o r e s en e l e s p a c i o

*/

#include<stdio.h>
tinclude<conio.h>
# i n c lu d e< ma th . h>
v o id main()

{
c l r s c r f );
float c1 t c 2 , c 3 , m a g ;

p r i n t f ( " M a g n i t u d de v e c t o r e s en e l e s p a c i o \ n ,,) ;
p r i n t f ( " Dame l a

lera,

componente

n) ;

2da.

componente " ) ;

3era.

componente

s c a n f ( "% f" , & c 1 ) ;


p rin tff"

Dame l a

s c a n f f "% f" , & c 2 ) ;


p r i n t f ( " Dame l a

");

s c a n f f "% f" , & c 3 ) ;


m a g = s q r t( c1 * c1 +c 2 *c 2+ c 3* c3 );
p r i n t f f " Su m a g n i t u d e s i g u a l

a 96 . 2 f " , m a g ) ;

getchf);

9.1.6 Calcular las ppm (partes por milln)


en una solucin
/*Programa p a r a c a l c u l a r l a s ppm de una s o l u c i n * /
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
v o id m ainf)

{
textcolor(R ED );

www.FreeLibros.me

9.1 Secuenciacin

235

t e x t b a c k g r o u n d (B L A C K ) ;
c l r s c r ( );
float ppm,s o l u t o , s o l v e n t e ;
g o t o x y f1 8 , 2 );
p r in t f f" P r o g r a m a para c a l c u l a r l a s p a rte s po r m i l l n
p r i n t f ( " \ n L a masa d e l

en una s o l u c i o n \ n " ) ;

s o l u t o y d e l s o l v e n t e deben e s t a r en l a s mismas

u n id ad e s\n ");
p rin tff"\n

Introduce l a

masa d e l

s o l u t o \ n " );

s c a n f f "%f", & s o l u t o ) ;
p r i n t f ( " \n A h o r a l a masa d e l s o l v e n t e \ n " ) ;
s c a n f f "% f", & s o l v e n t e ) ;
p p m= s o l u t o / s o l v e n t e * 1 000000 ;
p r i n t f f " \ n %f ppm",ppm);
g e t c h f );

9.1.7 Calcular el porcentaje de masa


/ * C a l c u l a r e l p o r c e n t a j e en masa*/
# i n c l u d e < s t d i o . h>
f t i n c l ude <coni o. h>
void m a in f)

{
te xtco lorfR E D );
t e x t b a c k g r o u n d (BLACK);
c l r s e r f );
f loat pm, comp, s o l u c i n ;
g o to x y f3 2 ,2 );
p rin tff"C a lu la

e l % en m a s a \ n " ) ;

p r i n t f ( " \n I n t r o d u c e l a

masa d e l

componente a c a l c u l a r \ n " ) ;

s c a n f f "% f" , &comp);


p r i n t f f " \ n A h o r a l a masa t o t a l

de l a

solu cin

-Re cuer da que l a s masas

t i e n e n qu e e s t a r en l a s mismas u n i d a d e s - \ n " ) ;
s c a n f f %f", & s o l u c i o n ) ;
pm=comp/ s o l u c i o n * 700;
p r i n t f ( " \n

p o r c i e n t o en m a s a " , p m ) ;

getchf);
}

www.FreeLibros.me

236

Captulo 9

Ejercicios resueltos

9.1.8 Calcular el nmero de ladrillos que se necesitan


/ *Nmero_de_ 1 a d r i l o s * /
# i n c l u d e < s t d i o .h>
f t i n c l u d e < c o n i o . h>
void main()

{
i n t me,ni;
c l r s c r ( );
p r i n t f ( " T e i n d i c a r e e l numero de l a d r i l l o s

que n e c e s i t a s \ n d i m e

cuantos metros cuadrados c o n s t r u i r s " );


s c a n f ( "%cT, &mc);
nl=mc*72;
p r i n t f ( " E l numero de l a d r i l l o s

que n e c e s i t a s es%d", n i ) ;

getchf);

9.1.9 Calcular el nm ero de escalones de una distancia


/ * E s c a l o n e s */
# i n c l u d e < s t d i o . h>
Uinclude<conio.h>
v o id main()

{
in t

esc,d;

c lrs c rf);
printf("Dam e l a

d i s t a n c i a h o r i z o n t a l y t e d i r e e l numero de

e s c a l o n e s \ndame l a

d ista n cia

en cm") ;

scanf("%d",&d);
es c =d /3 0 ;
p r i n t f ( " E l numero de e s c a l o n e s e s W " , e s c ) ;
getchf);

9.1.10 Separa un nm ero de cuatro dgitos en millares,


centenas, decenas y unidades
/* S e p a r a * /
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

9.1 Secuenciacin

# i n c l u d e < c o n i o . h>
void m ain()

{
i n t num;
textbackground(54);
te x tco lo r(1 5 );
c l r s c r ( );
g o t o x y ( 1 5 , 5 ) ; p r i n t f ( " I n t r o d u c e una c a n t i d a d e n t e r a de 4 d g i t o s
como mximo ") ;
scanf("%d",&num);
p r i n t f f " \ n \ n \ n E s t e numero t i e n e : " ) ;
p r i n t f f " \n\n%d u n i d a d e s de m i l l a r " , num/ 1 0 0 0 ) ;
num = numWQOQ;
p r i n t f f " \n%c/ c e n t e n a s " , num/ 1 0 0 ) ;
num=num96l 0 0 ;
p r i n t f f " \n%c/ d e c e n a s " , num/ 1 0 ) ;
num=num96l 0 ;
p r i n t f f " \n96d u n i d a d e s " , num/ 1 ) ;
num=nump6l;
getchf);

9.1.11 Calcular el campo elctrico


/*Campo e l c t r i c o * /
ftinclude

<c o ni o. h >

#i n c l u d e

<stdio.h >

v o i d mai n ()

{
e lrse r

();

float e,

f,

q;

p rin tf

( " E l programa c a l c u l a e l

p rin tf

("Dame l a

scanf r % f" ,
p rin tf

f u e r z a \ n " );

& f);

("Dame l a

scanf

campo e l e c t r i c o \ n " ) ;

carga");

& q);

e=flq;
p rin tf
getch

("El

campo e l c t r i c o e s %6 . 2 f ,

e);

();

www.FreeLibros.me

237

238

Captulo 9

Ejercicios resueltos

9.1.12 Calcular la resistencia


/ * f e s i s t e n c i a */
ttinclude

<c o ni o. h >

include

<stdio.h >

v o i d mai n ()

{
float v,

a, r;

c lrs c r

();

p rin tf

( " E l programa c a l c u l a l a

p rin tf

("Dame e l

s c a n t ( " * f m,
p rin tf

r e s is t e n c ia \ n " );

v o l t a j e \ n " );

& v);

("Dame e l

s c a n t ("%f",

am peraje\n");

& a);

r=v/a;
p rin tf
getch

("la

re siste n cia

e s %6 . 2 f o m h s " ,

r);

();

9.2 Selectiva sim ple


9.2.1

Calcular el coeficiente de variacin

/* P ro g r a m a p a r a c a l c u l a r e l

c o e f i c i e n t e de v a r i a c i n

*/

#include<stdio.h>
t t i n c l u d e < c o n i o . h>
void main()

{
c l r s c r ();
float S, X, CV;
in t

op;

p r i n t f ( " Programa p a r a c a l c u l a r e l

c o e f i c i e n t e de v a r i a c i o n \ n " ) ;

p r i n t f f " 1 .Muestra\n 2 . P o b l a c io n \ n " );


p r i n t f ("E lig e

una o p c i o n

") ;

scanf("%d",&op);
p r i n t f ( " Dame l a

m edi a

") ;

www.FreeLibros.me

9.2 Selectiva sim ple

239

s c a n f ( "% f" , & X ) ;


printf("Dam e l a

desviacin estndar

");

s c a n f f "% f" , & S ) ;


CV=S/X*100;
i f

( o p 1) p r i n t f ( " E l

c o e f i c i e n t e de v a r i a c i n m u e s t r a l es

%. 2 f % \ n " , C V ) ;
i f

( o p 2) p r i n t f ( " E l

c o e f i c i e n t e de v a r i a c i n p o b l a c i o n a l

es

%. 2f%\/7 , C V ) ;
if

((op!=1)

&& ( o p ! = 2 ) ) p r i n t f ( "Tu o p c i o n no e s t a en e l men");

getchf);

9.2.2 Calcular el producto punto de un vector


/* P r o d u c t o p u n t o de v e c t o r e s en R2 y R3 */

# i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o .h>
t t i n c l ude <mat h . h >
v o id main()

{
clrscr();
float a1 , a 2 , a 3 , b 1 , b 2 , b 3 , p r o d ;
in t

op;

p r i n t f ( " P r o d u c t o p u n t o de v e c t o r e s en R2 y R 3 \ n " ) ;
p r i n t f ("

1. E n R2\n 2 . En R 3 \ n " ) ;

p r i n t f ( " E l i g e una o p c i o n

") ;

scanf("*6d",&op);
if

(op==1 )

{
prin tf("N ota:

Usa un e s p a c i o e n t r e c a d a n u m e r o \ n " ) ;

p r i n t f ( Dame e l p r i m e r v e c t o r

") ;

s c a n f ( %f%f , & a 1 , & a 2 ) ;


p r i n t f ( " D a m e e l s egu ndo v e c t o r

");

s c a n f ("*6f%f", & b 1 , & b 2 ) ;


p r o d = s q r t ( a 1 *b 1 +a2 *b 2 ) ;
p r i n t f ( " E l p r o d u c t o p u n t o e s %. 2 f " , p r o d ) ;

www.FreeLibros.me

240

Captulo 9

Ejercicios resueltos

}
i f

(op==2)

{
p r i n t f f "N o t a : Usa un e s p a c i o e n t r e c a d a n u m e r o \ n " ) ;
p r i n t f ( " Dame e l p r i m e r

vector

") ;

s c a n f ( " 96f96f96 f " , & a 1 , & a 2 , &a3) ;


p r i n t f ( " Dame e l segu ndo v e c t o r

");

s c a n f ( " 96f96f96 f " , & b 1 , & b 2 , &b3) ;


p r o d = sq rt (a 1* b1 + a2 *b 2+ a 3* b3 );
p r i n t f ( " E l p r o d u c t o p u n t o e s %. 2 f " , p r o d ) ;

}
getch();

9.2.3 Calcular la pendiente de una recta


/* P e n d i e n t e de una r e c t a dados d o s p u n t o s

*/

t t i n c l ude <coni o. h>


#include<stdio.h>
void main()

{
c l r s c r f );
float x1 , x 2 , y 1 , y 2 , m , X ;
p r i n t f ( uP e n d i e n t e de una r e c t a d ad o s d o s p u n t o s \ n u) ;
p r i n t f f "P r i m e r a c o o r d e n a d a \ n " ) ;
p r i n t f ( " Dame l a

X de l a

lera,

coordenada

");

Y de l a

lera,

coordenada

) ;

s c a n f ( n*6f " , & x 1 ) ;


p r i n t f ( " Dame l a
s c a n f ( "% f" , &y 1 ) ;
p r i n t f ( "Segunda c o o r d e n a d a \ n " ) ;
printf("Dam e l a

X de l a

2da.

coordenada

") ;

Y de l a

2da.

coordenada

");

s c a n f ( " * f " , & x 2 );


printf("Dam e l a
scanf("% f",&y2);
X =x1 -x2;
i f

(XI =9)

www.FreeLibros.me

9.2 Selectiva sim ple

241

m=( y1-y2)/ X;
p r i n t f ( " L a p e n d i e n t e de l a

r e c t a es

}
i f

((X==Q) && ( y 1 ! =y2) )

p r i n t f ( " L a r e c t a es v e r t i c a l

\"pendiente

in d e fin id a \ " " ) ;


if ((X = = 0)

&& ( y 1 y 2 ) ) p r i n t f ( " E s un p u n t o

\"no t i e n e p e n d i e n t e \ " " ) ;

getchf);

9.2.4 Calcular la frm ula VENA


/*F r m u l a

"vena"*/

# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
void main()

{
textco lor(R E D );
t e x t b a c k g r o u n d (BLACK);
c l r s c r ( );
f loat V, E, N , A ;
c h a r op;
gotoxy(32,2);
prin tf("U so

de l a

form ula

p r i n t f ( "A)Volumen

VENA\n I n d i q u e que d e s e a c a l c u l a r : \ n " ) ;

B )E q u iv alen tes qu im icos\n ");

p r i n t f ( "C)Norm alidad

D)Gramos de s u s t a n c i a \ n " ) ;

scanf("% c",&op);
i f (op=='A ' )

{
p r i n t f ( " \n Dame l o s gramos d e l

s o lu t o \ n " );

s c a n f f "% f" , & A ) ;


p r i n t f ( " \n A h o r a l o s

e q u iva le n te s qu im icos\n ");

scanf(">6f",&E);
p r i n t f ( " \n P o r u l t i m o l a n o r m a l i d a d \ n " ) ;
scanf("*6f",&N);
V=A/(E*N);
p r i n t f ( " \ n * f L" ,V) ;

}
i f

( o p == ' B[)

www.FreeLibros.me

C aptulo 9

242

Ejercicios resueltos

p r i n t f ( " \ n Dame l o s gramos d e l

s o lu t o \ n " );

scanf("% f",&A);
p r i n t f ( " \ n Ahora e l

v o l u m e n \ n u) ;

scanf("*6f",&V);
p r i n t f ( " \ n Por ultim o l a

n o r m a li d a d \ n " );

scan ff% f,& N );


E=AI(V*N);
p r i n t f ( m\ n H f E q u i v a l e n t e s q u m i c o s " , E ) ;

}
i f

( op=='C' )

{
p r i n t f ( "\n Dame l o s gramos d e l

s o l u t o \ n " );

scanf('% f*,&A);
p r i n t f ( "\n A h o r a l o s

e q u iva le n te s quim icos\n");

scanf('% f*,&E);
p r i n t f ( " \ n Por ultim o e l

volumen\n");

s c a n f f "% f" , & V ) ;


N=A/(E*V);
p r i n t f ( m\ n H f E C / L " , N ) ;

}
i f

(o p==' D' )

{
p r i n t f ( " \ n Dame e l

volumen\n");

s c a n f ( "% f1, & V ) ;


p r i n t f ( " \ n Ahora l o s

e q u i v a l e n t e s q u i m i c o s \ n " );

scanf("*f",&E);
p r i n t f ( " \ n Por ultim o l a

n o r m a li d a d \ n " );

scanff W
96 f " , &N) ;
A=V*E*N;
p r i n t f ( " \ n % f L " ,A ) ;

}
g e tc h f);

9.2.5 Calcular las ecuaciones bsicas del gas


/*F r m u l a PV=nRT*/
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

9.2 Selectiva sim ple

243

# i n c l u d e < c o n i o . h>
Udefine R 0.0821
void m ain()

{
textco lor(R E D );
textbackground(BLACK);
c lrs c rO ;
f loat P , V , n , T;
c h a r op;
g oto xy(33,2);
p r i n t f ( " E c u a c i n d e l gas id e a l\ n Q u e desea c a l c u l a r ? \ n " );
p rin tf("\n A )P resi n

B)Volumen

C)Moles

D ) Tempera t u r a \ n " ) ;

scanf("% c",&op);
i f

( o p = = ' A 1)

{
p r i n t f ( " \n Dame l o s m o l e s \ n u) ;
s c a n f ( " * 6 f u, & n ) ;
p r i n t f ( " \n A h o r a l a

t e m p e r a t u r a (e n K ) \ n " ) ;

scanf("*6f",&T);
p r i n t f ( " \n F i n a l m e n t e e l volumen (en L ) \ n " ) ;
s c a n f ( " * 6f t' , & V ) ;
P=n*f*T/V;
p rin tf("\n % f atm ",P);

}
i f

( op = = 'f' )

{
p r i n t f ( " \n Dame l o s m o l e s \ n n) ;
s c a n f ( " 96 f " , & n ) ;
p r i n t f ( " \n A h o r a l a

t e m p e r a t u r a (e n K ) \ n " ) ;

s c a n f ( B96 f , & T ) ;
p r i n t f f " \ n Finalm ente l a p r e s i n

(en a t m ) \ n " ) ;

s c a n f f "% f" , & P ) ;


V=(n*f*T)/P;
p r i n t f ( " \n%f L " , V ) ;

}
i f

( op==' C ' )

{
p r i n t f f " \ n Dame l a

presin

(en a t m ) \ n " ) ;

scanf(">6f",&P);

www.FreeLibros.me

244

Captulo 9

p r i n t f ( " \n A h o r a l a

Ejercicios resueltos

t e m p e r a t u r a (e n K ) \ n " ) ;

s c a n t ("% f",&T);
p r i n t f ( " \ n F i n a l m e n t e e l volumen (en L ) \ n " ) ;
s c a n t ( "% f" , & V ) ;
n=(P*V) / (R*T) ;
p r i n t f ( " \n96 f m o l e s " , n ) ;

}
i f

( o p == ' D ' )

{
p r i n t f ( " \ n Dame l o s m o l e s \ n " ) ;
s c a n t f"% f",& n );
p r i n t f ( " \ n Ahora l a

presin

(en a t m ) \ n " ) ;

s c a n t ( "% f" , & P ) ;


p r i n t f ( " \ n Finalm ente e l

volumen (e n L ) \ n ") ;

s c a n t ( "% f" , & V ) ;


T=(P*V)/ ( n * R ) ;
p r i n t f ( " \n%f K " , T ) ;

}
getchf);

9.2.6 Calcular el costo indirecto de cada departam ento


de la com paa Good Mark
/*Good M a r k Company*I
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
Hdefine mon 1 20000
void main()

{
i n t m am ,m an, i ns ,dp , t o t a l ;
c l r s e r f );
p r i n t f ("C alcu la el
de l a

costo in d ir e c t o t o t a l

de c a d a d e p a r t a m e n t o

Good M a r k Company\ n " ) ;

p r i n t f ( "Depart ament o d e l que n e c e s i t a s s a b e r e l

t o t a l de su c o s t o

i n d i r e c t o \ n " );
p r i n t f ( " 1 ) d e p a r t a m e n t o de c o r t e \ n 2 ) d e p a r t a m e n t o de i m p r e s i o n \ n " ) ;
s c a n t ("%d",&dp);

www.FreeLibros.me

9.2 Selectiva sim ple

p r i n t f ( " C u a n t o fue d e l

c o s t o de manejo de m a t e r i a l e s \ n " ) ;

s c a n f ( U96d",&mam);
p r i n t f ( " C u a n t o se i n v i r t i

de m a n u f a c t u r a \ n " ) ;

scanf("%d",&man);
p r i n t f ( " C u a n t o fue d e l

c o s t o de i n s p e c c i o n \ n " ) ;

s c a n f ( tt96d"t & i n s ) ;
i f

( d p 1)

{
total=mam+man+ins+mon;
p r in t f ("E l

costo in d ir e c t o

del

d e p ar t a me nt o de c o r t e e s $%c/", t o t a l ) ;

}
i f

( d p 2)

{
total=(mam+man+ins+mon)- ( . 2 0 *(mam+man+ins+mon)) ;
p r i n t f ("E l

costo in d ir e c t o

es

del

d e p ar t a me nt o de i m p r e s i n

to ta l);

}
getch();

9.2.7 Calcular la cantidad de piedra que se necesita


para un cimiento
/*Cimientos*/
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void m ain()

{
float m,c;
i n t m3;
c l r s c r f );
p r i n t f ( "Te i n d i c a r e l a

c a n t i d a d de p i e d r a que n e c e s i t a s p a r a t u s

c i m i e n t o s , ya sean c o l i n d a n t e s o c e n t r a l e s \ n C u a n t o s
m e t r o s de c i m i e n t o s ? \ n " ) ;
s c a n f ( " W , &m);
p r i n t f (" E l

cim iento,

es c e n t r a l

o colindan te?\ncolin dante= 1\

n ce n tra l= 2 \n");
s c a n f ( n96 d " , & c ) ;

www.FreeLibros.me

245

246

Captulo 9

if

(c==1)

m3=m*1.5;

i f

(c==2)

m3=m*2;

Ejercicios resueltos

p r i n t f ( " N e c e s i t a s ^ f " ,m3,"m3 de p i e d r a " ) ;


getch();

9.2.8 Calcular el ndice de m asa muscular


l * P r o gr a ma n d i c e

de masa c o r p o r a l */

# i n c l u d e < s t d i o . h>
f t i n c l u d e < c o n i o . h>
v o id main()

{
float p e s o ,

estatura,

n d ice ;

textbackground(5);
te x tc o lo r(2) ;
c l r s c r f );
g o t o x y ( 5 , 5);
p r i n t f ( " * - * Programa p a r a c a l u l a r e l n d i c e

de masa m u s c u l a r * - * " ) ;

gotoxy(1,9);

p r i n t f ( " I n t r o d u c e t u p e s o (en k g ) :

") ;

s c a n f f "% f" , & p e s o ) ;


g o to xy( 1 , 11);
p r i n t f ( uI n t r o d u c e t u e s t a t u r a

(e n m e t r o s ) :

") ;

s c a n f f "%f", & e s t a t u r a ) ;
ind ice= peso/ ( e s t a t u r a * e s t a t u r a ) ;
goto xy(5,15);
p r i n t f ( "Tu n d i c e de masa c o r p o r a l
i f

(indice>=30)
ELEVADO,

i f

p r i n t f ( \n \n \n \n \n Cuidado!
\n

n d ice );
t u n d i c e de masa c o r p o r a l

( i n d i c e < = 1 8 . 5) p r i n t f ( " \ n \ n \ n \ n \ n C u i d a d o ! !
\n

tu n d ic e

de masa c o r p o r a l

n e c e s i t a s a l i m e n t a r t e mas) ;

( 1 8 . 5 < i n di c e> 3 0) p r i n t f ( " \ n \ n \ n \ n \ n F e l i c i d a d e s ! !


corporal

es

n e c e s ita s hacer e j e r c i c i o " );

e s demas iado BAJO


i f

es:

e s NORMAL");

g e t c h f );
}

www.FreeLibros.me

tu n d ic e

de masa

9.2 Selectiva sim ple

247

9.2.9 Determ inar el tipo de compuesto


/*alcano,

alq ueno o a l q u in o * /

Uinclude

<stdio.h >

Uinclude

< co ni o. h>

v o i d mai n ()

{
i n t h,

c,

h 1 , h2,

h3;

c lrs c r

();

p rin tf

( " E l programa i n d i c a

si

el

compuesto e s a l c a n o ,

alq ueno o a l q u i n o

segn e l numero de h i d r o g e n o s \ n " ) ;


p rin tf

("Dame e l numero de c a r b o n o s \ n " ) ;

s c a n f ("%d*,
p rin tf

& c);

("Dame e l numero de h i d r o g e n o s \ n " ) ;

s c a n f ("%d",

& h);

h1=2*c+2;
h 2 =2 *c;
h3=2*c-2;
if

(h==h1 ) p r i n t f

( " E l compuesto

e s un a l c a n o " ) ;

if

(h==h2 ) p r i n t f

( " E l compuesto

e s un a l q u e n o " ) ;

if

(h==h3) p r i n t f

( " e l compuesto

e s un a l q u i n o " ) ;

if

(h!=h1 && h!=h2 && h!=h3) p r i n t f ( " E l

getch

compuesto no e x i s t e " ) ;

();

9.2.10 Sensor ptico para encender u na luz


/ * S e n s o r */
include

<stdio.h >

Uinclude

< co ni o. h>

v o i d mai n ()

{
in t

d;

clrs c r

();

p rin tf

(" sensor o p t ic o \ n " );

p rin tf

("Dame l a

s c a n f r% c/\
i f

d ista n cia a l a

& d);

( d >0 && d<=1 0 ) p r i n t f


la

qu e t e e n c u e n t r a s , en m e t r o s \ n " ) ;

("El

s e n s o r e n t r a en f u n c i o n a m i e n t o y s e a c t i v a

lu z");

www.FreeLibros.me

248

Captulo 9

if

(d>10) p r i n t f

getch

Ejercicios resueltos

( " L a l u z no s e e n c e n d e r " ) ;

();

9.2.11 Temporizador de una represa


/ * T e m p o r i z a d o r */
Uinclude

<stdio.h >

Uinclude

<c o ni o. h >

v o i d mai n ()

{
clrs c r

();

float t ,

1 ;

p rin tf

( " E l programa a n a l i z a e l

p rin tf

("El

t e m p o r i z a d o r de una r e p r e s a de a g u a \ n " ) ;

t e m p o r i z a d o r marca e l

t i e m p o qu e l a

c omp uer t a p e r m a ne c e r

a b ie r t a \ n " );
p rin tf

(" Ca d a segundo e n t r a n 500 L de a g u a \ n " ) ;

p rin tf

( L a r e p r e s a t i e n e c a p a c i d a d de s o l o 500,000 l . \ n ") ;

p rin tf

("Dame e l

s c a n f ( n%f ",

t e m p o r iz a d o r \ n " );

& t);

l=t*60*50Q;
p rin tf

( " E n t r a una c a n t i d a d de % 6 . 2 f l i t r o s \ n " , 1 ) ;

if

(1>0 && 1<=200000) p r i n t f

("La represa funcio na b ie n " ) ;

if

(1>200000 && 1 <500000) p r i n t f

( " L a r e p r e s a f u n c i o n a p e r o no a l

100 p o r

c ie n t o \ n " );
i f

(1>500000) p r i n t f
la s

getch

( " E m e r g e n c i a s o b r e c a r g a ! Debe c e r r a r i n m e d i a t a m e n t e

c om p uertas");

();

9.2.12 Descripcin de un compuesto qumico segn


sus com ponentes
l *Compuesto q u m i c o * /
Uinclude

<c o ni o. h >

Uinclude

<stdio.h >

v o i d mai n ()

www.FreeLibros.me

9.2 Selectiva sim ple

e lrse r

249

();

i n t H, O,

c 1,

c 2,

C;

p rin tf

( " Compuesto q u i m i c o \ n " ) ;

p rin tf

( " E l programa i n d i c a

el

compuesto s i une s c a r b o n o c on o x i g e n o

e hidrogeno o s o lo carbono e h id r o g e n o \ n " );


p rin tf

("Que componente d e s e a s u n i r ,

s c a n f (",96d",
p rin tf

3)H\n");

& c 1) ;

("C u a l o t r o \ n " );

s c a n f ("%d",
i f

1)C 2)0,

& c2) ;

(c1==1 && c2==3) p r i n t f ( " E l

compuesto c on comp onen te s %c/ y

%c/ e s un h i d r o c a r b u r o \ n , c 1 , c 2 ) ;
i f

(c1==2 && c2==3) p r i n t f ( E l

compuesto c on comp onen te s %c/ y

%c/ e s a g u a \ n " , c 1 , c 2 ) ;
i f

(c1==3 && c2==2) p r i n t f ( " E l

compuesto c on comp onen te s %c/

y %c/ e s a g u a \ n " , c 1 , c 2 ) ;
i f

( c 1==2 && c 2 ==1) p r i n t f ( " E l

compuesto c on comp onen te s %c/

y %d e s un o x i d o de c a r b o n o \ n " , c 1 , c 2 ) ;
i f

( c 1==1 && c 2 ==2) p r i n t f ( " E l

compuesto c on comp onen te s %c/

y %c/ e s un o x i d o de c a r b o n o \ n " , c 1 , c 2 ) ;
i f

(c1==3 && c2==1) p r i n t f ( " E l


y %c/ e s un h i d r o c a r b u r o \ n " ,

getch

compuesto c on comp onen te s %c/


c 1, c2) ;

();

9.2.13 Calcular corriente, potencia y resistencia


de un aparato elctrico
/*A p a r a t o s e l c t r i c o s */
t t i n e l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
#i nclude<MATH. H>
void m a in f)

{
clrs c r
in t

();

op;

float i ,
p rin tf

p,

r;

( "A p a r a t o s e l c t r i c o s y a l g u n o s de s us c a l c u l o s \ n " ) ;

www.FreeLibros.me

250

Captulo 9

p rin tf
el
p rin tf

( " S e u sa l a

Ejercicios resueltos

corrien te , la

potencia y l a

resisten cia\n se leccion e

v a lo r a c a l c u l a r \ n " );
(" S e l e c c i o n e s u o p c i o n \ n 1 ) p o t e n c i a \ n 2 ) i n t e n s i d a d \ n 3 )

r e s i s t e n d a \ n " );
scanf
i f

("%d",

&op);

(op== 1)

{
p r i n t f ("Potencia

\ndame l a

in t e n s id a d \ n " );

scanf ( " * f,t ,i) ;


p r i n t f ( " Dame l a

re siste n cia

del

c i r c u i t o \ n " );

s c a n f ( m* 6f*,&r) ;
p= i*i*r;
p r i n t f ( " L a p o t e n c i a d e l a p a r a t o es % 7 .2 f \ n " , p ) ;

}
f

( op ==2 )

{
p r i n t f ( " Intensidad\ndame l a

p o te n c ia \ n " );

s c a n f ("%f",&p);
p r i n t f ("Dame l a
s c a n f ("%f",

r e s i s t e n c i a \ n " );

&r);

i= s q rt( p lr) ;
p r i n t f ( " L a i n t e s i d a d d e l c i r c u i t o e s % 7 .3 f \ n " , i ) ;

}
i f

( o p ==3)

{
p r i n t f ( "R e s i s t e n c i a \ n d a m e l a
scanf

in t e n s id a d \ n " );

& i);

p r i n t f ("Dame l a p o t e n c i a \ n " ) ;
scanf

&p);

r= p/(i* i);
p r i n t f ("La r e s is t e n c ia

es % 7 .2 f \ n " , r ) ;

}
if

( o p ! =1&&op!=2&&op!=3) p r i n t f

(" E r r o r o p c io n i n v a l i d a \ n " );

getch();

www.FreeLibros.me

9.3 Selectiva d o b le

9.3 Selectiva doble


9.3.1 Calcular la cantidad de concreto requerido
segn la humedad
/*humedad_construccion*/
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void m ain()

{
i n t m 3, hf p ;
c lrs c rf);
p rin tff" T e in d ica re

el

c o s t o de t u p e d i d o segn e l

c o n c r e t o que n e c e s i t a s

y l o s m3 qu e d e s e e s \ n c u a n t o s m3 de c o n c r e t o n e c e s i t a s ? \ n " ) ;
scanf("%d",&m3);
p r i n t f f "La humedad en e l l u g a r de l a
e s a s i marca 1 \nde l o

c o n s t r u c c i n s o b r e p a s a e l 8096 ? \ n s i

c o n t r a r i o marca 2 \ n " ) ;

scanf("% d",&h);
if

(h==1)

{
p=m3*700;
p rin tf("S i la

humedad p a s a e l

80%, n e c e s i t a s un c o n c r e t o de

2 0 0 kg/cm 2

y e l p r e c i o de t u p e d i d o e s % d ", p );

}
else

{
p=m3*500;
p rin tf("S i la

humedad no p a s a e l

80%, n e c e s i t a s un c o n c r e t o de 150kg/cm2

y e l p r e c i o de t u p e d i d o es%c/",p^;

}
g e tc h f);

9.3.2 Sensor para encender u na luz


/*Sensor*/
Hinclude

<stdio.h >

www.FreeLibros.me

252

Captulo 9

Hinclude

Ejercicios resueltos

<c o ni o. h >

v o i d mai n ()

{
in t

d;

c lrs c r

();

p rin tf

("S ensor o p t i c o \ n " );

p rin tf

("Dame l a

s c a n f ( m* d m,
i f

d ista n cia a l a

& d);

(d>0 && d<=10) p r i n t f


la

qu e t e e n c u e n t r a s , en m e t r o s \ n " ) ;

("El

s e n s o r e n t r a en f u n c i o n a m i e n t o y s e a c t i v a

lu z ");

else
p rin tf
getch

( " L a l u z no s e e n c e n d e r " ) ;

();

9.3.3 Calcular resistencias en paralelo o en serie


/ * R e s i s t e n c i a s s e r i e o p a r a l e l o */
# i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
void main()

{
float r ,
in t

rp,

r 1 , r2,

r3;

op;

p rin tf

( " E l programa p e r m i t e e l

ca lcu lo

de t r e s r e s i s t e n c i a s en p a r a l e l o

o en s e r i e \ n " ) ;
p rin tf

( "Seleccione e l

t i p o de c i r c u i t o \ n " ) ;

p rin tf

( "1 )En s e r i e \ n 2 ) E n p a r a l e l o \ n " );

s c a n f ( " % d " , &o p) ;


i f

(op==1)

{
p rin tf

("En s e r i e \ n i n g r e s e e l

v a l o r de l a

primera r e s i s t e n c i a \ n " );

s c a n f ( " % f " , & r 1) ;


p rin tf

("Ingrese la

s egu nda r e s i s t e n c i a \ n " ) ;

s c a n f ("% f",& r2);


p rin tf

("Ingrese el

v a l o r de l a

te r c e r r e s is t e n c ia \ n " );

s c a n f ("% f",&r3);
r=r1+r2+r3;

www.FreeLibros.me

9.3 Selectiva d o b le

p rin t f

("La

re siste n cia

total

253

e s 96 7 . 2 f o h m s \ n " , r ) ;

}
else

{
p rin tf

("En p a r a l e l o \ n " );

p rin tf

("Ingrese l a

p rim e ra r e s i t e n c i a \ n " );

s c a n f ( " % f " , & r 1) ;


p rin tf

("Ingrese l a

segunda r e s i t e n c i a \ n " ) ;

s c a n f ( "% f" , & r 2 ) ;


p rin tf

("Ingrese l a

te rc e ra r e s i s t e n c i a \ n " );

s c a n f (" % f",& r3 );
rp= (1/r1)+ (1lr2)+ (1lr3);
r= 1 / rp;
p rin tf

("La

re siste n cia

del

total

e s 96 7 . 2 f o h m s \ n " , r ) ;

}
g e tc h f);

9.3.4 Calcular el nmero de huevos que una viejecita


lleva en su cesta
I*Compra*!
# i n c l u d e < s t d i o .h>
# i n c l u d e < c o n i o . h>
void m a in f)

{
i n t a;
textbackground(27);
te x tco lo r(Q );
c lrs c r();
goto xy(29,5);
p r in t f("La v ie je c ita

en e l m e r c a d o " ) ;

g o to xy( 1 , 10);
p r i n t f("Una
la

v i e j e c i t a l l e v a b a h u e vo s a l mercado c u a n d o \ n s e l e

c ayo

cesta.");

p r i n t f f " \ n \ n - C u a n t o s h u e vo s l l e v a b a s ?
r e c u e r d o qu e a l
p rin tf("d e

-Le p r e g u n t a r o n , \ n\ n- No l o

c o n t a r l o s en g r u p o s \ n " ) ;

2 , 3 , 4 y 5,

sobraban 1 ,2 ,3 y 4 \ n r e s p e c t iv a m e n t e .\ n \ n

www.FreeLibros.me

se,

254

Captulo 9

Cuantos huevos t e n i a l a

Ejercicios resueltos

v i e j e c i t a ? " );

p r i n t f ( " \ n \ n1 ) 20 h u e v o s \ n \ n 2 ) 59 h u e v o s \ n \ n 3 ) 1 0 0 0 h u e v o s \ n \ n ( S e l e c c i o n e
la

opcion c o rre c ta )

") ;

scanf("%d",&a);
if

(a==2) p r i n t f f "

A c e r t a s t e ! u) ;

else
p rin tff"

F a l l a s t e ! ) ;

getch();

9.3.5 Juego de multiplicaciones


*J u e g o * I
t t i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
f t i n c l u d e < s t d l i b . h>
t i n c l u d e <time.h>
v o id main()

{
in t

a,b,c,d;

t e x t b a c k g r o u n d (0 ) ;
te x tco lo r(3 );
c l r s c r ( );
goto xy(30,5);
p r i n t f f " * * * * * A p r e n d e j u g a n d o ** ** * ";;
g o to xy( 1 , 8 );
p rin tf("H o la

a m i g u i t o ( a ) ! ! \n\n

JuGaR!

. . . .VaMoS A

");

g o to x y ( 1 ,14);
p r i n t f f "I n s t r u c c i o n e s : \ n\nYo t e i r m o s t r a n d o m u l t i p l i c a c i o n e s y t u
t e n d r s que r e s p o n d e r \ n d e manera c o r r e c t a p a r a p o d e r s e g u i r
jugando\n\n\n

....

Estas l i s t o ?

. . . . ) ;

g o to x y (35,45);
p r i n t f f " . . .p re s io n a E n te r para c o n t i n u a r . . . " ) ;
g e t c h f );
c l r s c r f );
goto xy(30,5);
p r i n t f f " . . .Cuanto e s ? . . . " ) ;

www.FreeLibros.me

9.3 Selectiva d o b le

srand(tim e(NULL));
a=rand( )%1 0 +1 ;
b=rand()% 1 0 +1 ;
c=a*b;
p r i n t f ( " \ n \ n M X %i

\a,b);

scanf("M ",& d);


i f

(c==d) p r i n t f f "

B ien hecho");

else
p rirttf(u

Es o NO e s c o r r e c t o " ) ;

a=rand( ) M 0 +1 ;
b=rand( )%1 0 +1 ;
c=a*b;
p r i n t f ( " \ n \ n M X %i

\a,b);

scanf("M ",& d);


i f

(c==d) p r i n t f f "

B ien hecho");

else
p rin tff"

Es o NO e s c o r r e c t o " ) ;

a=rand( )%1 0 +1 ;
b=rand( ) M 0 +1 ;
c=a*b;
p r i n t f f " \ n \ n M X %i

\ a ,b ) ;

s c a n f ( " % i" ,&d);


i f

(c==d)

p rin tff"

Bien hecho");

else
p rin tff"

Es o NO e s c o r r e c t o " ) ;

a= ra ndf )%1 0 +1 ;
b=rand( ) M 0 +1 ;
c=a*b;
p r i n t f f " \n\n%i X

",a ,b );

s c a n f f "%i" , &d);
i f

fc==d) p r i n t f f "

B ie n hecho");

else
p rin tff"

Es o NO e s c o r r e c t o " ) ;

a=rand( )%1 0 +1 ;
b =r and f) % 1 0 +1 ;
c=a*b;
p r i n t f f " \n\n%i X

",a ,b );

scanf("% i",&d);
i f

fc==d) p r i n t f f "

B ie n hecho");

www.FreeLibros.me

255

256

Captulo 9

Ejercicios resueltos

else
E s o NO e s c o r r e c t o " ) ;

p rin tff"
a=rand()% 1 Q+1 ;
b=rand()% 1 0 +1 ;
c=a*b;

p r i n t f f " \n\n%i X % = n , a , b ) ;
scanf("% i",&d);
i f

B ien hecho");

(c==d) p r i n t f f "

e lse
E so NO e s c o r r e c t o " ) ;

p rin tff"
a=rand()% 1 Q+1 ;
b=rand()% 1 0 +1 ;
c=a*b;

p r i n t f f " \n\n%i X % = n , a , b ) ;
s c a n f f , &d);
i f

fc==d) p r i n t f f "

B ien hecho");

e lse
p rin tff"

E s o NO e s c o r r e c t o " ) ;

g e t c h f );

9.3.6 Calcular el coeficiente de correlacin


/* C a l c u l a e l

c o e f i c i e n t e de c o r r e l a c i n * /

t t i n c l ude <coni o. h>


#include<stdio.h>
void m ainf)

{
c lrs c rf);
float Sxy , Sx, Sy, r ;
p r i n t f f "C alcula e l
p r i n t f f "Dame l a

c o e f i c i e n t e de c o r r e l a c i o n \ n " ) ;

c o v a r i a n z a de l o s

datos

");

s c a n f f "%f",& S x y );
printf("Dam e l a
scanff

d e s v i a c i n e s t n d a r de X " ) ;

,&Sx);

printf("Dam e l a

d e s v i a c i n e s t n d a r de Y " ) ;

s c a n f f "%f" , & S y ) ;
if

f(Sx==Q)

|| fSy==0)) p r i n t f ( " D a t o s i n v l i d o s " ) ;

www.FreeLibros.me

9.3 Selectiva d o b le

257

else

{
r=Sxy/(Sx*Sy);
p r i n t f ("E l

c o e f i c i e n t e de c o r r e l a c i n

es

}
getch();

9.3.7 Indicar si un compuesto es soluble o no


/*I n d i c a l a

s o l u b i l i d a d */

# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
void main()

{
textco lor(R E D );
textbackground(BLACK);
c l r s c r f );
char catin ;
g o t o x y ( 13,2);
p rin tf("In d ica

s i un compuesto e s o no s o l u b l e \ n " ) ;

p r i n t f ( " \nIMPORTANTE: E s t e p r o gr am a u sa como b a s e l a s

reglas

de s o l u b i l i d a d de c omp ues tos i n o r g n i c o s en a g u a \ n " ) ;


p rin tf("\n E lij a

el

c a t i n : \ n N=Na \ t K = K\ t L = L i \ t R = R b \ t C =C s " ) ;

s c a n f ( U96C\n" , & c a t i o n ) ;
i f

( ( c a t i o n = = ' N ' ) || ( c a t i o n = = ' K ' ) || ( c a t i o n = = ' L ' )


( c a t i n 'C ' ))

p r i n t f ( " \n E l

|| ( c a t i o n = = ' R ' ) ||

compuesto e s s o l u b l e " ) ;

else
p rin tf("\n El

compuesto e s i n s o l u b l e ; s i n

un n i t r a t o ,

carbonato acido,

clo ra to

embargo, s i e l
o perclorato,

a n i n es
e l compuesto

es s o l u b l e " );
getch();

9.3.8 Identificar semirreacciones, oxidacin o reduccin


*Identifica r x n 's

redox*/

t t i n c l u d e < s t d i o .h>
# i n c l u d e < c o n i o . h>

www.FreeLibros.me

C aptulo 9

258

Ejercicios resueltos

v o i d m a i n ()

{
textco lor(R E D );
textbackground(BLACK);
c l r s c r ( );
in t

v 1, v 2 ;

g o to x y (1 6, 2 );
p r i n t f ( "I d e n t i f i c a s e m i r r e a c c i o n e s r e d o x : O x i d a c i n o r e d u c c i o n \ n " ) ;
p r i n t f ( " \n R e c u e r d e qu e c u a l q u i e r s e m i r r e a c c i o n r e d o x , y a s e a de
o x i d a c i n o de r e d u c c i n , va acompania de s u c o n t r a r i a \ n " ) ;
p r i n t f ( " \n I n t r o d u z c a l a

v a l e n c i a d e l e l e m e n t o en e l

compuesto

r e a c t i v o \ n ) ;
s c a n f ( " % i " , & v 1) ;
p r i n t f ( " \n A h o r a l a

v a l e n c i a d e l mismo e l e m e n t o ,

p e r o a h o r a en e l

comp uest o p r o d u c t o : \ n " ) ;


s c a n f ( "%" , &v 2 ) ;
if

(v1<v2) p r i n t f ( " \ n L a s e m i r r e a c c i o n e s de o x i d a c i n " ) ;

e lse
p r i n t f ( " \n L a s e m i r r e a c c i o n e s de r e d u c c i n " ) ;
getchf);

9.3.9 Indicar el rendimiento terico de una reaccin


/ * R e n d i m i e n t o de r x n * /
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
v o id main()

{
textco lor(R E D );
textbackground(BLACK);
c l r s c r ( );
float p o r c e n t a j e ,

rendt,

re n dp ;

g o t o x y (23, 2 ) ;
p r i n t f ( " R e n d i m i e n t o de una r e a c c i o n \ n " ) ;
p r i n t f ( " \n I n d i q u e e l

rendim iento t e o r ic o

e s t e q u i o m e t r i c a m e n t e ) de l a

(se c a lc u la

re a c c io n \n ");

s c a n f ( "%f", & r e n d t ) ;

www.FreeLibros.me

9.4 Selectiva d o b le anidada

p r i n t f ( " \ n Ahora e l
de l a

rendim iento p r a c t i c o

259

(se ob serva experimentalm ente)

r e a c c i o n \ n " );

s c a n f f "%f", & r e n d p ) ;
i f

(rendtl=rendp)

{
p o r c e n t a j e = ( r e n d t / r e n d p ) *1 0 0 ;
p r i n t f ( " \n E l

r e n d i m i e n t o de l a

reaccin

(en p o r c e n t a j e )

es:

",porcentaje);

}
else
p r i n t f ( \n L a r e a c c i n s e l l e v a

a cabo a l

100%");

getchf);

9.4 Selectiva doble anidada


9.4.1 Juego de adivinanza de nmeros
/*A d i v i n a * /
t t i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
t t i n c l u d e < s t d l i b . h>
i t i n c l u d e <time.h>
void main()

{
textbackground(BLACK);
te x tco lo r(9 );
c lrs c r();
in t

usuario,

yo;

s ra n d (tim e (N U L L ));
y o = r a n d f ) % 1 0 +1 ;
gotoxy(25,5)p r in tf( " A d iv in a

a d i v i n a d o r " );

g o t o x y ( 1 , 1 2 ) p r i n t f ( " Q u e numero e n t e r o e n t r e
pensando?

1 y 10 c r e e s qu e e s t o y

");

s c a n f f "%c/", & u s u a r i o ) ;
g o t o x y f 1 ,15);
i f

( u s u a r i o = = y o ) p r i n t f ( " F e l i c i d a d e s , a d i v i n a s t e mi n um e r o " );

else

www.FreeLibros.me

260

Captulo 9

if

Ejercicios resueltos

(u suario< yo) p r i n t f ( " \ n \ n L o s i e n t o ,

t u numero e s MENOR que e l

m o ) ;
if

(usuario>yo) p r i n t f ( " \ n \ n L o s i e n t o ,

t u numero e s MAYOR qu e e l

m i');
gotoxy(42,25);
p rin tf("...

presiona enter para continuar

. . . ") ;

getch();
c l r s c r f );
p r i n t f ( " \ f \ n \ n E s t a e s t u s egu nda o p o r t u n i d a d i n g r e s a o t r o
numero:

") ;

s c a n f ( n96d", & u s u a r i o ) ;
i f ( u s u a r i o = = y o ) p r i n t f ( u\ n \ n F e l i c i d a d e s , a d i v i n a s t e mi n um e r o " ) ;
e lse

{
if(usuario< yo)

p r i n t f ("\n\nLo sien to ,

t u numero es MENOR que e l

p r i n t f ( " \n\nLo s i e n t o ,

t u numero es MAYOR que e l

m i o u) ;
if(usuario> yo)
m i ) ;
g o to x y (42,25);
p rin tf("...

presiona enter para con tin u ar

...");

getch();
c l r s c r f );
p r i n t f ( " \n \nEsta es t u u l t i m a o p o r t u n id a d i n g r e s a o t r o
nume ro: " ) ;
s c a n f f "%c/", &u su a r i o ) ;
i f

( u s u ar i o = =y o ) p r i n t f ( " \ n \ n F e l i c i d a d e s , a d i v i n a s t e mi
numero") ;

else

{
i f

(usuario<yo) p r i n t f ( v\n\nLo s i e n t o ,
e l m o ) ;

gotoxy(32,35);
p r i n t f ( " E l numero e r a : %c/",yo^;

}
}
}
g e t c h f );
}

www.FreeLibros.me

t u numero e s MENOR que

9.4 Selectiva d o b le anidada

9.4.2 Indicar el tipo de dato que el usuario introduzca


l*Tipo dato*/
t t i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
v o i d mairi( )

{
char usuario;
te x tc o lo r (0) ;
textbackground(98);
clrscrf);
g o t o x y (15, 5);
p r i n t f ( "Programa q u e i n d i c a e l t i p o d e d a t o i n t r o d u c i d o " ) ;
p r i n t f f " \ n \ n \ n I n t r o d u c e t u dato (un d g i t o )

) ;

s c a n f f "% s\ & u s u a r i o ) ;
if

( ( 5 7 > = u s u a r i o ) && ( u s u a r i o > = 4 8 ) ) p r i n t f ( " \ n \ n E s t e e s un n u m e r o " )

else
if

( ( 1 2 2 > = u s u a r i o ) && ( u s u a r i o > = 9 7 ) || ( 9 0 > = u s u a r i o ) &&


(usuario>=65))

p r i n t f ( \ n \ n E s t a e s una l e t r a " ) ;

else
p r i n t f ( " \ n \ n E s t e e s un c a r c t e r e s p e c i a l " ) ;
g etch f);

9.4.3 El nmero menor de cinco nmeros


/* Me n o r * /

t t i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
void m a in f)

{
in t a,b,c,d,e;
textcolor(25) ;
textbackground(0) ;
clrscrf);
p r i n t f ( " I n t r o d u c e c i n c o n m e r o s ( p r e s i o n a e n t e r d e s p u s d e c ada
numero): \n*);
s

", &a, & b , &c , & d , & e ) ;

www.FreeLibros.me

262

Captulo 9

i f

((a<b)

&& ( a<c )

&& (a<d)

Ejercicios resueltos

&& ( a < e ) ) p r i n t f ( " E l

n u me ro m e no r e s :

M '^ a );

else

{
if((b< a)

&& ( b<c)

&& (b<d)

&& ( b < e ) ) p r i n t f ( " E l

numer o me no r e s :

*i\b);

else

{
i f

((c<a)

&& ( c<b)

&& ( c<d)

&& ( c < e ) ) p r i n t f ( " E l n u me ro me no r e s :

% i\c );
else

{
i f

( (d<a)

&& (d<b)

menor e s :

&& ( d<c)

&& ( d < e ) )

p rin tf ("El

9i i " , d ) ;

else
p r i n t f ( " E l n u me ro me no r e s :

te",e);

}
}
}
g e tc h f);

9.4.4 Indicar el tipo de ngulo introducido,


segn su medida
/* T i p o s d e n g u l o s */

Uinclude<conio.h>
#include<stdio.h>
void main()

{
c l r s c r f );
f l o a t med;
p r i n t f ( "T ipos de a n g u l o s \ n " ) ;
p r i n t f ( " Dame l a m e d i d a d e l n g u l o " ) ;
scanf("%f",&med);
if

(med<90) p r i n t f ( " E s un n g u l o a g u d o " ) ;

else
if

( me d==90) p r i n t f ( " Es un n g u l o r e c t o " ) ;

else

www.FreeLibros.me

numer o

9.4 Selectiva d o b le anidada

i f

(med<180) p r i n t f ( " E s un n g u l o o b t u s o " ) ;

e lse
i f

(med==1 8 0 ) p r i n t f ( " E s un n g u l o l l a n o " ) ;

else
i f

(med<360) p r i n t f ( " E s un n g u l o c n c a v o " ) ;

e lse
i f

(med==360) p r i n t f ( " E s un n g u l o p e r i g o n o " ) ;

else
p r i n t f ( "No t i e n e n i n g n nombre e s p e c i f i c o " ) ;
g e t c h f );

9.4.5 Calcular el coeficiente de variacin


/* C a l c u l a e l

c o e f i c i e n t e de v a r i a c i n

*/

#include<stdio.h>
U i n c l u d e < c o n i o .h>
v o id main()

{
c l r s c r ( );
f loat S , X , C V ;
in t

op;

p r i n t f ("C alcu la e l

c o e f i c i e n t e de v a r i a c i o n \ n " ) ;

p r i n t f f " 1 .Muestra\n 2 . P o b la c io n \ n " );


p rin tf("E lig e

una o p c i o n

") ;

scanf("%d",&op);
i f

( o p ==1)

{
p r i n t f ( " Dame l a m edi a

") ;

scanf("*f",&X);
p r i n t f ( " Dame l a

desviacin estndar

");

s c a n f f "%f" , & S ) ;
CV=S/X*100;
p r in t f ("E l

c o e f i c i e n t e de v a r i a c i n m u s t r a l e s %. 2f%\/7", C V ) ;

}
else
if

(op==2)

www.FreeLibros.me

263

264

Captulo 9

printf("Dam e l a

m edi a

Ejercicios resueltos

") ;

s c a n f ( " * f " ,&X);


p r i n t f ( " Dame l a

d e sv ia ci n estndar

");

scanf("*6f",&S);
CV=S/X*100;
p r i n t f ("E l

c o e f i c i e n t e de v a r i a c i n p o b l a c i o n a l

es %. 2 f%\r?", C V; ;

}
else
p r i n t f ( Tu o p c i o n no e s t a en e l men" ) ;
getch();

9.4.6 Calcular la desviacin de costos y materiales


de la manufacturera Choice
/ * D e s v i a c i n de empresa c h o i c e * /
t t i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
ttdefine p r 5 . 2 0
Udefine p e 5 . 0 0
Udefine t r

10.20

ttdefine t e

10.00

v o id main()

{
in t

op;

float c r , c e , h r , h e , c i v a , c i v , t o t a l ,dpm, dum, dtm, demo;


c l r s c r f );
p r i n t f ( " D e s v i a c i n de l a

m anufacturera c h o i c e \ n " );

p r i n t f ( "Que d e s v i a c i n des ea c a l c u l a r ? \ n " ) ;


p r i n t f ( " 1 / d e s v i a c i n de m a t e r i a l e s \ n 2 ) d e s v i a c i n de mano de o b r a \ n 3 )
d e s v i a c i n de c o s t o s i n d i r e c t o s \ n " ) ;
scanf("%d",&op);
i f

(op==1 )

{
p r i n t f ( " Dame e l v a l o r de l a

c a n t i d a d r e a l \ n " );

scanf("% f",&cr);
dpm=cr* ( p r - p e ) ;
p r i n t f ( " L a d e s v i a c i n en p r e c i o

es ^td" ,dpm);

www.FreeLibros.me

9.4 Selectiva d o b le anidada

p r i n t f ( " \nDame e l

v a l o r de l a

265

c a n t i d a d e s t a n d a r \ n ) ;

scanf("%f"',&ce);
dum=(cr-ce) *pe;
p r i n t f ( " L a d e s v i a c i n en c a n t i d a d ( u s o )

es

2 f " , dum);

total=dpm+dum;
p r i n t f ( " \nEntonces l a

d e s v i a c i n de m a t e r i a l e s e s $%.2 f " , t o t a l ) ;

}
e lse
i f

(op==2)

{
p r i n t f ( " Dame l a

c a n t i d a d de h o r a s r e a l e s \ n " ) ;

scanf("% f",&hr);
dtm =hr*(tr-te);
p r i n t f ( " L a d e s v i a c i n de t a s a e s $%. 2 f " , d t m ) ;
p r i n t f ( " \nDame l a

c a n t i d a d de h o r a s e s t a n d a r e s \ n " ) ;

scanf("% f",&he);
d e m o =t e * (h r - h e) ;
p r i n t f ( " L a d e s v i a c i n de e f i c i e n c i a e s $96 . 2 f " , d e m o ) ;
total=(demo-dtm);
p r i n t f ( " \nLa d e s v i a c i n de mano de o b r a e s $%.2 f " , t o t a l ) ;

}
else
if

( op==3)

{
printf("Dam e e l t o t a l

de c o s t o s i n d i r e c t o s v a r i a b l e s \ n " ) ;

s c a n f ( " ,96 f " , & c i v ) ;


printf("Dam e e l t o t a l

de c o s t o s i n d i r e c t o s

v a riab les

a p l i c a d o s \ n " );
scanf("% f,& civa);
total= civ-civa;
p r i n t f ( " L a d e s v i a c i n de c o s t o s i n d i r e c t o s e s $%. 2 f " , t o t a l ) ;

}
getch();

9.4.7 Calcular las propiedades coligativas de soluciones


acuosas
l*Propiedades c o l i g a t i v a s * /
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

266

Captulo 9

Ejercicios resueltos

# i n c l u d e < c o n i o . h>
Udefine R 0.0821
Udefine kb 0 . 5 8
Udefine k f

1.86

v o id main()

{
textco lor(R E D );
textbackgroundfBLACK);
c l r s c r ( );
f l o a t p i , t b , t f , d t b , d t f , m , M , T, P v a p s l n , P v a p s o l v , X s o l v ;
c h a r op;
g o t o x y ( 13,2);
p r i n t f ( * * P r o p i e d a d e s c o l i g a t i v a s \ n De s o l u c i o n e s a c u o s a s ,
no v o l t i l

no e l e c t o l i t o

(e n e l c a s o de l a p r e s i n v a p o r ) " ) ;

p r i n t f ( " \n Que p r o p i e d a d des ea c a l c u l a r ?

\ n A) T e m p e ra t u r a de e b u l l i c i o n \

t B ) T e m p e r a t u r a de c o n g e l a c i o n \ n C ) P r e s i n o s m o t i c a \ t D ) P r e s i n
v a p o r \ n " );
s c a n t ( "%c", & o p ) ;
f

( 0p = = ' A ')

{
p r i n t f ( " \n Dame l a

m o la rid a d \n ");

s c a n t ( " % f " , &m);


dtb=kb*m;
tb=100-Hitb;
p r in t f ( " ^ f oC",tb);

}
e lse

{
i f

( o p == ' B ' )

{
p r i n t f ( \n Dame l a

m olaridad \n");

s c a n f ( "%f" ,&m);

dtf=kf*m;
tf=0-dtf;
p r i n t f ( " % f 0C", t f ) ;

}
else
{

i f

( op==' C ' )

www.FreeLibros.me

9.5 Selectiva m ltip le

p r i n t f ( " \ n Dame l a

267

m olaridad \n");

s c a n f f "%f" , &M);
p r i n t f ( " \n A h o r a l a

t e m p e r a t u r a , en K \ n " ) ;

s c a n f f "%f,& T ) ;
pi=R*T*M;
p r i n t f ( B96 f atm" , p i ) ;

}
e lse

{
i f

( op==' D' )

{
p r i n t f ( " \ n Dame l a p r e s i n v a p o r d e l s o l v e n t e \ n u) ;
s c a n f f "%fB, & P v a p s o l v ) ;
p r i n t f ( " \n A h o r a l a

f r a c c i n mol d e l

s o l v e n t e \ n ) ;

s c a n f f "%f" , & X s o l v ) ;
Pvapsln=Pvapsolv*Xsolv;
p r i n t f f " % f a t m u, P v a p s l n ) ;

}
else
p r i n t f ( " \ n O pc in i n c o r r e c t a " );

}
}
}
g e t c h f );

9.5 Selectiva m ltiple


9.5.1 Calcular la resistencia de un cable
l * C l c u l o de l a

r e s i s t e n c i a */

t t i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
define AU 1 . 0 6 e - 8
Udefine CO 1. 72e -8
define AL 3 . 2 1 e - 8
Udefine PL

11.05e-8

void m a in f)

www.FreeLibros.me

268

Captulo 9

Ejercicios resueltos

{
c l r s c r f );
float 1,
in t

a,

res,

r;

op;

p rin tf

( " E l programa p e r m i t e c a l c u l a r l a

p rin tf

( "Selecione e l m a te ria l

p rin tf

("

de un c a b l e \ n " ) ;

c a b l e \ n " );

1) p l a t a \ n 2 ) c o b r e \ n 3 ) a l u m i n i o \ n 4 ) p l a t i n o

s c a n f ("%d",
switch

del

re siste n cia

\ n ");

&op);

(op)

{
c a s e 1: res=AU;
p rin tf

( " E l m a t e r i a l es A U \ n " );

break;
c a s e 2:

res=CO;
p rin tf

( " E l m a t e r i a l e s C O \ n " );

break;
c a s e 3:

re s= AL ;
p rin tf

( " E l m a t e r i a l es A L \ n " );

break;
c a s e 4:

res =P L;
p rin tf

( " E l m a t e r i a l es P L \ n " );

break;
d e fau lt:
p rin tf

( " E r r o r conductor desconocido\n");

}
p rin tf

("Dame l a

l o n g i t u d d e l m e t a l en metr o s \ n " ) ;

scanf ("* f",& l);


p rin tf

("Dame e l

area g r o s o r d e l

c a b l e en m 2 . \ n " ) ;

s c a n f ( U96 f " , & a ) ;


r= res*l/a;
p rin tf

(" La r e s i s t e n c i a

es

ohms\n", r ) ;

getchf);

9.5.2 Calcular la magnitud de vectores


/* M a g n i t u d de v e c t o r e s en R 2 , R 3 , R 4 */
t t i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

9.5 Selectiva m ltip le

269

t t i n c l u d e <math.h>
v o id main()

{
c l r s c r ( );
f loat a1 , a 2 , a 3 , a 4 , m a g ;
in t

op;

p r i n t f ( " C a l c u l a m a g n i t u d de v e c t o r e s \ n " ) ;
p rin tff"

1) EN R2\n 2 )E N R3\n 3 )EN R 4 \ n " ) ;

p r i n t f ("E l i g e

una o p c i o n

") ;

scanf("%d",&op);
printf("NOTA:

Usa un e s p a c i o e n t r e c a d a numero d e l

v e c to r\n ");

switch(op)

{
c a s e 1: p r i n t f ( " Dame e l

v e c t o r en R2 ") ;

s c a n f ( " % f % f " , & a 1,& a 2 ) ;


mag=sqrt(a1*a1+a 2 *a 2 ) ;
p r i n t f ( " La magnitud d e l

v e c t o r en R2 e s 96 . 2 f ,mag);

break;
c a s e 2: p r i n t f ( " Dame e l

v e c t o r en R3 " ) ;

scanf("*6f%f%f",&a1,&a2,&a3);
mag=sqrt(al*al+a2*a2*a3*a3);
p r i n t f ("la

m a g n i t u d d e l v e c t o r en R;

e s %.2 f " , m a g ) ;

break;
c a s e 3: p r i n t f ("Dame e l

v e c t o r en R4 ") ;

s c a n f ( " ^ f M ^ f ^ f " , &a1,&a2, &a3, &a4) ;


ma g= sq rt ( a 1 *a1+a2* a2+a3* a3+a4* a 4 ) ;
p r i n t f ( " L a m a g n i t u d d e l v e c t o r en R4 e s

2f",m ag);

break;
d e fau lt:
p r i n t f ( " O p c i o n no v a l i d a " ) ;

}
getchf);

9.5.3 Calcular las funciones bsicas de un polgono regular


/* E l e m e n t o s de un p o l g o n o r e g u l a r * /
t t i n c l u d e < c o n i o .h>
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

270

Captulo 9

Ejercicios resueltos

void main()

{
c l r s c r f );
i n t n,op;
float r e s u l ;
p r i n t f ( " E l e m e n t o s de un p o l g o n o r e g u l a r \ n " ) ;
p r i n t f f " 1 . A n g u l o c e n t r a l \ n 2 . A n g u l o i n t e r n o \ n 3 . A n g u l o e x t e r n o \ n 4.Num.
de D i a g o n a l e s en un V , r t i c e \ n

5 . Tota l

p r i n t f ( " E l i g e l o qu e q u i e r e s c a l c u l a r

de d i a g o n a l e s \ n " ) ;

") ;

scanf("%d",&op);
p r i n t f ( "Dame e l numero de l a d o s d e l p o l g o n o

");

scanf("%d",&n);
s w i t c h (o p)

{
c a s e 1: r e s u l =360/ n;
p r i n t f ( "Cada n g u l o c e n t r a l mi de %.2 f o " , r e s u l ) ;
break;
c a s e 2:

r e s u l =90*( n - 2 ) In;
p r i n t f ( Cada n g u l o i n t e r n o mi de %. 2 f o " , r e s u l ) ;
break;

c a s e 3: r e s u l = 3 6 0 / n ;
p r i n t f ( " C a d a n g u l o e x t e r n o mi de %.2f e , r e s u l ) ;
break;
c a s e 4: r e s u l = n - 3 ;
p r i n t f ( " E l numero de d i a g o n a l e s de cada v , r t i c e es % . 0 f " , r e s u l ) ;
break;
c a s e 5: r e s u l = n * ( n - 3 ) 12;
p r i n t f ( " E l numero t o t a l de d i a g o n a l e s e s %. 0 f " , r e s u l ) ;
break;
de f a u l t :
p r i n t f ( " O p c i n i n v a l i d a " );

}
getchf);

9.5.4 Juego de piedra, papel o tijera


/*Programa j u e g o p i e d r a ,

papel o t i j e r a * /

t f i n c l u d e < s t d i o . h>

www.FreeLibros.me

9.5 Selectiva m ltip le

# i n c l u d e < c o n i o . h>
f t i n c l u d e < s t d l i b . h>
U i n c l u d e <time.h>
void m ain()

{
t e x t b a c k g r o u n d (27);
te x tco lo r(3 2 );
c l r s c r f );
in t

usuario,

yo;

srand(tim e(NULL));
g otoxy(25,5);
p r i n t f ("* ** * J u e g o p i e d r a ,

papel o t i j e r a

****";,-

g oto xy( 1, 8 );
p r i n t f ( " I n t r o d u c e t u jugada:

\ n \ n 1 ) P i e d r a \ n 2 ) P a p e l \ n 3 ) T i j e r a \ n \ n n) ;

s c a n f ( "%c/", &u s u a r i o ) ;
y o = ( r a n d ( ) % 3 ) +1;
/*P i e d r a

*/

g o to x y (25,20);
if

( u s u a r io = = 1)

{
switch(yo)

{
c a s e 1: p r i n t f ( " E M P A T A M O S : p i e d r a

VS p i e d r a " ) ;

break;
c a s e 2: p r i n t f ( " P E R D I S T E :

p i e d r a VS p a p e l " ) ;

break;
c a s e 3: p r i n t f ( "GANASTE: p i e d r a VS t i j e r a " ) ;
break;

}
}
/* P a p e l
if

*/

(u suario==2 )

{
switch(yo)

{
c a s e 1: p r i n t f ( "GANASTE: p a p e l

VS p i e d r a " ) ;

break;
c a s e 2: p r i n t f ( " E M P A T A M O S : p a p e l VS p a p e l " ) ;
break;

www.FreeLibros.me

271

272

Captulo 9

Ejercicios resueltos

c a s e 3: p r i n t f ( PERDISTE: p a p e l

VS t i j e r a ) ;

break;

}
}
/* T i j e r a
if

*/

(usuario==3)

{
switch(yo)

{
c a s e 1: p r i n t f ( " PERDISTE:

tije ra

VS p i e d r a ) ;

break;
c a s e 2: p r i n t f ( GANASTE: t i j e r a

VS p a p e l ) ;

break;
c a s e 3: p r i n t f ( EMPATAMOS: t i j e r a

VS t i j e r a ) ;

break;

}
}
getch();

9.5.5 Calcular las propiedades coligativas de una solucin


/ * P r o p i e d a d e s c o l i g a t i v a s */
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
ttdefine R 0 . 0 8 2 1
ttdefine kb 0 . 5 8
ttdefine k f

1.86

vo id m ainf)

{
textco lor(R E D );
textbackground(BLACK);
c l r s c r ( );
float p i , t b , t f , d t b , d t f ,m,M, T, P v a p s l n , P v a p s o l v , X s o l v ;
c h a r op;
g o t o x y f 13,2);
p r i n t f ( * P r o p i e d a d e s c o l i g a t i v a s \ n De s o l u c i o n e s a c u o s a s ,
no v o l t i l

no e l e c t r o l i t o

(e n e l c a s o de l a p r e s i n v a p o r ) ) ;

p r i n t f ( \n Que p r o p i e d a d des ea c a l c u l a r ?

www.FreeLibros.me

\ n A) T e m p e ra t u r a de e b u l l i c i o n \

9.5 Selectiva m ltip le

273

t B) Temperat ur a de c o n g e l a c i o n \ n C ) P r e s i n o s m o t i c a \ t D ) P r e s i o n v a p o r \ n " ) ;
s c a n f ( U96 C" , &o p );
switch(op)

{
case

'A p r i n t f f " \ n

Dame l a

m o la rid a d \n ");

s c a n f ( "%f" , &m);
dtb=kb*m;
tb=1Q)(d+dtb;
p r i n t f ( "%f 0 C \ t b ) ;
break;
case

' B ' : p r i n t f f " \ n Dame l a

m o l a r i d a d \ n u) ;

s c a n f ( % f " , &m);
d tf =k f* m;
tf= 0-dtf;
p r i n t f ( "%f 0 C " , t f ) ;
break;
case

' C ' : p r i n t f ( \n Dame l a

m o la rid a d \n ");

s c a n f ( " 96 f " , & M ) ;


p r i n t f ( " \ n Ahora l a

temperatura,

en K \ n " ) ;

s c a n f f "%f" , & T ) ;
pi=R*T*M;
p rin tf(W
96 f a t m " , p i ) ;
break;
case

' 0 ' ; p r i n t f ( " \ n Dame l a

p r e s i n vapor d e l

s o l v e n t e \ n ) ;

s c a n f ( n^ f u, & P v a p s o l v ) ;
p r i n t f f u\n A h o r a l a

f r a c c i n mol d e l

s o l v e n t e \ n n) ;

scanf("*6f",&Xsolv);
Pvapsln=Pvapsolv*Xsolv;
p r i n t f ( u%f atm" , P v a p s l n ) ;
break;
de fau lt:
p r i n t f f \n O p c i n i n c o r r e c t a " ) ;

}
g e t c h f );

9.5.6 Calcular la solubilidad y sus variables


/ * S o l u b i l i d a d y v a r i a b l e s */
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

274

Captulo 9

Ejercicios resueltos

# i n c l u d e < c o n i o . h>
v o id main()

{
textcolor(R E D );
textbackground(BLACK);
c l r s c r ( );
float S g ,k h ,P g ;
c h a r op;
g o t o x y f 13,2);
p rin tf("C a lcu lo

de l a

s o l u b i l i d a d y sus v a r i a b l e s \ n " );

p r i n t f ( " \n I n d i q u e que s e desea c a l c u l a r : \ n A ) S o l u b i l i d a d \ t B ) C o n s t a n t e de


Henry\tC)Presin del g a s\n ");
s c a n f ( "%c", & o p ) ;
switch(op)

{
case

' A ' : p r i n t f ( " \n Dame l a

c o n s t a n t e de H enr y p a r a e l g a s \ n " ) ;

scanf("% f",&kh);
p r i n t f ( \n A h o r a l a

p r e s i n vapor del ga s\n ");

scanf("*6f" ,&Pg);
Sg=kh*Pg;
p rin tf("% f n/L",Sg);
break;
case

' 8 ' ; p r i n t f ( " \ n Dame l a

s o lu b ilid a d del gas\n");

scanf("*6f",&Sg);
p r i n t f ( " \ n Ahora l a

p r e s i n vapor del g a s \n " );

s c a n f ( "%f" , & P g ) ;
kh=Sg/Pg;
p r i n t f ( "%f n / L

atm ",kh);

break;
case

' C 1: p r i n t f ( " \ n Dame l a

s o l u b i l i d a d d e l g a s \ n " );

s c a n f ( "%f" , & S g ) ;
p r i n t f ( " \ n Ahora l a

c o n s t a n t e de H enr y p a r a e l g a s \ n " ) ;

scanf("% f",&kh);
Pg=Sg/kh;
p rin tfa tm " ,P g );
break;
d e fau lt:
p r i n t f ( " \n O p c i n i n c o r r e c t a .

E j e c u t e e l programa de nuevo y e l i j a

una o p c i o n c o r r e c t a " ) ;

www.FreeLibros.me

9.5 Selectiva m ltip le

275

}
getch();

9.5.7 Calcular los costos unitarios de la em presa Gelstrap


/*Empresa G e l s t r a p * /
# i n c l u d e < s t d i o . h>
f t i n c l u d e < c o n i o . h>
void m a in f)

{
in t

op,md,mod,cin;

float t o t a l ;
c l r s c r ( );
p r i n t f ( v\ n C a l c u l e l o s

costos u n ita r io s

p r i n t f ( "\ n Q u e c o s t o u n i t a r i o

de l a

empresa G e l s t r a p \ n " ) ;

deseas c a l c u l a r \ n " );

p r i n t f ( " 1 ) M a t e r i a l e s d i r e c t o s \ n 2 ) M a n o de o b r a \ n 3 ) C o s t o s I ND IRECT OS \n) ;


s c a n f ( U96 d " , & o p ) ;
switch(op)

{
case

1 : p r i n t f ( Dame e l

c o s t o de m a t e r i a l e s d i r e c t o s \ n " ) ;

s c a n f ( U96dH,&md);
ot a l= md 19000;
p r i n t f ("E l

c o s t o u n i t a r i o de m a t e r i a l e s d i r e c t o s

es

$ % . 3 f n, t o t a l ) ;
if

(total<=2) p r i n t f ( " \n E x c e le n te , e l
m a t e r i a l e s ha d i s m i n u i d o l o

costo u n ita r io

de

que p r o v o c a mas p r o d u c c i o n \ n " ) ;

e lse
p r i n t f ( " \nHay que d i s m i n u i r e l c o s t o de m a t e r i a l e s , p r o v o c a
menos p r o d u c c i o n \ n " ) ;
break;
c a s e 2 : p r i n t f ( "Dame e l c o s t o de mano de o b r a d i r e c t a \ n n) ;
s c a n f ( " 96d",&mod);
t o t a l = m o d 9000;
p r i n t f ("E l

costo u n it a r io

de mano de o b r a d i r e c t a

es

3 f", to ta l) ;
i f

(total<=2) p r i n t f ( " \nExcelente,


de o b r a d i r e c t a ha d i s m i n u i d o l o
p ro d u ccio n \n ");

www.FreeLibros.me

el

costo u n it a r io

que p r o v o c a mas

de mano

276

Captulo 9

Ejercicios resueltos

else
p r i n t f ( \nHay que d i s m i n u i r e l c o s t o de mano de o b r a
p r o v o c a menos p r o d u c c i o n \ n ) ;
break;
c a s e 3: p r i n t f ( " Dame e l

t o t a l de c o s t o s i n d i r e c t o s \ n u) ;

scanf('% d*,& cin);


t o t a l = c i n 19000;
p r i n t f ("E l

costo u n it a r io

de c o s t o s i n d i r e c t o s

es

$%.3 f " , t o t a l ) ;
i f

(total<=2) p r i n t f ( " \ n E x c e le n t e , e l

costo u n it a r io

c o s t o s i n d i r e c t o s ha d i s m i n u i d o l o

que p r o v o c a mas

p ro d u ccio n \n ");
e lse
p r i n t f ( " \nHay qu e d i s m i n u i r e l

c o s t o de i n d i r e c t o ,

p r o v o c a menos p r o d u c c i o n \ n " ) ;
break;
d e fau lt:
p r in t f( " O p c i n i n v a l i d a " );

}
getch();

>

9.5.8 Calcular el color de una onda de longitud


l * C o l o r e s onda l o n g i t u d */
f t i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
void main()

{
c lrs c rf);
in t 1;
p rin tf

( " E l programa t e p e r m i t e s a b e r e l

c o l o r qu e t i e n e una onda de

c i e r t a l o n g i t u d \ n " );
p rin tf

( "L o s promedios a l o s

p rin tf

que s e p u ede o b s e r v a r l a l u z

( " 1 )400nm\n2)45Qnm\n3)470nm\n4)500nm\n5)570nm\

n6)590nm\n7)61Qnm\n8)780nm\n") ;
p rin tf

("C u a l es e l

c a s o de l a

l o n g i t u d de l a

s c a n f ("%d",&1);
sw itch

son:\n");

(1)

www.FreeLibros.me

onda\n");

de

9.6 Estructura rep etitiva w h i l e

case

1: p r i n t f ( " o n d a s f u e r a d e l r a n g o de l a

277

lu z

v i s i b l e \ n " );

break;
c a s e 2: p r i n t f ( " e l

c o l o r es v i o l e t a \ n " );

break;
c a s e 3: p r i n t f ( e l

c o l o r es i n d i g o \ n " );

break;
c a s e 4: p r i n t f ( " e l

c o l o r es a z u l \ n " );

break;
c a s e 5: p r i n t f ( " e l

c o l o r es v e r d e \ n " );

break;
c a s e 6: p r i n t f ( " e l

c o l o r es a m a r i l l o " );

break;
case

7: p r i n t f ( e l

c o l o r es n a r a n j a \ n " );

break;
c a s e 8: p r i n t f ( " e l

c o l o r es r o j o \ n " ) ;

de fau lt:
p r i n t f ( " L a onda e s c a p a a l a

l o n g i t u d de onda de l a

lu z

v i s i b l e \ n " );

}
getchf);

9.6 Estructura repetitiva w toile


9.6.1 Calcular la produccin de cualquier empresa
en un da, una sem ana o un mes
/ * P r o d u c t o s en una h o r a * /
# i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
void m ain()

{
in t

t = 0 ,p= 0 ,m;

clrscr();
p r i n t f ("\n C alcu lar l a

p r o d u c c i n de c u a l q u i e r empresa en un d a ,

semana y mes \ n " ) ;


p r i n t f f " \ n Cu a nt os m i n u t o s s e t a r d a en s e r e l a b o r a d o e l p r o d u c t o
(dame m i n u t o s e n t e r o s ) ? \ n " ) ;

www.FreeLibros.me

278

Captulo 9

Ejercicios resueltos

scanff"*d",&m );
w h ile

(t<1440)

{
P=p+ 1 ;

t=t+m;

}
p r i n t f f " \ n L o s p r o d u c t o s e l a b o r a d o s en un d a s on : % d \ n " , p ) ;
p r i n t f ( " \ n L o s p r o d u c t o s e l a b o r a d o s en una semana s o n ( l u n e s a domingo)
* d \ n ' , p * 7) ;

p r i n t f f " \ n L o s p r o d u c t o s e l a b o r a d o s en un mes s on fm es de 30 d i a s ) :
96 d \ n , p * 3 0 ) ;
g e t c h f );

9.6.2 Sumar los elem entos de una progresin aritmtica


/* Suma de p r o g r e s i n a r i t m t i c a */
t t i n c l ude <coni o. h>
# i n c l u d e < s t d i o . h>
v o id m ainf)

{
c l r s c r f );
in t i,n ;
float sum,d, x , x 1 , r e s u l ;
printff"Sum a l o s

e l e m e n t o s de una p r o g r e s i n a r i t m e t i c a \ n " ) ;

p r i n t f f " D a m e e l numero de t r m i n o s de l a

progresin

s c a n f f U96d" , &n) ;
p r i n t f f "Dame e l

v a lo r d e l prim er term ino

");

s c a n f f "%f" , & x ) ;
p r i n t f f "Dame e l

v a l o r de l a

d ife re n cia

comn " ) ;

s c a n f ( " * 6f " , & d ) ;


=2 ;

x 1 =x;
sum=0 ;
p rin tff"* .2f

+ ", x) ;

while(i<=n)
{

x+=d;
p r i n t f f " * . 2f

+ ", x ) ;

www.FreeLibros.me

");

9.6 Estructura rep etitiva w h i l e

279

sum+=x;
r e su l =s um +x 1 ;

i+ +;
}
p r i n t f f " \ b \ b " );
p r i n t f f "= %. 2 f " , r e s u l ) ;
getchf);

9.6.3 Sum ar los elem entos de una progresin geomtrica


/* Suma de p r o g r e s i n g e o m t r i c a

*/

# i n c l u d e < c o n i o .h>
#include<stdio.h>
v o id main()

{
c lrs c rf);
in t i,n ;
float s u m , r , x , x 1 , r e s u l ;
p r i n t f f " S u m a l o s e l e m e n t o s de una p r o g r e s i n g e o m e t r i c a \ n " ) ;
p r i n t f f " D a m e e l numero de t r m i n o s de l a

progresin

s c a n f ( " 96 d " , & n ) ;


printff"D am e e l

v a lo r d e l prim e r term ino

) ;

s c a n f f "%f" , & x ) ;
printff"D am e e l

v a l o r de l a

razn

");

s c a n f f *%f" , & r ) ;
i =2;
x 1 =x;
sum=0 ;
p rin tff"% .2f

+ ", x ) ;

whilefi<=n)

{
x*=r;
p r i n t f f 2f

+ ",x);

sum+=x;
resul =sum+x 1 ;
i++;

}
p r i n t f f " \ b \ b " );

www.FreeLibros.me

");

280

Captulo 9

Ejercicios resueltos

p r i n t f ( "= %. 2 f " , r e s u l ) ;
getchf);

9.6.4 O btener la nm ina de hombres y mujeres,


y su promedio
/*Nmina*/
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void m ainf)

{
in t

x , p h t , nht,sexo,ptt,sumasm,sumasf;

float s m , s f ;
c l r s c r f );
p r i n t f f " \ n \ t C u a n t o gana n l o s hombres y m u j e r e s en t o t a l \ n \ t y e l
p r o m e d i o de a c u e r d o a l numero de e l l o s ? \ n " ) ;
surnasm=0 ;
sumas f = 0 ;
sm=0 ;
sf=0 ;
w h ile

( (sumasm<=1 0 0 0 0 ) && ( s u m a s f <=1 0 0 0 0 ) )

{
p rin tf("e lije

t u s e x o \ n 1 ) h o m br e\ n 2 ) m u j e r \ n " ) ;

scanf("% d", &sexo);


i f

(sexo== 1 )

{
sm=sm+1 ;
p r i n t f ( " I n g r e s e num.

de h o r a s t r a b a j a d a s

\n");

s c a n f f "%c/", &nh t) ;
p r i n t f ( " I n g r e s e pago p o r h o r a t r a b a j a d a \ n " ) ;
scanf('% d',& pht);
ptt=nht*pht;
p r i n t f ( n gana %c/ p e s o s

\n\n" , p t t ) ;

sumasm=sumasm+ptt;

}
else
{

sf=sf+1;

www.FreeLibros.me

9.6 Estructura rep etitiva w h i l e

p r i n t f ( " I n g r e s e num.

de h o r a s t r a b a j a d a s

\ n u) ;

s c a n f ( "%d",& n h t ) ;
p r i n t f ( " I n g r e s e pago p o r h o r a t r a b a j a d a \ n " ) ;
scanf("% d",&pht);
ptt=nht*pht;
p r i n t f ("GANA %c/ p e s o s

\n\n" , p t t ) ;

sumasf =su masf +pt t;

}
}
p r i n t f ( " l o s hombres ganan t o t a l :

%d p e s o s ,

p r o m e d i o : %. 2 f

%c/ p e s o s ,

promedio:

\n",sumasm,sumasm/sm);
p r i n t f ( " l a s m u j e r e s ganan t o t a l :
%. 2 f \ n " , sumasf , s u m a s f / s f ) ;
g e t c h f );

9.6.5 Calcular el precio del concreto segn


su resistencia
I *Cernex*I
t t i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
void main()

{
in t

x,p;

clrs c rO ;
p r i n t f ( "Te d a r e l p r e c i o de l a s
del

o lla s

de c o n c r e t o segn r e s i s t e n c i a

c o n c r e t o \ n " );

x=50;
p=10M;
w h ile

(x<=500)

{
p r i n t f ( " E l p r e c i o de l a

o lla

de cemex %c/ es %d p e s o s \ n " , x , p ) ;

x=x +50;

}
getch();
}

www.FreeLibros.me

282

Captulo 9

Ejercicios resueltos

9.6.6 Calcular el coeficiente de correlacin


entre dos variables
/ * C o e f i c i e n t e de c o r r e l a c i n * /
# i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
# i n c l u d e < m a t h . h>
v o id main()

{
c l r s c r ( );
double cov1 , r ,

x,

double r c o v , rdx,
in t

y,

sx= 0 , sy=0 , sxy= 0 , s x 2 =0 , s y 2 =0 , c o v ,

dx,

dy;

rd y , dx1, dy1;

cont= 0 ;

char op= 's';


c h a r o p 1= ' s ' ;
w h ile

( o p==' s 1 || o p == ' S')

{
p r i n t f ( " E l programa p e r m i t e c a l c u l a r e l

c o e f i c i e n t e de c o o r e l a c i o n

e n t r e dos v a r i a b l e s \ n ( d o s p a r e s de n m e r o s ) \ n " ) ;
w h ile

(op1=='s'

|| op1==' S ' )

{
p r i n t f ("Dame e l

v a l o r de x \ n " ) ;

scanf ("U f" ,& x );


p r i n t f ("Dame e l

v a l o r de y \ n " ) ;

scanf ("U f" ,& y );


cont=cont+1 ;
sx=sx+x;
sy=sy+y;
s x y =(x *y)+sxy;
s x 2 =sx2 + ( x * x ) ;
s y 2 =sy2 + ( y * y ) ;
p r i n t f ( " D e s e a i n g r e s a r o t r o c o n j u n t o de v a l o r e s ? \ n s i / n o \ n " ) ;
s c a n f ("% s",& op1) ;

}
cov=sxy-(sx*sy/cont);
c o v 1 = c o v / ( c o n t - 1) ;
dx=sx 2 - ( s x * s x / c o n t ) ;
d x 1= d x l ( c o n t - 1) ;
dy=sy 2 - ( s y * s y / c o n t ) ;

www.FreeLibros.me

9.6 Estructura rep etitiva w h i l e

283

d y 1 =dy/ ( c o n t - 1 ) ;
r dx =s qr t ( d x 1 ) ;
r dy =s qr t ( d y 1 ) ;
r=cov 1 / ( r d x * r d y ) ;
p r in t f ("El

c o e f i c i e n t e de c o r r e l a c i n

es %f\n",

r);

p r i n t f ( " D e s e a c a l c u l a r o t r o c o e f i c i e n t e de c o r r e l a c i o n ? \ n s i / n o \ n " ) ;
scanf ("te",&op);

}
getch();

9.6.7 Calcular el balance de masa


/*B a l a n c e de masa*/
/ * R e a c c i n de e l e m e n t o s * /
# i n c l u d e < s t d i o . h>
Uinclude<conio.h>
void m a in f)

{
f loat m,mf;
in t

e,n=1;

textco lor(R E D );
c l r s c r f );
g o t o x y ( 2 3 }3);
p r i n t f ( " B a l a n c e de mas a\n\n C u a n t o s e l e m e n t o s r e a c c i o n a n ?

") ;

scanf("% i",&e);
mf=0;
w h ile

(n<=e)

{
p r i n t f ( " \n I n t r o d u c e l a masa d e l e l e m e n t o %i :

",n);

s c a n f ( "%f" , &m);
mf=mf+m;
n=n+1 ;

}
p r i n t f (" \ n \ n L a masa t o t a l i n i c i a l

e s %f.

V e r i f i q u e que l a

de l o s p r o d u c t o s s e a l a misma que l a
getchf);
}

www.FreeLibros.me

de l o s

masa t o t a l

re activ os",m );

284

Captulo 9

Ejercicios resueltos

9.6.8 Imprimir la fraccin mol de los elementos


de un compuesto
/ * F r a c c i n mol*/
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void main()

{
in t

v,e;

float m,me, p o r e ;
textco lor(R E D );
c l r s c r f );
g o t o x y f 1 2 ,3);
printf("Im prim e l a

f r a c c i n mol de l o s

Cuantos elementos t i e n e e l

e l e m e n t o s de un c o m p u e s t o \ n \ n

com puesto?\n");

s c a n f ( " % i u,8,e);
p rin tf("\n

I n t r o d u c e l o s m ol e s d e l c o m p u e s t o \ n " ) ;

s c a n f ( "%f , &mc);
v= 1 ;
w h ile

(v<=e)

{
c l r s c r f );
p r i n t f ( " \n Dame l o s m ol e s d e l

e l e m e n t o %;

", v ) ;

s c a n f ( u*6fu,&m);
porc=m/mc;
p r i n t f ( " \n L a f r a c c i n mol d e l

compuesto % = ^sfmt v , p o r c ) ;

v=v+1 ;

}
getchf);

9.6.9 Calcular porcentaje en presin


/*Porciento presin*/
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
v o id m ainf)
{

float P T , p p , p o r c p ;

www.FreeLibros.me

9.6 Estructura rep etitiva w h i l e

285

i n t n= 1 , n e ;
textcolor(R E D );
c lrs c rf);
goto xy(19,3);
p r in t f("C a lcu lo
total

d e l p o r c e n t a j e en p r e s i o n \ n \ n I n t r o d u z c a l a

del sistem a:

presin

") ;

s c a n f ( "%f" , & P T ) ;
p r i n t f ( " \ n Ahora l a

c a n t i d a d de e l e m e n t o s / c omp uest os t i e n e l a

mezcla

g a s e o s a : ");
s c a n t ( " M " , &ne) ;
w h ile

(n<=ne)

{
p rin ttf"\n

Introduce l a p re si n p a r c ia l

d e l componente 96 \ n " , n ) ;

s c a n f ( " % f B, & p p ) ;
po r c p = p p / P T * 1 0 0 ;
p r i n t f ( " \ n E l p o r c e n t a j e en p r e s i n es=%f p a r a e l

compuesto

% i",p o rc p ,n ) ;
n=n+1 ;

}
g e t c h f );

9.6.10 Calcular los tomos de un elemento


/* Tomos de a l g n e l e m e n t o * /
# i n c l u d e < s t d i o . h>
Uinclude<conio.h>
void m ain()

{
f loat p a , g , a ;
char op= 'S';
textcolor(R E D );
w h ile

( o p = = ' S ')

{
c l r s c r f );
g o to xy( 2 6 ,3);
p r i n t f f " A t o m o s de un e l e m e n t o \ n \ n I n t r o d u c e e l p e s o a t m i c o d e l
e l e m e n t o \ n u) ;
s c a n t ( U96 f u,&p a) ;

www.FreeLibros.me

286

Captulo 9

Ejercicios resueltos

p r i n t f ( " \n A h o r a l o s gramos d e l

elemento\n");

scanf("% f",&g);
a=(g*6.023e23)/pa;
p r i n t f ( \n%f

t o m o s \ n \ n Desea c a l c u l a r l o

de n u e v o ? S/N:

,a);

scanf("% s",&op);

}
getch();

9.7 Estructura repetitiva d o w h i l e


9.7.1 Calcular el determ inante, dados el cofactor
y el vector
/* C l c u l o d e l

d e t e r m i n a n t e dados e l

vector y el

cofactor

*/

#include<stdio.h>
Hinclude<conio.h>
v o id main()

{
c lrs c r();
in t i,n ;
float c o f , a , s u m = 0 , p;
p r i n t f ( C a l c u l a e l
p r i n t f ( Dame e l

d e t e r m i n a n t e dados e l

o r d e n de l a m a t r i z

cofactor y el

) ;

s c a n f ( %d , & n ) ;
i= 1;
do

{
p r i n t f ( Dame e l componente %d d e l v e c t o r
s c a n f ( % f , & a ) ;
p r i n t f ( Dame e l v a l o r d e l c o f a c t o r

",i) ;

s c a n f ( *6f , & c o f ) ;
p=a* cof ;
sum+=p;

i ++;
}
while(i<=n) ;
p r i n t f ( E l

d e t e r m i n a n t e e s *6.2f ,sum) ;

getchf);

www.FreeLibros.me

",i) ;

v e c t o r \ n ) ;

9.7 Estructura repetitiva d o - w h ile

287

9.7.2 Calcular la frecuencia relativa de datos


/* C a l c u l a f r e c u e n c i a r e l a t i v a

de d a t o s

*/

# i n c l u d e < s t d i o .h>
#include<conio.h>
v o id main()

{
c l r s c r f );
i n t i = 1;
long i n t

c;

f loat x , f r e c , n ;
p r i n t f ("C alcu la l a
printf("Dam e l a

frecuen cia r e la t iv a

cantid ad t o t a l

de n d a t o s \ n " ) ;

de o b s e r v a c i o n e s a e v a l u a r

scanf("% f",&n);
p r i n t f ( " D a m e e l numero de c a t e g o r a s

") ;

scanf( "M d" ,& c);

do

{
p r i n t f ("Dame l a

c a n t i d a d en l a

c a t e g o r a %c/: " , i ) ;

s c a n f ( " 96 f " , & x ) ;


frec=x/n;
p r i n t f ( " L a f r e c u e n c i a r e l a t i v a es
i++;

}
while(i<= c) ;
getch();

9.7.3 Juego del ahorcado


/*Ahorcado*/
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
H in c lu d e< d os .h >
f t i n c l u d e < s t d l i b . h>
mai n( )

www.FreeLibros.me

,frec);

) ;

288

Captulo 9

Ejercicios resueltos

{
in t

op,

p,

c,

e;

c h a r 1;
e=0 ;
c=0 ;

elrser();
te x tco lo r(1 5 );
g o to x y ( 2 0 ,5);
c p r i n t f ( " B i e n v e n i d o a * A h o r c a d o **);
d e l a y ( 1 0 0 0 );
g o t o x y (20, 7);
c p r i n t f ( u1) J u g a r ) ;
gotoxy(2 0 ,9);
c p r i n t f ( 0) S a l i r ) ;
g o t o x y ( 2 0 , 1 2 );
c p r i n t f ( ( ) ) ;
g o to xy( 2 1 , 12);
d e la y ( 1000);
s c a n f(" % d ,&op);
switch(op)

{
c a s e 1: s r a n d ( t i m e ( N U L L ) ) ;
p=rand( )%5;
s w i t c h (p)

{
d e fau lt:
c l r s c r f );
c p r i n t f ( " A d i v i n a l a s l e t r a s ) ;
gotoxy( 2 0 , 10);
c p r i n t f ( ______ ) ;
do

{
goto xy(15,5);
c p r i n t f ( ( ) ) ;
gotoxy( 16,5);
i f

(e==5)

e x i t ( 1) ;
s c a n f ( %s , & l ) ;

www.FreeLibros.me

9.7 Estructura repetitiva d o - w h ile

s w i t c h (1 )

case

'L ' : g o t o x y ( 2 0 , 10);


c p r i n t f ( " L " );
g otox y( 2 0 , 11);
p r in t f( " C o r r e c t o ! ");
c = c +1 ;
break;

case

'I':

g o t o x y ( 2 2 , 10);
p r i n t f ( "I " );
g o t o x y ( 2 0 , 11);
c p r i n t f ( " C o r r e c t o ! ");
c = c +1 ;
break;

case

'Z' : g o to x y (24,10);
cprintf("Z ");
g o t o x y ( 2 0 , 11);
c p r in t f( " C o r r e c t o ! ");
c = c +1 ;

break;
d e fa u lt:
d e l a y (1000);
e=e+1 ;
gotoxy(15,5);
c p r i n t f ( " Numero
de e r r o r e s :
% d',e);
gotoxy(2 0 , 12);
cp rin tf("E rro r")

w h ile

( c ! =3 ) ;

}
d e l a y (1000);
break;
d e fa u lt:
e x it(1 );
}

getch();

www.FreeLibros.me

290

Captulo 9

Ejercicios resueltos

9.8 Estructura repetitiva f o r


9.8.1 Calcular la aceleracin de un cuerpo cada segundo,
los primeros ocho segundos
/* A c e l e r a c i n f i n a l * I
ttinclude

<c o ni o. h >

Hiel u d e

<stdio.h >

v o i d mai n ()

{
e lrse r

();

float v f ,

vo,

c h a r op;

op= 's';

w h ile

a,

t;

( op == ' s ' )

{
p r i n t f ( " E l programa c a l c u l a l a

a c e l e r a c i n c a d a segundo d u r a n t e l o s

oc h o p r i m e r o s s e g u n d o s \ n " ) ;
p r i n t f ("Dame l a
s c a n f ("^f",

& vo);

p r i n t f ("Dame l a
s c a n f ( n96 f " ,
for

v e l o c i d a d i n i c i a l \ n " );

a c e le r a c io n \ n " );

& a);

( t = 1 ; t<=8; t++)

{
vf=vo+(a*t);
p rin tf

( " L a a c e l e r a c i n a l o s %fs = % f \ n " ,

t,

vf);

}
p r i n t f ("Q u ie re s c a l c u l a r alguna o t r a
s c a n f ("9ss",

v e l o c i d a d f in a l? \ n " );

& op);

}
getch

();

9.8.2 Determ inar la cantidad de productos defectuosos


y perfectos
/ * C a l i d a d de l o s p r o d u c t o s * /
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

www.FreeLibros.me

9.8 Estructura rep etitiva f o r

void m ain()

{
i n t p r o ,c o n t ,p ,d e = 0 ,per=0 ;
clrs c rf);
p r i n t f ( u\ n \ t \ t C h e c a r l a

c a l i d a d de l o s p r o d u c t o s \ n " ) ;

p r i n t f ( " \ n C u a n t o s p r o d u c t o s s e e l a b o r a r o n ? \ n v) ;
s c a n f ( % d " , & p r o ) ;
for

( c o n t = 1 ;c ont <=pro; cont ++)

{
p r i n t f ( 1\ n E l p r o d u c t o , t i e n e a l g n d e f e c t o ? s i =1 no=2 \ n " ) ;
s c a n f ( U96dn, & p ) ;
if

(P=1)

{
p r i n t f ( " De sec ha e l p r o d u c t o \ n u) ;
de=de+1 ;

>
else

{
p r i n t f ("E l producto esta pe rfe cto ;

em pacalo\n");

per=per+1 ;

}
}
p r i n t f ( \nEl t o t a l

de p r o d u c t o s d e f e c t u o s o s e s =9o d " , d e ) ;

p r i n t f ( \nEl t o t a l

de p r o d u c t o s p e r f e c t o s e s =96d" , p e r ) ;

getchf);

9.8.3 Calcular el salario de un trabajador, dependiendo


de las piezas que elabor
/*Pago p o r c a d a p i e z a e l a b o r a d a */
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
void main()

{
in t p ie,tra,con t;
float sue= 0 , p a , s ;
c l r s c r f );
p r i n t f f " \ n \ t \ t S u e l d o de un t r a b a j a d o r p o r c a d a p i e z a e l a b o r a d a \ n " ) ;

www.FreeLibros.me

292

Captulo 9

Ejercicios resueltos

p r i n t f ( " \ n Cu a nt os empl eados t r a b a j a n p o r p i e z a s e l a b o r a d a s ? \ n " ) ;


scanf("% d",&tra);
for

( c o n t = 1 ;c o nt < = t r a ; c o n t + + )

{
p r i n t f ( " \nEmpleado numero 96d\n" , c o n t ) ;
p r i n t f ( " C u a n t a s p i e z a s e l a b o r a s t e ? \ n " );
s c a n f ( " 96 d " , & p i e ) ;
p r i n t f ( " C u a n t o s e t e pa g a p o r c a d a p i e z a ? \ n " ) ;
scanf("% f",&pa);
i f

( p i e <=30)

{
s =p a * p i e ;
sue=sue+s;
p rin tf("T u

sa la rio

es $% .2 f\n", s u e ) ;

}
else

{
s=(pa*pie)* . 2 0 ;
sue=sue+s;
p rin tf("T u

sa la rio

e s $%. 2 f " , s u e ) ;

}
}
getchf);

9.8.4 Calcular diluciones por pasos


/* D ilu c io n e s p o r pasos*/
t f i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void main()

{
ftoat c 1 , c 2 , v 1 , v 2 , n c ;
in t i,n ;
textco lor(R E D );
c l r s c r f );
goto xy(27,3);
p r i n t f ( " R e a l i z a una d i l u c i n p o r p a s o s \ n \ n I n d i c a de c u a n t o s p a s o s d e s e a s
re a liza r la

dilu ci n :

");

www.FreeLibros.me

9.8 Estructura rep etitiva f o r

293

s c a n f ( "%" , & n ) ;
p rin tf("\n

I n t r o d u c e e l p r i m e r v ol umen:

");

s c a n f f "%f" , & v 1 ) ;
p rin tf("\n

Y la

concentracin i n i c i a l :

");

s c a n f f " , & c 1) ;
p r i n t f ( u\n C u an t o volumen v a s a a g r e g a r ?

");

s c a n f f " % f " ,& v2 ) ;


c 2 =v1 * c 1 / ( v 2 +v1 ) ;
p r i n t f f u\n L a c o n c e n t r a c i n en l a
for

primer d i l u c i n

es:

",c2);

( i =1 ; i < n ; i + + )

{
c l r s c r f );
p r i n t f f " \ n Que volumen de l a

s o l u c i n c on l a

con centracin a n t e r io r

q u i e r e ? \ n " );
s c a n f ( H96 f " , &v 1 ) ;
p r i n t f ( n\n Que volumen va a a g r e g a r ? \ n " ) ;
s c a n f ( " % f n, & v 2 ) ;
n c = ( v 1 *c 2 ) / ( v 2 +v1 ) ;
p r i n t f ( " \n A h o r a l a

c o n c e n t r a c i n es

c 2 =nc;

}
g e t c h f );

9.8.5 Indicar los moles de un elemento


/*M o l e s * /
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void m a in f)

{
float n , o , m c , p e , p a e t mol;
in t i;
textcolor(R E D );
c l r s c r f );
g o t o x y ( 9 , 3);
p r i n t f ( " I n d i c a l o s m o l e s de c a d a e l e m e n t o de f o r m u l a m o l e c u l a r
desconocida\n\n

Dame e l num.

de e l e m e n t o s que t i e n e :

s c a n f f " % f ", & n ) ;


p r i n t f ( u\n A h o r a l a

masa d e l c o m p u e s t o : " ) ;

www.FreeLibros.me

");

294

Captulo 9

Ejercicios resueltos

s c a n f f "%f" , &mc);
f o r ( i =1 ;i <=n;i ++)

{
p rin tf("\n

I n t r o d u c e e l p o r c e n t a j e en p e s o d e l

e l e m e n t o 96 i \ n " , i ) ;

scanff"% f",& pe);


p r i n t f ( " \ n A hora e l peso atm ico d e l e le m e n t o \n ");
scanff"% f",&pae);
m o l = ( m c / f p e / 1 0 0 ) ) / p a e;
p r i n t f ( " \n%f m o l e s " , m o l ) ;

}
g e t c h f );

9.8.6 Indicar la cantidad de agua que se necesita


para diluir u na solucin
/ * D i s o l u c i o n e s */
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void m ainf)

{
float v 1 , v 2 , v a , c 1 , c 2 ;
in t i;
textcolor(R E D );
c lrs c rf);
gotoxy(32,3);
p rin tff"D iso lu cio n e s\n \n

Introduzca e l

volumen a d i l u i r :

");

s c a n f f "%f" , & v 1 ) ;
p r i n t f f " \n L a c o n c e n t r a c i n de d i c h a s o l u c i n :

") ;

s c a n f f " % f ", & c 1 ) ;


p r i n t f ( " \n F i n a l m e n t e l a

concentracin a l a

que q u i e r e l l e g a r :

");

scanff"*6f",&c2);

v 2 =v1 * c 1 I c 2 ;
va=v 2 - v 1 ;
p r i n t f ( " \n E l

volumen de agua a a g r e g a r e s %f. O t r a s c o n c e n t r a c i o n e s

( s u b m l t i p l o s d e l volumen i n i c i a l ) ", v a ) ;
for

( i = 1 ;i<=3;i ++)

www.FreeLibros.me

9.8 Estructura rep etitiva f o r

295

{
v 1 =v1 / 1 0 ;
v 2 =v1 * c 1 / c 2 ;
va=v 2 - v 1 ;
p r i n t f f " \n P a r a %f s e n e c e s i t a n

de a g u a " , v 1 , v a ) ;

}
getchf);

9.8.7 Calcular la presin parcial de un com ponente


/*Presin p a r c ia l* /
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void m ain()

{
float m , p , v , t , p t = Q ;
in t n ,i;
textco lor(R E D );
c l r s c r f );
g o to x y ( 2 6 ,3);
p r i n t f ("P re sio n e s p a r c ia le s \ n \ n

C u a n t o s componentes t i e n e e l g a s ? \ n " ) ;

s c a n t ( "%i" , & n ) ;
for

( i =1 ;i<=n;i++)

{
c l r s c r f );
p rin tf("\n

I n t r o d u c e l o s m o l e s d e l compuesto %;

s c a n t ( "%f" ,&m);
p r i n t f ( " \ n Ahora l a

temperatura:

");

s c a n t ( "%f" , & t ) ;
p r i n t f ( " \ n Finalm ente e l

vol umen:

");

s c a n f ( "%f" , & v ) ;
p=m*0 . 0 8 2 1 * t / v ;
pt =pt +p;
p r i n t f ( " \ n La p r e s i n p a r c i a l

p r i n t f ( " \ n La p re s i n t o t a l

d e l componente es:

es

getchf);

www.FreeLibros.me

",i);

296

Captulo 9

Ejercicios resueltos

9.8.8 Calcular la varianza de X


/* C a l c u l a l a

v a r i a n z a de X */

#include<stdio.h>
Hinclude<conio.h>
void main()

{
c l r s c r ( );
in t n ,i;
float e x , f x , x , p r o d , s u m ;
p rin tf("C a lcu la la

v a r i a n z a de X \ n " ) ;

p r i n t f ( " D a m e e l numero de v a l o r e s que s e tomaron p a r a X ") ;


s c a n f ( " 96 d " , & n ) ;
sum=0 ;
p r i n t f ( "Dame e l

v a l o r de l a

e s p e r a n z a de X ") ;

s c a n f ( "%f" , & e x ) ;
for

( i = 1;i<=n;i++)

{
p r i n t f ("Dame e l

v a l o r %c/ de X " , i ) ;

scanf("% f",&x);
p r i n t f ("Dame e l v a l o r %c/ de l a

f u n c i n de p r o b a b i l i d a d e s

scanf("% f",&fx);
prod=(x-ex)*(x-ex)*fx;
sum+=prod;

}
p r i n t f ( " L a v a r i a n z a de X e s d e : %.4 f " , sum);
g e t c h f );

9.8.9 Calcular la derivada de X a la n


/* D e r i v a d a s de X a l a

n */

# i n c l u d e < s t d i o . h>
f f i n c l u d e < c o n i o . h>
v o id main()

{
c l r s c r f );
in t

x,n,i,acum ,o;

p r i n t f ( " D e r i v a d a s de X a l a n de o r d en s u p e r i o r \ n " ) ;

www.FreeLibros.me

",i) ;

9.9 A rre g lo s u nidim ensionales

p r i n t f ("Dame l a

constante

");

p r i n t f ("Dame e l e x p o n e n t e

");

297

scanf("% d",&x);

s c a n f ( " 96 d " , & n ) ;


p rin tf("D e

que o r d en q u i e r e s c a l c u l a r l a

derivada?

");

scanf("%d",&o);
f o r ( i =1 ;i<=o;i ++)

{
x*=n;

}
prin tf("La

d e r iv a d a es

%c/XA%c/\n" , x, n)

getchf);

9.9 A rreglos unidim ensionales


9.9.1 Calcular la magnitud al cuadrado de un vector
/ * C l c u l o de l a

m a g n i t u d de un v e c t o r * !

# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
t t i n c l ude <mat h . h >
void m ain()

{
in t

e,i,a 2 0 ],a a 2 0 ],A A ;

printf("M agn itud a l

c u a d r a d o de un v e c t o r " ) ;

p r i n t f ( " De c u a n t o s e l e m e n t o s e s e l

vector

(mximo 2 0 ) ? " ) ;

scanf("% i",&e);
for

(i=0 ; i < e ; i = i + 1)

{
printf("Dam e e l

valor del

e l e m e n t o % d e l p r i m e r

s c a n f( " % i" , & a [ i] );

}
for

(i=0 ; i < e ; i = i + 1) a a [ i ] = a [ i ] * a [ i ] ;

AA =aa[ 0 ] ;
for

(i=1 ; i < e ; i = i + 1 ) AA=AA+aa[ i ] ;

p rintf("% i",A A );
g e t c h f );
}

www.FreeLibros.me

v e c to r",i+ 1 );

Captulo 9

Ejercicios resueltos

9.9.2 Calcular el producto cruz de dos vectores


/*Producto cruz*I
t f i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void main()

{
i n t i,a[3],b[3 ],ab[3 ],A B ;
p r i n t f ( " P r o d u c t o c r u z de dos v e c t o r e s " ) ;
p r i n t f ( " Re c u e r d a que so n de 3 e l e m e n t o s " ) ;
for

(i=0;i<3;i=i+1 )

{
p r i n t f ( " Dame e l v a l o r d e l e l e m e n t o % d e l p r i m e r v e c t o r " , i + 1) ;
sca n f("% i",& a [i]);

}
for

(=0; i< 3 ; i=i+1 )

{
p r i n t f ( " Dame e l

v a l o r d e l e l e m e n t o %i d e l segu ndo v e c t o r " , i + 1 )

sca n f("M ",& b [i]);

}
ab[0]= (a[2]*b[3J)-(b[2]*a[3J);
ab[1J=(a[1]*b[3J)-(b[1J*a[3J);
ab[2J=(a[1]*b[2])-(b[1J*a[2J);
A B = a b[ 0] ;
for

(i =1 ; i < 3 ; i = i + 1 ) AB=A B+ab[ i];

p r i n t f ( "%" , A B ) ;
getch();

9.9.3 Calcular el reactivo lim itante de una reaccin


/ * R e a c t i v o l i m i t a n t e */
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
void main()
{

float r e a c , p m , m o l e s [ 1 5 ] ,comp;
in t

c,i,elem ento;

www.FreeLibros.me

9.9 A rre g lo s u nidim ensionales

p r i n t f ( " R e a c t iv o l i m i t a n t e " );
prin tf("In d iq u e

c u a n t o s c omp uest os t i e n e l a

r e a c c i n (no mas de 1 5 ) " ) ;

scanf("*6i",&c);
for

(i= 0 ; i < c ; i = i + 1)

{
printf("Dam e l a

cantidad del

r e a c t i v o %",

i+ 1);

s c a n f ( "%f" , & r e a c ) ;
p rin tf("D a m e e l peso m o le cu la r del r e a c t i v o " );
scanf("%f",&pm);
m o l e s [ i ] =reac/pm;

}
comp=moles[(] ;
for

( i =1 ; i < c ; i = i + 1 )

{
if

(comp<moles[i])

{
comp=moles[iJ;
elemento=i;

}
}
p r i n t f ( "El r e a c t iv o l i m i t a n t e

e s %",

elem ento);

getchf);

9.9.4 Calcular la proyeccin entre dos vectores


de n elem entos
/* C a l c u l a l a

p r o y e c c i n e n t r e d o s v e c t o r e s de n e l e m e n t o s */

#include<stdio.h>
t t i n c l u d e < c o n i o .h>
v o id main()

{
in t n ,i;

float v 1 [ 1 0 0 ], v 2 [ 1 0 0 ] , pro, propun, mag 2 , den, e s c , com;


char op;
textco lor(B LU E );
textbackground(WHITE);
do

www.FreeLibros.me

299

300

Captulo 9

Ejercicios resueltos

c l r s c r f );
p r i n t f ( "C alcula l a

p r o y e c c i n e n t r e dos v e c t o r e s \ n \ n " );

p r i n t f ( " Dame e l numero de e l e m e n t o s de l o s

vectores:

");

scanf("%d",&n);
propun=(d;
den=0 ;
p rin tf("\n ");
f o r ( i = 0 ; i < n; i + + )

{
p r i n t f ( " Dame l a

componente %c/ d e l

vecto r sobre e l

cual

p r o y e c c i n : " , i +1);

scanf('% f,& v1[i]);


}
p r i n t f ( " \ n " );
f o r ( i = 0 ;i < n ; i ++ )

{
p r i n t f ("Dame l a

componente %c/ d e l

otro

vector:

",i+ 1);

p r i n t f ( " \nLa p r o y e c c i n r e s u l t a n t e e s e l

vector:

") ;

s c an f("% f" ,& v2 ( i ] ) ;

}
for

( i = 0 ; i < n; i + + )

{
pro=v1 [ i j * v 2 [ i j ;
propun+=pro;
mag2 =v1 [ i ] * v 1 [ i ] ;
den+=mag2 ;

}
esc=propun/ den;

p r i n t f ("{
for

");

( i = 0 ;i < n ; i ++ )

{
com=v1 [ i ] * e s c ;
p rin tf(

"%. 2 f

" ,com) ;

}
p rin tf("} \n ");
p r i n t f ( " \nDesea c a l c u l a r o t r a p r o y e c c i n ? S / N " ) ;
s c a n f ( "%s", & o p ) ;
}

www.FreeLibros.me

es l a

9.9 A rre g lo s u nidim ensionales

301

w h i l e ( (op==' s ' ) \\(op=='S') ) ;


getchf);

9.9.5 Calcular el ngulo en grados entre dos vectores


/* n g u l o en g r a d o s e n t r e dos v e c t o r e s de n componentes */
# i n c l u d e < s t d i o .h>
# i n c l u d e < c o n i o . h>
t t i n c l u d e <math.h>
v o id main()

{
in t n ,i;
float v 1 [ 1 0 0 ] , v 2 [ 1 0 0 ] ,m1 ,m2,mag1, mag2 , p r o , p r o p u n , x , a n r a d , a n g r a d ;
c h a r op;
textcolor(W HITE);
textbackground(BLUE);
do

{
c l r s c r f );
p rin tf("C a lcu la

el

ngulo e n t r e dos v e c t o r e s \ n \ n " );

p r i n t f ( " Dame e l numero de e l e m e n t o s de l o s

vectores:

") ;

s c a n f ( U96 d " , & n ) ;


mag 1 =0 ;
pr o pu n = 0 ;
mag2 =0 ;
p r i n t f ( \n");
for

( i = 0 ; i < n; i + + )

{
p r i n t f ( " Dame l a

componente %c/ d e l p r i m e r v e c t o r :

" ,i+1);

s c a n f ( " * 6f " , & v 1 [ i ] ) ;

}
p rin tf("\n ");
for

( i = 0 ; i < n; i + + )

{
p r i n t f ( " Dame l a

componente %c/ d e l

segundo v e c t o r :

s c a n f ( " * 6f " , & v 2 [ i ] ) ;

}
for

( i = 0 ;i < n ; i ++ )

www.FreeLibros.me

" , i + 1) ;

302

Captulo 9

Ejercicios resueltos

{
pro=v1 [ i ] * v 2 [ i j ;
propun+=pro;
m1 =v1 [ i ] * v 1 [ i ] ;
mag 1 +=m1 ;
m2=v2[i]*v2[];

mag2 +=m2 ;

}
x = pr o pu n /( s q r t ( m a g 1 *mag2 ) ) ;
anrad=acos(x);
a n gr ad= 18 0* anr ad/ 3 . 1 41 59 ;
p r i n t f ( " \nEl ngulo e n tre l o s

v e c t o r e s e s de 96 . 2 f o \ n u, a n g r a d ) ;

p r i n t f ( H\nDeseas h a c e r o t r o c a l c u l o ? S / N ' ) ;
scanf("*6S",&op);

}
w h il e ((op=='s')\\(op=='S-));
getchf);

9.9.6 Calcular la desviacin estndar y varianza


muestral de n datos
/* C a l c u l a l a

d e s v i a c i n e s t n d a r y v a r i a n z a m u e s t r a l de n d a t o s

#include<stdio.h>
i t i n e l ude <coni o. h>
# i n c lu d e< ma th . h>
v o id main()

{
in t i,n ;
c h a r op;
float d a t o [ 1 00 ] , sum, pro m, v a r , d e s v , s u m a t ;
textbackground(BLUE);
textcolor(W HITE);
do

{
c l r s c r f );
sum=0 ;
sumat= 0 ;

www.FreeLibros.me

*/

9.9 A rre g lo s u nidim ensionales

p rin tf("C a lcu la la

d e sv ia ci n estndar y l a

303

v a r i a n z a de n d a t o s \

n\n");
p r i n t f ( " Dame e l numero de d a t o s de t u m u e s t r a :

");

s c a n f ( U96 d" ,& n) ;


p r i n t f ( \n") ;
for

( i = 0 ; i < n; i + + )

{
p r i n t f ( " Dame e l

v a l o r %c/ de t u m u e s t r a :

" , i + 1);

s c a n f f "%f", & d a t o [ i J ) ;
s u m+ = da to [ i] ;

}
prom=sum/n;
for

(i=<d;i<n;i++)

{
s u m a t + = p o w ( d a t o [ i ] - pr om, 2 ) ;

}
v a r = s u m a t/ ( n - 1) ;
desv=sqrt(var);
prin tf("\n La

v a r i a n z a es i g u a l

a 96 . 3 f \ n " , v a r ) ;

p r i n t f ( " \nLa d e s v i a c i n e s t n d a r e s i g u a l

a: 96 . 3 f \ n , d e s v ) ;

p r i n t f ( " \nDeseas r e p e t i r e l p r o g r a m a ? S / N " ) ;


s c a n f f "%s", & o p ) ;

}
w h ile

f(op=='s' )\ \(o p = 'S ' ) ) ;

g e t c h f );

9.9.7 Calcular el producto punto entre tres vectores


/ * P r o d u c t o p u n t o e n t r e v e c t o r e s */
ttinclude

< co ni o. h>

ttinclude

<stdio.h >

t t i n c l ude <mat h . h >


v o i d mai n ()

{
c lrs c r

();

www.FreeLibros.me

304

Captulo 9

float v 1 [ 1 0 ] ,
in t i,

v 2 [ 10],

Ejercicios resueltos

v3[ 1 0 ] ;

n;

char op= 's';


p rin tf

( " p r o d u c t o p u n t o e n t r e 3 v e c t o r e s \ n u) ;

w h ile

( o p= ' s 111 o p == ' S ' )

{
p rin tf

("Dame l a m edi da de l o s

scanf
for

v e c t o r e s max 1 0 \ n " ) ;

& n);

( i = 0 ; i < n ; i++)

{
p r i n t f ("Dame e l
s c a n f ("%f",

d a t o %c/ d e l p r i m e r v e c t o r \ n " , i + 1 ) ;

& v1 [ i ] );

p r i n t f ("Dame e l d a t o %c/ d e l
s c a n f ("%f",

& v2 [ i j ) ;

p r i n t f ("Dame e l d a t o %c/ d e l
s c a n f ("%f",

segundo v e c t o r \ n " , i + 1 ) ;

t e r c e r v e c t o r \ n " , i+ 1);

& v 3 [ij);

}
for

( i = 0 ; i < n ; i++)

p rin tf

("el

componente %c/ d e l p r o d u c t o p u n t o e n t r e l o s v e c t o r e s es

% 7.2f\n", i+1,
p rin tf

v1 [ i ] * v 2 [ i ] * v 3 [ i ] ) ;

("Deseas c a l c u l a r o t r o p ro d u c t o p u n t o \ n ? " );

scanf

& op);

}
getch

();

9.9.8 Calcular los estim adores de la recta de regresin


/ * E s t i m a d o r e s */
ttinclude

<c o ni o. h >

include

<stdio.h >

H i n d u de <math.h>
v o i d mai n ()

{
c l r s e r f );
in t i,

n , X;

float x [ 3 0 ] , y [ 3 0 ] ,

a=0, b=0,

c=0,

c o v , d=0, B0,

B 1 , Y , my=0;

char op = 's';
p rin tf

( " E l programa c a l c u l a l o s

e s t i m a d o r e s de l a

r e g r e s i o n \ n " );

www.FreeLibros.me

r e c t a de

9.9 A rre g lo s u nidim ensionales

w h ile

305

( 0p = =' S '\\op=='S')

{
p r i n t f ("Dame l a
s c a n f ("%d",
for

c a n t i d a d de d a t o s ,

max 3 0 \ n " ) ;

& n);

( i = 0 ; i < n ; i++)

{
p rin tf

("Dame un v a l o r d e l

s c a n f ("%f",
p rin tf

& x [ij);

("Dame un v a l o r d e l

scanf ("* f",

e j e x \ n " );

e j e y \ n " );

& y [i]);

a= a+ (x [i]*y [i]);
b=b+x[i];
c=c+y[i];
d=d+pow(x[i ] , 2 ) ;
my=my+y [ i ] ;

}
Y=my/n;
p r i n t f ("Dame e l
s c a n f ("%d",

v a l o r de X \ n " ) ;

& X);

B 1 = ( a - ( ( b * c ) l n ) ) l ( d - ( p o w( b , 2 ) / n ) ) ;
B 0= Y- ( B 1 * X ) ;
p rin tf

("B1=*6f\n",

B1);

p rin tf

("B0^6f\n",

B0);

p r i n t f ( " L a r e c t a de r e g r e s i n e s t a dada p o r % 7 . 4 f + % 7 . 4 f \ n " , B0,


p r i n t f ( " D e s e a s c a l c u l a r o t r a r e c t a de r e g r e s i n ? s / n \ n " ) ;
scanf

& op);

}
getch

();

9.9.9 Calcular el coeficiente de correlacin


C o e f i c i e n t e de c o r r e l a c i n * /
ttinclude

< co ni o. h>

ttinclude

<stdio.h >

t t i n c l ude <mat h . h >


v o i d mai n ()
{

www.FreeLibros.me

B1);

306

Captulo 9

Ejercicios resueltos

c l r s c r ( );
in t i,

n;

float x[ 3Q] ,

y [30],

a=0, 0=0,

c=0,

cov,

d=0,

e=0,

cdc;

char op= 's';


p rin tf
w h ile

( " E l programa c a l c u l a

el

c o e f i c i e n t e de c o r r e l a c i o n \ n " ) ;

(op=='s'\\op=='S' )

{
p r i n t f ("Dame l a
s c a n f ( a%du,

for

c a n t i d a d de d a t o s ,

max.

3Q\n");

& n);

( i = 0 ; i < n ; i++)

{
p rin tf

("Dame un v a l o r d e l

s c a n f ("%f",
p rin tf

& x [ i ] );

("Dame un v a l o r d e l

scanf ( " * f ,

e j e x \ n " );

e je y \ n " );

& y [i]);

a= a+ (x[i]*y[i]) ;
b=b+x[i] ;
c=c+y[i];
d=d+pow(x[iJ, 2 ) ;
e=e+pow(y[i], 2 ) ;

}
c o v = ( ( a - ( ( b * c ) / n ) ) I ( n - 1) ) ;
cdc=pow((a-((b*c)/n))/(d-(pow(b,2)/n)*(e-(pow (c,2) / n ) ) ) ,

1 / 2 );

p r i n t f ( " L a c o v a r i a n z a es 96 7 . 4 f \ n , c o v ) ;
p r in t f ("El
p rin tf

c o e f i c i e n t e de c o r r e l a c i n

cdc);

( " D e s e a s c a l c u l a r o t r o c o e f i c i e n t e de c o r r e l a c i n ? s / n \ n " ) ;

s c a n f ( m%sa , & o p ) ;

}
getch

e s 96 f \ n " ,

();

9.9.10 Calcular la covarianza


/*Covarianza*/
Uinclude

<c o ni o. h >

itinelude

<stdio.h >

itinelude

<math.h>

v o i d mai n ()

www.FreeLibros.me

9.9 A rre g lo s u nidim ensionales

307

{
c l r s c r f );
in t i,

n;

float x [ 3 0 J , y [ 3 0 ] ,

a=0, b=0,

c=0,

cov;

char op= 's';


p rin tf
w h ile

( " E l programa c a l c u l a l a

co v a ria n za \n ");

(op=='s'\\op=='S')

{
p r i n t f ("Dame l a

c a n t i d a d de d a t o s ,

max.

3 0 \ n " );

s c a n f ("*6d", & n) ;
for

( i = 0 ; i < n ; i++)

{
p rin tf

("Dame un v a l o r d e l

s c a n f ("*6f",
p rin tf

& x [ij);

("Dame un v a l o r d e l

scanf ( " * f ,

e je x \ n " );

e j e y \ n " );

& y [i]);

a= a+ (x[i]*y[i]);
b=b+x[i];
c=c+y[i];

c ov =( ( a - ( ( b * c ) / n ) ) / ( n - 1) ) ;
p rin tf

( " L a s u m a t o r i a d e l e j e x e s % 7 . 2 f \ n ",

b);

p rin tf

( " L a s u m a t o r i a d e l e j e y e s 96 7 . 2 f \ n " ,

c);

p rin tf

( " L a s u m a t o r i a de l a

m u ltip lica ci n

de l o s e j e s e s % 7 . 2 f \ n ",

a);
p rin tf

("L a c o v a r ia n z a es % 7 .4 f\n",

cov);

p rin tf

("Deseas c a l c u l a r o t r a c o v a r ia n z a ? s / n \ n " ) ;

s c a n f ( a%sm, & o p ) ;

}
getch

();

9.9.11 Calcular ganancias y ventas de una pastelera


/ * I n v e n t a r i o de una p a s t e l e r a * /
t f i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>

www.FreeLibros.me

308

Captulo 9

Ejercicios resueltos

v o id main()

{
in t
float

d , p [ 3 0 ] , g [ 3 0 ] , p a [ 30] ,ac=0,acu=0,acum=Q, x , i ;
dp,d pa,dg;

c l r s c r f );
p r i n t f ( " \ t \ t I n v e n t a r i o de una p a s t e l e r i a \ n " ) ;
p r i n t f ( " \nCon e s t e i n v e n t a r i o

t e d a r l a s g a n a d a s y v e n t a s de l o s

d i a s qu e q u i e r a s \ n " ) ;
p r i n t f ( " \nDame e l p r e c i o de un p a s t e l \ n " ) ;
s c a n f ( " 96 f u, & d p ) ;
p r i n t f ( " Dame e l p r e c i o de una g e l a t i n a \ n " ) ;
scanf("% f",&dg);
p r i n t f ( " Dame e l p r e c i o de un p a y \ n " ) ;
s c a n f ( U96 f \ & d p a ) ;
p r i n t f ( " De c u a n t o s d i a s q u i e r e s t e n e r t u i n v e n t a r i o ( m x i m o un mes)?

\n");
s c a n f ( " 96du, & d ) ;
for

( i = 0 ; i< d ; i + + )

{
p r i n t f ("Dame e l t o t a l

de v e n t a s en e l

d i a %c/\r?" , i + 1 ) ;

p r i n t f ( " C u a n t o s p a s t e l e s v e n d i s t e ? \ n " );
scanf("% d",8,p[il);
p r in tf( " C u a n ta s g e la t in a s v e n d is te ? \n ");
s c a n f ( "%c/", & g [ i ] ) ;
p r i n t f ( " C u a n t o s pays v e n d is te ? \n " );
s c a n f ("% d",&pa[i]);
ac=ac+p[i];
acu=acu+g[i],
acum=acum+pa[i];

}
p r i n t f (" \n El t o t a l

de v e n t a s en

d ia s fueron:\n" , d ) ;

p r i n t f ( " \n \ t \ t p a s t e l e s \ t \ t g e l a t i n a s \ t \ t p a y s \ n \ n " ) ;
p r i n t f ( " \ t \ t 96d\t \ t \ t%c/\ t \ t \ t %d ", a c , ac u , acum) ;
p r i n t f ( " \n\nDe que d i a q u i e r e s s a b e r l a s g a n a n c i a s que o b t u v i s t e ? \ n ) ;
scanf("% d",&x);
p r i n t f ( \ n \ t E l d i a %c/ o b t u v i s t e l a

s ig u i e n t e s ganancias y ventas\

n",x);
p r i n t f ( " \ n \ t P a s t e l e s : %c/ v e n t a s con una g a n a n c i a de 96 . 2 f \ n " , p [ x -

1], P ( x - 1 ] * d p ) ;

www.FreeLibros.me

9.10 A rre g lo s bid im ensionales

p r i n t f f " \ n \ t G e l a t i n a s : %c/ v e n t a s co n una g a n a n c i a de


96 . 2 f \ n " , g [ x - 1 ] , g [ x - 1 ]*dg) ;
p r i n t f f " \ n \ t P a y s : %c/ v e n t a s c on una g a n a n c i a de
%. 2 f \ n " , p a [ x - 1 ] , p a [ x - 1 ] *dpa) ;
g e tc h f);

9.10 A rreglos bidim ensionales


9.10.1 Calcular la matriz traspuesta
/ * M a t r i z t r a s p u e s t a */
ttinclude

< co ni o. h>

include

<stdio.h >

v o i d mai n ()

{
e lrse r

();

in t i,

j,

m[ 1 0 J [ 1 0 ] ,

n,

x;

p r i n t f ( " M a t r i z t r a s p u e s t a \ n " );
p r i n t f ("Dame e l numero de f i l a s \ n " ) ;
s c a n f ("%c/",

& n);

p r i n t f ("Dame e l numero de c o l u m n a s \ n " ) ;


scanf ("W ",
for

& x);

(i=Q; i < n ; i++)

for

( j = 0 ; j <x; j++)

{
p rin tf

("Dame e l

scanf ( ' W ,

e l e m e n t o c on c o o r d e n a d a %c/ 96 d \ n " , i + 1 , j + 1 ) ;

& m [ i ] [ j ]);

}
for

j < * ; 1++)

{
for

( i = 0 ; i < n ; i++)

{
p rin tf

('%d ",

m [ i ] [ j ]);

}
p rin tf

("\n");

}
getch

();

www.FreeLibros.me

309

310

Captulo 9

Ejercicios resueltos

9.10.2 Crear una tabla con los tipos de concreto


disponibles, junto con sus resistencias
/*Concretos*/
# i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
void main()

{
in t

con[99][99], c , s , x , y ;

c l r s c r ( );
p r i n t f ( "Tabulare l a
nCuantos t i p o s

re siste n cia

de c o n c r e t o s seg n l a

de c o n c r e t o s t i e n e s ?

semana de p r u e b a \

\n");

scanf("%d",&c);
p r i n t f ( C u a n t a s semanas h a r a s p r u e b a s ? \ n " ) ;
s c a n f ( " 96d , & s ) ;
for

(x= 0 ;x<c;x++)

{
for

(y=0 ;y<s;y++)

{
printf("D im e l a

re siste n cia

del

c o n c r e t o %c/ en l a

semana

\ n " , x + 1 , y +1 ) ;
scanf("% d",&con[x][y]);

}
}
for

(x= 0 ;x<c ;x++)

{
p r i n t f ( " \n");
for

(y=Q;y<s;y++)

{
p r i n t f ( a%d " , c o n [ x ] [ y J ) ;

}
}
getch();

y
9.10.3 Calcular la determ inante de un matriz triangular
/ * D e t e r m i n a n t e de una m a t r i z t r i a n g u l a r */
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

9.10 A rre g lo s bid im ensionales

311

# i n c l u d e < c o n i o . h>
void m ain()

{
i n t i , j , x ( 1 0 ] [ 1 0 ] , d e t = 1, t ;
c l r s c r ( );
g o t o x y f 1 6 ,3);
p r i n t f ( " D e t e r m i n a n t e de una m a t r i z t r i a n g u l a r \ n \ n
de l a

m atriz

(m x.

10x 1 0 ,

Introduzca e l

tamanio

s o l o m a t r i c e s c u a d r a d a s \ n u) ;

s c a n f ( "% i" , & t ) ;


for

(i= 0 ; i < t ; i + + )

f o r ( j = 0 ;j<t;j++)

{
if

(j==i)

{
p r i n t f ( " \n Dame e l v a l o r en l a

p o s i c i n %,%;

" , i + 1 , j +1);

s c a n f ( U96 i" , & x [ i ] [ j ] ) ;

}
}
for

(i= 0 ; i < t ; i + + )
f o r ( j =0 ;j < t ; j++) i f ( j = i )

d e t = d e t * x [ i ] [ j ];

p r i n t f ( \n E l d e t e r m i n a n t e e s : % ",c/et;;
getch();

9.10.4 Calcular la determ inante de una matriz de 2 x 2


/ * D e t e r m i n a n t e de una m a t r i z de 2x2*/
# i n c l u d e < s t d i o .h>
# i n c l u d e < c o n i o . h>

void m ain()

{
i n t j , i , x [ 2 ] [ 2 ],det;
g o to x y f2 6 ,3);
p r i n t f ( " D e t e r m i n a n t e de una m a t r i z de 2 x 2 \ n \ n " ) ;
for

( i = 0 ; i < 2 ;i++)

for

( j = 0 ; j < 2 ;j++)

www.FreeLibros.me

312

Captulo 9

p r i n t f ( " \n Dame e l

Ejercicios resueltos

v a l o r en l a p o s i c i n W , M " , i + 1 , j +1);

s c a n f ( 't e * , & x [ i] [ j ]);

}
d e t = ( x [ 0 J [ 0 ] * x [ 1 ) [ 1 J ) - ( x [ 1) [ 0 ] * x [ 0 ] [ 1 J ) ;
p rin tf("\n El

d e te rm inante es % i " , d e t ) ;

getch();

9.10.5 Devolver el inventario por sem ana


/ * I n v e n t a r i o de una semana*/
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void main()

{
i n t p ro [30][5],i ,j , s ,s e , to ta l;
c l r s c r f );
p r i n t f ( I n v e n t a r i o de p r o d u c c i n de una s e m a n a ( 5 d i a s ) \ n " ) ;
prin tf("D e

c u a n t a s semanas q u i e r e s t u i n v e n t a r i o ? \ n " ) ;

scanf("% d",&se);
for

(i= 0 ;i<se;i++)

{
total= 0 ;
p r i n t f ( " SEMANA %cT, i + 1 ) ;
for

( j =0 ;j <5 ;j ++ )

{
p r i n t f ( " \nDame l a

p r o d u c c i n d e l d i a 96 d \ n " , j +1) ;

scanf C * d ',& p ro [ i] [ ] ] ) ;
t o t a l = t o t a l + p r o [ i ] [ j ];

}
p r o [ i ] [ j J= total;

}
p r i n t f ( "De que semana q u i e r e s s a b e r l a

pro du ccio n ?\n ");

s c a n f ( " W ' ,&s) ;


p r i n t f ( " \ n \ t \ t S e m a n a %c/",s;;
for

( j =0; j <5; j ++)

p r i n t f ( " \ n \ t \ t D i a %c/ = %c/ p r o d u c t o s \ n " , j +1 , p r o [ s - 1 ]

(j]);
getch();

www.FreeLibros.me

9.10 A rre g lo s bid im ensionales

313

9.10.6 Calcular en qu turno de la em presa


se elaboran ms piezas
/*T u r n o s de una empresa*/
# i n c l u d e < s t d i o . h>
f t i n c l u d e < c o n i o . h>
void m ain()

{
in t

t , e m , a c , i , j , x , m , p r , p [ 5 ] [80];

f loat s a l ;
c l r s c r f );
p r i n t f ( " \ t \ t E n que t u r n o de l a

empresa r e a l i z a n mas p r o d u c c i o n \ n " ) ;

p r i n t f (" \ n Cu a nt os t u r n o s b r i n d a l a

empresa p a r a l o s t r a b a j a d o r e s ? \ n " ) ;

s c a n f ( " * 6d " , & t ) ;


p r i n t f ( " C u a n t o s e mp l ea do s e l a b o r a n en c a d a t u r n o \ n ? " ) ;
s c anf (" *6d*,&em);
for

(=0 ;< t;+ + )

{
ac= 0 ;
p r i n t f ( " T U R N O NUMERO % d \ n " , i + 1 ) ;
for

(j=Q;j<em;j++)

{
p r i n t f ( " \ n C ua n ta s p i e z a s e l a b o r a s t e ,

t r a b a j a d o r ? %d\n",j+1);

s c a n f ( *%da, & p [ i ] [ j ] ) ;
ac= ac+ p[ij[jj;

}
p [ i ] l em ] =ac;

}
for

( i = Q ; i < t ; i + + ) p r i n t f ( " \ n \ t T u r n o %d\t p r o d u j o . . . .


\n\n

%c/ p i e z a s

, i +1 , p [ i ] [ e m ] ) ; ;

p r i n t f ( " De que t r a b a j a d o r d e s e a s s a b e r su s a l a r i o p o r p i e z a e l a b o r a d a ?

\ n n) ;
p r i n t f ( " \ n \ t \ t P o r cada p i e z a

0. 9 p e s o s \ n " ) ;

p r i n t f ( " \nEn qu e t u r n o l a b o r a ? \ n ) ;
scanf("% d",&x);
p r i n t f ( " Q u e numero de t r a b a j a d o r e s ?

\n");

s c a n f ( U96d",&m);
p r i n t f ( "E l

t r a b a j a d o r %c/ d e l

t u r n o %c/ e l a b o r o %d p i e z a s \ n " , m , x , p [ x - 1 ]

[m-1]);

www.FreeLibros.me

314

Captulo 9

Ejercicios resueltos

s a l = p [ x - 1 ] [m-1] * . 8 9 ;
p rin tf("\n \tP o r lo

t a n t o o b t u v o un s a l a r i o

de

$% .2f",sal);

getch();

9.10.7 Calcular la cantidad de grasa perdida


segn las horas de ejercicio realizadas
/ * C o n t r o l de p e s o * /
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
void main()

{
i n t peso[4][5], i , j , s , s e , p , to ta l;
c l r s c r ( );
p r i n t f ( " T i e m p o de e j e r c i c i o

(semana de 5 d i a s ) \ n " ) ;

p r i n t f ( De c u a n t a s semanas q u i e r e s t u c o n t r o l de p e s o ? \ n " ) ;
s c a n f ( U96 d " , & s e ) ;
for

( i = 0 ;i<se;i+ +)

{
t o t a l =0 ;
p r i n t f ( " S e m a n a %c/", i + 1 ) ;

for

( j = 0; j <5 ;j ++ )

{
p r i n t f ( " \ n C ua n ta s h o r a s de e j e r c i c i o

re a liza ste

en e l

dia?

% d \n " , j+ 1) ;
scanf("% d",& peso[i][j]);
t o t a l = t o t a l + p e s o [ i ] [ j ];

}
p= total;

}
p rin tf("D e

que semana q u i e r e s s a b e r l a

c a n t i d a d de h o r a s que

r e a l i z a s t e ? \ n " );
scanf("%d",&s);
p r i n t f ("\n\t\tSemana
for

(j=0;j<5;j++)

www.FreeLibros.me

9.10 A rre g lo s bid im ensionales

p r i n t f ( " \ n \ t \ t D i a %d = %d h o r a s \ n " , j +1 , p e s o [ s -1 ] [ j J ) ;

}
p r i n t f ( " \ n \ t \ t 1 h r s .................. Quemas 150 K C A L " ) ;
p r i n t f ( " \n\n\tEl to ta l
p r i n t f ( \n\tPor l o

de h o r a s de l a

tanto,

semana %c/ f u e de %c/", s , p ) ;

qu emast e %c/ k i l o c a l o r i a s " , p * 1 5 0 ) ;

getchf);

9.10.8 Calcular la raz cuadrada de una matriz


/ * f a z c u a d r a d a m a t r i z */
# i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o . h>
t t i n c l ude <mat h . h >
void m ain()

{
f loat x [ 2 0 ] [ 2 0 ] , y [ 2 0 ] [ 2 0 J ;
in t i,j , f, c ;
te x tco lo r(3 );
textbackground(0) ;
c lrs c rO ;
g o t o x y ( 1 5 , 5 ) ; p r i n t f ( " R a i z c u a d r a d a de una m a t r i z " ) ;
p r i n t f ( \n\n\nNumero de f i l a s :

") ;

s c a n f f "%c/n, & f ) ;
p r i n t f ( " \nNumero de c o l u m n a s :

");

s c a n f ( n96d , & c ) ;
p r i n t f ( \ n \ n \ n ) ;
for

(i=0 ;i< f;i+ + )

{
for

(j=0 ;j<c;j++)

{
p r i n t f ( "Dame e l

e l e m e n t o 9&d, %c/: " , i + 1 , j +1 ) ;

scanf( "% f',& x [i][j]);


y [ i ] [ j ] = s q r t ( x [ ij [ j J );

}
}
p r i n t f ( " \n\nM atriz o r i g i n a l \ n " );
for

(i= 0 ;i< f;i+ + )

www.FreeLibros.me

315

316

Captulo 9

for

Ejercicios resueltos

( j = Q ; j < c ; j + + ) p r i n t f f %. t f

, x [ i ] [ j ] ) ;

p r i n t f f \ n ) ;

}
p r i n t f ( " \ n \ n R a i z c u a d r a d a de l a
for

m atriz:

\n");

( i = 0 ; i < f ;i++)

{
for

( j= 0 ;j<c;j++)

p r i n t f f H . l f , y [ i ] [ j ]);

p r i n t f f \n) ;

}
getchf);

9.10.9 Calcular la multiplicacin de una matriz


por un escalar
/* M u l t i p l i c a c i n

de m a t r i z p o r un e s c a l a r

*/

#include<stdio.h>
Hinclude<conio.h>
v o id main()

{
textcolor(W HITE);
t e x t b a c k g r o u n d ( BLUE) ;
in t i,j,m ,n ;
c h a r op;
float m a t l [ 1 0 ] [ 1 0 ] , m a t 2 [ 1 0 ] [ 1 0 ] , e s c ;
do

{
clrscr();
p rin tff"M u ltip lica ci n

de m a t r i z p o r un e s c a l a r \ n \ n " ) ;

p r i n t f ( " D a m e e l numero de f i l a s de l a

m atriz:

");

s c a n f f "%c/", &m);
p r i n t f f "Dame e l numero de c ol umnas de l a

m atriz:

');

s c a n f f "%c/" ,&n) ;
p r i n t f f \ n ");
for

( i = 0 ;i<m;i++)

for

( j = 0 ;j <n;j++)

{
printf("Dam e e l

e l e m e n t o %c/ - %c/ de t u m a t r i z :

s c a n f ( "% f" , &mat 1 [ i ] [ j ] ) ;

www.FreeLibros.me

, i + 1 , j +1 ) ;

9.10 A rre g lo s bid im ensionales

317

}
p r i n t f ( "\n");
p r i n t f ( " Dame e l e s c a l a r q u e v a a m u l t i p l i c a r t u m a t r i z :

");

s c a n f ( U96 f " , & e s c ) ;


p r i n t f ( u \ n \ n u) ;
f o r ( i =Q; i <m; i ++)

{
f o r (j = 0 ;j<n;j++)
{
m a t 2 [ i ] [ j ] =mat 1 [ i j [ j j * e s c ;
p r i n t f (

",m a t2 [ i ] [ j ] ) ;

}
p r i n t f ( \ n " ) ;

}
p r i n t f ( " \ n \ n D e s e a s r e p e t i r e l p r o g r a ma ? S / N " ) ;
scanf("%s",&op);

}
w h i l e ( ( op==' S ' ) \ \ ( o p = = ' S ' ) ) ;
getch();

9.10.10 Determ inar si una matriz es de identidad o no


/* M a t r i z d e i d e n t i d a d */

# i n c l u d e < s t d i o .h>
# i n c l u d e < c o n i o . h>
void main()

{
textcolor(BLACK);
textbackground(WHITE);
i n t i , j , m a t [ 10] [ 10],n,cont= Q;
c h a r op;
do

{
c lrs c rf);

p r i n t f ( " Imprime s i l a m a t r i z e s de i d e n t i d a d o s i no l o e s \ n \ n " ) ;


p r i n t f ( " D a m e e l t a m a n i o de l a m a t r i z c u a d r a d a : " ) ;
s c a n f ( B96d " f &n) ;
f o r ( i = 0 ;i<n;i++)

www.FreeLibros.me

318

Captulo 9

for

Ejercicios resueltos

( j = 0 ; j<n; j ++)

{
p r i n t f ( " Dame e l

v a l o r %c/-%c/: " ,1+1 , j +1) ;

s c a n f ( "%d",&mat[ i ] [ j ] ) ;

}
p r i n t f ( " \ n" );
f o r ( = 0 ;i<n;i++)
f o r ( j =0 ;j < n ; j ++)
if

( ( ( i = = j ) & & ( m a t [ i ] [ j ] = = 1 ) ) \ \ ( ( i ! = j ) & & ( m a t [ i ] [ j ]==*)))

if(cont==n*n)

p r i n t f ( " E s m a t r i z de i d e n t i d a d " );

else
p rin tf("N o

es m a t r i z de i d e n t i d a d " ) ;

p r i n t f ( " \ n \ n De s ea s e v a l u a r o t r a m a t r i z ? S / N

") ;

s c a n f ( *6S",&op);

}
w h ile

((op= = 's' )\\(op=='S') ) ;

getch();

9.10.11 Calcular el producto punto de dos matrices


/ * P r o d u c t o p u n t o de m a t r i c e s * /
ftinclude

<c o ni o. h >

H include

<stdio.h >

v o i d mai n ()

{
char o p = ' s ' ;
e lrse r

();

in t i,

j,

p rin tf

( " p r o d u c t o p u n t o de d o s m a t r i c e s \ n " ) ;

w h ile

m1[ 1 0 ] [ 1 0 ] ,

m2[1 0 ] [ 1 0 ] ,

m3[10][10],

( 0p = = ' s ' \ \ o p = = ' S ' )

{
p r i n t f ("Dame e l t o t a l
scanf
p rin tf

, & m);
("Dame e l t o t a l

scanf
for

de f i l a s \ n " ) ;

de c o l u m n a s \ n " ) ;

& n);

( i = 0 ; i<m; i++)
for

( j = 0 ; j <n; j++)

www.FreeLibros.me

m, n;

cont++;

9.10 A rre g lo s bid im ensionales

p rin tf

("Dame e l

i+ 1,

1\n",

& m1 [ i j [ j j ) ;

("Dame e l

+ i,

m atriz

1+V;

scanf ("W ",


p rin tf

e l e m e n t o con c o o r d e n a d a %c/ %c/ de l a

319

e l e m e n t o con c o o r d e n a d a %c/ %c/ de l a

m atriz 2 \n ",

1+1);

s c a n f ( mW ,

& m2 [ i ] [ j J ) ;

}
for

( i = 0 ; i<m; i++)

{
for

( j = 0 ; j <n; j++)

{
m 3 [i][j]= m 1 [ij[j J*m 2[i][j J ;
p rin tf

C W ,

m 3 [i][j J) ;

}
p rin tf

("\n");

}
p rin tf

("Deseas c a l c u l a r o t r a m a t r i z \ n ? " );

s c a n f ("96S",

& op);

}
getch

();

9.10.12 Calcular la inversa de una matriz cuadrada de 3 x 3


I *mat 1 */
l*Inversa*/
Uinclude

<c o ni o. h >

include

<stdio.h >

v o i d mai n ()

{
in t i,

j,

n,

float t [ 3 J [ 3 ] ,
e lrse r

m[3 ] [ 3 ] ,

det3;

a;

();

char op= 'sl ;


p rin tf

( " E l programa c a l c u l a l a

i n v e r s a de una m a t r i z c u a d r a d a de

3x3\n");
w h ile

( 0p = = ' s ' \ \ o p = = ' S ' )

p r i n t f ("Dame l a m a t r i z 3 x 3 \ n " ) ;

www.FreeLibros.me

320

Captulo 9

Ejercicios resueltos

f o r ( i = 0 ; i <3; i+ + )
f o r ( j = 0 ; j <3; ] + + )

{
p r i n t f ("Dame e l componente %c/ %c/ de l a m a t r i z \ n " ,
scanf ( ' * d \

+1,

j + 1 );

& m [i][j]);

}
det3=(m [Q][0]*m [1][1]*m [2][2])+(m [(d][1]*m [1][2]*m [2][Q])+(m [0][2]*m [1]

[Q]*m[ 2 ] [ 1 ! ) - ( m [ Q ] [ 1 J*m[ 1 ] I 0 ]*ml 2 ] t 2 )-(m[(dJI 0 ]*m[ 1 ] ( 2 ]*m[ 2 J t 1 ) (m[ 0 ] [ 2 l*m[ 1 ] [ 1 ]*m[ 2 ] t 0 ] ) ;


a=(1ldet3);

p r i n t f ( " E l d e t e r m i n a n t e e s 9s d \ n " , d e t 3 ) ;
f o r ( i =0; i < 3 ; i + + )

{
f o r ( j =0; j < 3 ; j + + )

{
t[ij[j]= a * m [ij[jj;
p rin tf

t[ij[jj);

}
p rin tf ("\n");

}
p r i n t f ("D eseas c a l c u l a r otro determ inante? s / n \ n " ) ;
sca n f ("*s",

& op);

}
getch ( ) ;

9.10.13 Calcular la inversa de una matriz cuadrada


/* In v e rsa* /
U in clu de <conio.h>
#i n c l u d e < s t d i o . h >
v o i d m a in ()

{
in t i , j ,

n , m[ 2 ] [ 2 ] , d e t 2 ;

float a , b, c ,

d, e ;

e lrse r ();
char op='s';
p r i n t f ( "_E1 p ro gra ma c a l c u l a l a i n v e r s a de una m a t r i z c u a d r a d a \ n " ) ;
w h i l e ( 0p = = ' s ' \ \ o p = = ' S ' )

www.FreeLibros.me

9.10 A rre g lo s bid im ensionales

321

{
p rin tf
fo r

("Dame l a

(i= 0;

i<n;

2x2\n");

i ++)

(j= 0 ; j<n;

fo r

m a triz

j++)

{
p rin tf
scanf

("Dame e l
("%d",

c o m p o n e n t e %d %d de l a

m a t r i z \ n " , i+1,

j+1);

& m[i][j]);

}
d e t 2 =(m[ 0 ] [ 0 ) * m [ 1 ] [ 1 ] ) - ( m [ 0 ] [ 1 ] * m [ 1 ] [ 0 ) ) ;
a=1/ d e t 2 ;
b = -a * m [1 J [ 1 ] ;
c =a * m[ 0 ] [ 1 J ;
d = a * m [1 ] [0 ] ;
e = -a * m [ 0 ] [ 0 J ;
gotoxy

(4,30);

prin tf

p rin tf

a + b + c + d + e );

("Deseas c a l c u l a r

s c a n f ( " %s " ,

otro

determ inante?

s/n\n");

& op);

>
getch

();

>

9.10.14 Calcular la raz cuadrada de una matriz


/ * R a z de m a t r i z */
ttinclude

< c o n i o . h>

in clu d e

<stdio.h>

H include

<wath.h>

v o id main

()

{
e lrse r

();

float x [ 2 0 ] 2 0 ],
in t

y [ 2 0 ] [ 2 0 ];

i,j,f,c;

p rin tf

("El

p rin tf

("Dame e l n u me ro de f i l a s \ n " ) ;

scanf
p rin tf
scanf
fo r

("%d",

programa t e

da u na m a t r i z y l a

ra z

& f);

("Dame e l n u me ro de c o l u m n a s \ n " ) ;
("*d",

(i=0;

& c);

i< f;

i++)

www.FreeLibros.me

de l a

m ism a\n");

322

Captulo 9

Ejercicios resueltos

{
p r i n t f ( ' L e c t u r a de l a
for

f i la %c/ de l a m a t r i z a :

\ n u, i ) ;

(j = 0 ; j <c; j++)

{
p rin tf

("a

( *d,

scanf

%c/;=\ i ,

j);

& x [i][j]);

y [i1 lll=

sqrt ( x [ i] [ jj) ;

}
}
p rin tf
for

( " M a t r i z o r i g i n a l \ n " );

(= 0 ; i < f ; i++)

{
for

( j = 0 ; j < c ; j++) p r i n t f

p rin tf

C * 5 .2 f,

x [ij[jj);

("\n");

}
p rin tf
for

("M atriz r a z

(i= 0; i< f;

c u a d r a d a \ n " );

i++)

{
p r i n t f ( "%5. 2 f " , y [ i ] [ j ] ) ;
p rin tf

("\n");

}
getch

();

9.11 Funciones sin paso de parm etros


9.11.1 Calcular el costo de los artculos m anufacturados
por la em presa Kenner
/*Empresa K e n n e r * !
t t i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
define mod 150000
void c o s t f )

{
float md, cim, t i , t f , cam;
p r i n t f ( " Dame e l

c o s t o de m a t e r i a l e s d i r e c t o s u sa d os en l a

s c a n f ( "% f" , &md);

www.FreeLibros.me

p ro d u ccio n \n ");

9.11 Funciones sin paso d e parm etros

p r i n t f ( "Dame e l

costo in d ir e c t o

323

de m a n u f a c t u r a \ n " ) ;

s c a n f ( "% f" , & c i m ) ;


printf("Dam e e l

c o s t o de t r a b a j o i n i c i a l

en p r o c e s o \ n " ) ;

s c a n f f "%f" , & t i ) ;
printf("Dam e e l

costo del

t r a b a j o final en p r o c e s o \ n " ) ;

s c a n f f "% f" , & t f ) ;


cam=(md+mod+cim+ti) - t f ;
p r i n t f ("El

c o s t o de a r t c u l o s m a n u f a c t u r a d o s es=$*6fn,c am );

}
void m a in f)

{
c l r s c r f );
p r i n t f ( " c o s t o de l o s

a r t c u l o s m a n u f a c t u r a d o s de l a

empresa

K e n n e r \ n ") ;
costf);
g e t c h f );

9.11.2 Calcular los costos unitarios de la empresa


Gelstrap
/*Empresa G e l s t r a p * /
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
v o i d md()

{
float md, t o t a l ;
p r i n t f ( "Dame e l

c o s t o de m a t e r i a l e s d i r e c t o s f m a s de 9 0 0 0 ) \ n " ) ;

s c a n f f "% f" , &md);


t o t a l = m d 19000;
p r i n t f ( " E l c o s t o u n i t a r i o de m a t e r i a l e s d i r e c t o s e s $*t>.3f", t o t a l ) ;

}
v o i d cmdf )

{
float mod, t o t a l ;
p r i n t f ( "Dame e l

c o s t o de mano de o b r a d i r e c t a f m a s de 9 0 0 0 ) \ n " ) ;

s c a n f f "% f",&mod);
total=mod/9000;
p r i n t f ( " E l c o s t o u n i t a r i o de mano de o b r a d i r e c t a

www.FreeLibros.me

e s $%.3 f " , t o t a l ) ;

324

Captulo 9

Ejercicios resueltos

}
void c i( )

{
float c i n , t o t a l ;
printf("Dam e e l

total

de c o s t o s i n d i r e c t o s ( m a s de 9 0 0 0 ) \ n " ) ;

s c a n t("% f",& cin );


total= cin/9000;
p r i n t f ("El

costo u n ita r io

de c o s t o s i n d i r e c t o s

e s $%.3 f " , t o t a l ) ;

}
v o id main()

{
in t

op;

c l r s c r f );
p r i n t f ( \nCalcule l o s

costos u n ita r io s

p r i n t f ( \nQue c o s t o u n i t a r i o

de l a

empresa G e l s t r a p \ n " ) ;

deseas c a l c u l a r ? \ n " );

p r i n t f ( " 1 ) M a t e r i a l e s d i r e c t o s \ n 2 ) M a n o de o b r a \ n 3 ) C o s t o s
i n d i r e c t o s \ n u) ;
s c a n f ( %du, & o p ) ;
switch(op)

{
c a s e 1 : md();
break;
c a s e 2 : cmd( );
break;
c a s e 3:

ci();
break;

d e fau lt:
p r i n t f ( "Opcin i n v a l i d a " );

}
getchf);

9.11.3 Calcular la molaridad de una solucin


/ * C l c u l o de l a

m olaridad*/

# i n c l u d e < s t d i o .h>
Uinclude<conio.h>
v o i d m o l a r i d a d ()
{

www.FreeLibros.me

9.11 Funciones sin paso d e parm etros

325

float M , n , L ;
p rin tf("\n

\n I n t r o d u z c a l o s m o l e s :

");

scanf("% f",&n);
p r i n t f ( u\n A h o r a e l

volumen en l i t r o s :

");

s c a n f f "% f" , & L ) ;


M=n/L;
p r i n t f ( " L a m o l a r i d a d e s : %f"

}
void m ain()

{
c h a r op;
do

{
g o t o x y ( 2 6 , 3);
p r i n t f ( " C a l c u l o de l a

m olaridad

(M) " ) ;

molaridad( ) ;
p r i n t f ( " \ n \ n Q u ie re c a l c u l a r o t r a m o la r id a d ? S/N

");

scanf("*6S",&op);

}
w h ile

(op=='S');

getchf);

9.11.4 Calcular el porcentaje de masa de una solucin


l * C l c u l o de % masa*/
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
v o i d masa ()

{
float pm,comp, s o l u c i n ;
p r i n t f ( " \ n \ n I n t r o d u c e l a masa d e l componente a c a l c u l a r :

") ;

s c a n f ( "%f", &comp);
p r i n t f ( \n R e c u e r d a qu e l a s
la

masa de l a

solu cin :

u n i d a d e s deben s e r l a s mismas\n P o r u l t i m o ,
") ;

s c a n f f "%f , & s o l u c i o n ) ;
p m = ( c o m p / s o l u c i n ) *1 0 0 ;
p r i n t f ( " \ n E l p o r c e n t a j e es:

www.FreeLibros.me

326

Captulo 9

Ejercicios resueltos

}
v o id main()

{
c h a r op;
c lrs c rO ;
do

{
g o to x y ( 2 6 ,3);
p rin tf("C a lcu lo

d e l ^masa) ;

masa( ) ;
p r i n t f ( " \ n \ n Q u ie r e s c a l c u l a r o t r o p o r c e n t a j e ? S/N

");

scanf("*6S,& op );

}
w h ile (o p = = 'S ' );
getchf);

9.11.5 Calcular la norm alidad de una normalidad


l * C l c u l o de l a

norm alidad*/

# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
v o i d n o r m a l i d a d ()

{
float n, E Q , L ;
p r i n t f f " \n\n E s n e c e s a r i o c o n o c e r e l num.
c omponente; i n t r o d z c a l o s :

de e q u i v a l e n t e s q u m i c o s d e l

") ;

s c a n t ( "% f" , &E Q );


p r i n t f ( " \n F i n a l m e n t e , e l

volumen de l a

s o l u c i n en l i t r o s :

s c a n t ( "% f" , & L ) ;


n=EQ/L;
p r i n t t f \n N^>tn, n ) ;

}
void main()

{
c h a r op;
c l r s e r f );
do

www.FreeLibros.me

");

9.11 Funciones sin paso d e parm etros

327

g o to x y ( 2 6 ,3);
p r i n t f ( " C a l c u l o de l a

norm alidad");

norm alidad();
p r i n t f ( " \n\n Q uiere c a l c u l a r o t r a n o rm a lid a d ? S/N
s c a n f ( "%s", & o p ) ;

}
w h i l e ( o p = ' S ' );
getchf);

9.11.6 Calcular la velocidad


l*V elocidad*/
ftinclude

< co ni o. h>

#i n c l u d e

<stdio.h >

float v , d,
void v e l

t;

()

{
p rin tf

("Dame l a

s c a n f ("%f",
p rin tf

d is t a n c ia \ n " );

& d);

("Dame e l t i e m p o \ n " ) ;

s c a n f ("%f",

& t);

v=d/t;
p rin tf

( " L a v e l o c i d a d e s 96 7 . 2 f m / s \ n " , v ) ;

}
void d i s t

()

{
p rin tf

("Dame l a

s c a n f ("%f",
p rin tf

v e lo c id a d \ n " );

& v);

("Dame e l t i e m p o \ n " ) ;

s c a n f ("%f",

& t);

d=t*v;
p rin tf

("La d is t a n c ia

e s %7.2 f m \ n " , d ) ;

}
v o i d t i e m p o ()

{
p rin tf

("Dame l a

s c a n f ("%f",
p rin tf

v e lo c id a d \ n " );

& v);

("Dame l a

d i s t a n c i a \ n ) ;

www.FreeLibros.me

");

328

Captulo 9

scanf

Ejercicios resueltos

& d);

t=d/v;
p rin tf

("El

t i e m p o e s %7. 2 f s \ n , t ) ;

}
v o i d mai n ()

{
e lrse r
in t

();

f;

c h a r o p = 's ';
w h ile

( 0p = = ' s ' \ \ o p = = ' S ' )

{
e lrse r

();

p r i n t f ( " E l programa c a l c u l a

1 ) la v e lo c id a d 2)l a

tiempo\n");
p r i n t f ("Que d e s e a s c a l c u l a r ? \ n " ) ;
s c a n f C * d m,
switch

& f);

(f)

{
c a s e 1: p r i n t f

( "V e lo cid a d \n ");

vel

();

break;
case 2 : p r i n t f ( " D is t a n c ia \ n " );
d ist

();

break;
c a s e 3: p r i n t f ( " T i e m p o \ n " ) ;
tiempo ( ) ;
break;
de fau lt: p r i n t f

( " E r r o r de c a s o

\ n ");

}
p rin tf
scanf

("Deseas r e p e t i r l a

funcin? s/n\n");

& op);

}
getch

();

9.11.7 Calcular el campo elctrico


/*Campo e l c t r i c o * /
Uinclude

<c o ni o. h >

H include

<stdio.h >

www.FreeLibros.me

d ista n cia

3)el

9.11 Funciones sin paso d e parm etros

float e,

f,

q;

v o i d c am po _e l e ()

{
p rin tf

("Dame l a

s c a n f ( " % f a,
p rin tf

& f);

("Dame l a

scanf

f u e r z a \ n " );

ca rg a \n ");

& q);

e=f/q;
p rin tf

("El

campo e l c t r i c o

e s 96 7 . 2 f \ n a,

e);

}
void f u e r z a

()

{
p rin tf

("Dame e l campo e l e c t r i c o \ n " ) ;

scanf ("*f",
p rin tf

& e);

("Dame l a

scanf

ca rg a \n ");

& q);

f =e*q;
p rin tf

("L a f u e r z a es

. 2 f ",

f);

}
void carga

()

{
p rin tf

("Dame e l campo e l e c t r i c o \ n " ) ;

s c a n f ("%f",
p rin tf

& e);

("Dame l a

s c a n f ('% f",

fuerza

\ n ");

& f);

q=f/e;
p rin tf

( " L a c a r g a e s % 7 .2 f " ,

q);

}
v o i d mai n ()

{
clrs c r
in t

();

f;

char op= 'sl ;


w h ile

(op=='s'\\op=='S')

{
c lrs c r

();

p r i n t f ( " E l programa c a l c u l a \ n

1)Campo e l e c t r i c o \ n 2 ) F u e r z a \ n

3 ) C a r g a \ n ) ;
p r i n t f ("Que d e s e a s c a l c u l a r ? \ n " ) ;

www.FreeLibros.me

329

330

Captulo 9

scanf ( V ,
switch

Ejercicios resueltos

& f);

(f)

{
c a s e 1: p r i n t f

("Campo e l e c t r i c o \ n " ) ;

c am po _e l e ( ) ;
break;
case 2 : p r i n t f ( " F u e r z a \ n " );
fuerza

();

break;
c a s e 3: p r i n t f
carga

("Carga\n");
();

break;
d e fau lt: p r i n t f

( " E r r o r de c a s o

\ n ");

}
p rin tf
scanf

("Deseas r e p e t i r l a

("%s",

funcin? s/n\n");

& op);

}
getch

();

9.11.8 Calcular el nmero de ladrillos y la cantidad


de cem ento necesarios para construir una pared
/ *Cos t a l e s _ d e _ c e m e n t o */
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
v o i d c o s t a l e s ()

{
float kg;
in t

cc;

p r i n t f ( " D i m e e l numero de k g y t e i n d i c a r e
ndime e l numero de k g " ) ;
s c a n f ( " % f " ,& kg);
c c=k g/50;
p r i n t f ( " E l numero de c o s t a l e s e s % d " , c c ) ;

}
void l a d r i l l o s f )
{

i n t me,ni;

www.FreeLibros.me

cuantos c o s t a l e s n e c e s it a s \

9.12 Fu nciones co n p ro to tip o sin paso d e parm etros

p r i n t f ( "Te i n d i c a r e

e l numero de l a d r i l l o s

que n e c e s i t a s \ n d i m e c u a n t o s

metros cuadrados c o n s t r u i r s " );


s c a n f f "%c/", &mc);
nl=mc*72;
p r i n t f ( " E l numero de l a d r i l l o s

que n e c e s i t a s e s % d " , n l ) ;

}
void m a in f)

{
in t

op,res;

c l r s c r f );
p r i n t f ( " D i m e e l numero de k g de cemento y t e i n d i c a r e l o s

c o s t a l e s que

n e c e s i t a s , o de m e t r o s c u a d r a d o s de p a r e d y t e i n d i c a r e

e l numero

de l a d r i l l o s \ n " ) ;
p r i n t f ( "Que d e s e a s c a l c u l a r ? \ n 1

cement o\n2 l a d r i l l o s " ) ;

s c a n f f "96d", & o p ) ;
if

( 0p==1)

{
c o s t a l e s ();

}
else

{
la d rillo s f) ;

}
getchf);

9.12 Funciones con prototipo sin paso de parm etros


9.12.1 Calcular la distancia entre dos puntos
/* Programa de l a

d i s t a n c i a e n t r e d o s p u n t o s con f u n c i o n e s s i n p a s o de

p a r m e t r o s */
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
t t i n c l u d e <wath.h>
v o id fun_puntos();
v o id m ainf)

www.FreeLibros.me

332

Captulo 9

Ejercicios resueltos

c h a r op;
do

{
c l r s c r ( );
p r i n t t ( "Programa p a r a c a l c u l a r l a

d ista n cia

e n t r e dos p u n t o s \ n \ n " ) ;

f u n _ p u n t o s ( );
p r i n t t ( " \ n \ n \ n D e s e a s r e p e t i r e l pr o gr am a? S / N

");

scanf("%s,&op);

}
w hile((op= = 's')\\(op= 'S '));

getchf);
}
void fun_puntos()

{
float x 1 , x 2 , y 1 , y 2 , d i s t ;
p r i n t f ( "P r i m e r p u n t o \ n \ n " ) ;
printf("Dam e l a

x de l a

p rim e ra coordenada

");

p r i n t f ( " D a m e l a y de l a

p rim e ra coordenada

");

s c a n f ( " % f " , & x 1) ;

s c a n t ( U96f" , & y 1 ) ;
p r i n t f ( " \nSegundo p u n t o \ n \ n " ) ;
p r i n t f ( uDame l a

x de l a

segunda c o o r d e n a d a

") ;

s c a n t ( "% f" , &x 2 ) ;


p r i n t t ( " D a m e l a y de l a

segunda c o o r d e n a d a " ) ;

scant('%t',&y2);
d i s t = s q r t ( ( x 2 - x 1) * ( x 2 - x 1)+(y2 -y1) * ( y 2 - y 1) ) ;
p r i n t t ( " \ n \ n L a d i s t a n c i a e s de %. 2t u n i d a d e s " , d i s t ) ;

>

9.12.2 Calcular la excentricidad de una elipse


sin paso de parmetros
/* P r o g r a ma de l a

e x c e n t r i c i d a d de una e l i p s e

Hinclude<conio.h>
#include<stdio.h>
t t i ncl ud e< ma th .h>
v o id e x c _ t u n ( );
void main()

www.FreeLibros.me

s i n p a s o de p a r m e t r o s

*/

9.12 Fu nciones co n p ro to tip o sin paso d e parm etros

333

{
textcolor(W H ITE );
textbackground(BLUE);
c h a r op;
do

{
c l r s c r ( );
p r i n t f ( "E x c e n t r i c i d a d de una e l i p s e \ n \ n " ) ;
exc_ f u n ( ) ;
p r i n t f f " \ n \ n De s ea s r e p e t i r e l pr o gr am a? S / N

");

s c a n f ( u% s " , & o p ) ;

}
w h i l e ( (op=='s ' ) \ \ ( o p = ' S ' ) ) ;

}
v o id exc_fun()

{
float a 2 , b 2 , a , b , e ;
p r i n t f ( " D a m e l a m edi da d e l e j e mayor

");

s c a n t ( U96 f " , &a 2 ) ;


p r i n t f ( " D a m e l a m edi da d e l e j e menor " ) ;
s c a n f C % f , & b 2 );
a=a2 / 2 ;
b=b2/2;
e = (s q rt ( a * a -b * b )) /a;
if((a!=0)&&(b!=Q))

p r i n t f ( u\nLa e x c e n t r i c i d a d e s de %f u . \ e ) ;

else
p r i n t f f " \ n L a s m e d i d a s no s on v a l i d a s " ) ;
getch();

9.12.3 Calcular la derivada de X a la n


/* Programa de d e r i v a d a s de X a l a

n s i n p a s o de p a r m e t r o s

# i n c l u d e < s t d i o .h>
# i n c l u d e < c o n i o .h>
v o i d d e r _ f u n ( );

v o id main()

www.FreeLibros.me

*/

334

Captulo 9

Ejercicios resueltos

textco lor(B LU E );
textbackground(WHITE);
c h a r op;
do

{
c lrs c rf);
p r i n t f ( " D e r i v a d a s de X a l a

n de o r d en s u p e r i o r \ n ) ;

der_fun();
p r i n t f ( K\ nDeseas r e p e t i r e l pr o gr am a? S / N " ) ;
scanf("% s",&op);

}
w hile((op= = 's')\\(op= = 'S'));

}
v o id der_fun()

{
in t

x , n , i f acum,o;

p r i n t f ( \nDame l a

constante

");

scanf("% d",&x);
printf("Dam e e l

exponente

");

s c a n f ( " 96 d " , & n ) ;


p r i n t f ( u\nDe que o r d e n q u i e r e s c a l c u l a r l a

derivada?

) ;

scanf("% d'',&o);
for

( i =1 ;i<=o;i++)

{
x*=n;
n ;

}
p r i n t f ( " \ n \ n L a d e r i v a d a e s %c/XA%c/\n", x, n ) ;
getch();

9.13 Funciones con paso de parm etros


9.13.1 Calcular costos en la em presa Good M ark Com pany
l*Good M a r k Company*/
# i n c l u d e < s t d i o . h>

www.FreeLibros.me

9.13 Fu nciones con paso d e parm etros

# i n c l u d e < c o n i o . h>
define mon 1 2 0 0 0 0
float d i m p r e f i n t d p , i n t ma m, in t m a n , i n t i r i s )

{
r e t u r n ( (mam+man+ins+mon) - (. 2 0 * (mamman+ins+mon) ) ) ;

}
in t

d c o r t e ( i n t d p , i n t ma m, in t m a n , i n t i n s )

{
return(mam+man+ins+mon) ;

}
void m ain()

{
i n t mam,man,i ns ,dp;
e l r s e r ();
p rin tf("C a lcu la

el

costo in d ir e c t o t o t a l

de c a d a d e p a r t a m e n t o de l a

Good Mar k Company\n") ;


p r i n t f ( "De c u a l

d e p ar t a me nt o n e c e s i t a s s a b e r e l

t o t a l de s u c o s t o

i n d i r e c t o ? \ n " );
p r i n t f ( 1 ) d e p a r t a m e n t o de c o r t e \ n 2 ) d e p a r t a m e n t o de i m p r e s i o n \ n " ) ;
s c a n f ( U96 d " , & d p ) ;
p r i n t f ( "Cuant o f u e d e l

c o s t o de manejo de m a t e r i a l e s ? \ n " ) ;

s c a n f ( "%cP, &mam);
p r i n t f ( "Cuant o s e i n v i r t i

de m a n u f a c t u r a ? \ n " ) ;

s c a n f ( " 96d",&man);
p r i n t f ( "Cuant o f u e d e l

c o s t o de i n s p e c c i o n ? \ n " ) ;

s c a n f ( U96 d " , & i n s ) ;


i f

(dp==1) p r i n t f ( " E l

costo in d ir e c t o

del

d e p ar t a me nt o de c o r t e es

del

d e p ar t a me nt o de i m p r e s i n es

5%c/", d c o r t e ( d p , mam, man, i n s ) ) ;


i f

(dp==2 ) p r i n t f ( " E l

costo in d ir e c t o

$%f" , dimpre(dp,mam, m a n , i n s ) ) ;
g e t c h f );

9.13.2 Calcular los costos unitarios de la em presa Gelstrap


/*Empresa G e l s t r a p * /
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
float m d i ( f l o a t md)

www.FreeLibros.me

335

336

Captulo 9

Ejercicios resueltos

{
return(m d/9000);

}
float m a o b r a f f l o a t mod)

{
r e t u r n f m o d / 9 000 );

}
float c o s i n d f f l o a t c i n )

{
re tu rn (cin /90 0 0 );

}
void main()
i
in t

op;

float total,m d,m od, c i n ;


c l r s e r f );
p r i n t f ( v\ n C a l c u l e l o s

costos u n ita r io s

p r i n t f ( "\ n Q u e c o s t o u n i t a r i o

de l a

empresa G e l s t r a p \ n " ) ;

deseas c a l c u l a r ? \ n " );

p r i n t f ( " 1 ) m a t e r i a l e s d i r e c t o s \ n 2 ) m a n o de o b r a \ n 3 ) c o s t o s i n d i r e c t o s \ n " ) ;
s c a n t ( U96d" , &op) ;
sw itch(op)

{
c a s e 1 : p r i n t f ( " Dame e l

c o s t o de m a t e r i a l e s d i r e c t o s ( m a s de

9000)\n");
s c a n t ( V96f" ,&md);
p r i n t f ("E l costo u n ita r io

de m a t e r i a l e s d i r e c t o s es

3 f ,mdi(md));
break;
c a s e 2 : p r i n t f ( " Dame e l

c o s t o de mano de o b r a d i r e c t a ( m a s de

9 0 0 0 ) \ n ) ;
s c a n t ( "% f,&mod);
p r i n t f ("E l

costo u n it a r io

de mano de o b r a d i r e c t a

es $%.3 f " , m a o b r a ( m o d ) ) ;
break;
c a s e 3:

p r i n t f ( Dame e l

t o t a l de c o s t o s i n d i r e c t o s

(mas de

9000)\n");
s c a n t ( "%f" , & c i n ) ;
p r i n t f ("E l

c o s t o u n i t a r i o de c o s t o s i n d i r e c t o s

$%. 3 f " , c o s i n d ( c i n ) ) ;

www.FreeLibros.me

es

9.13 Fu nciones co n paso d e p arm etros

break;
d e fau lt:
p r in t f f " O p c i n i n v a l i d a " );

}
getch();

9.13.3 Calcular la excentricidad de una elipse


/* Programa de l a

e x c e n t r i c i d a d de una e l i p s e c on p a s o de p a r m e t r o s */

U i n c l u d e < c o n i o . h>
# i n c l u d e < s t d i o .h>
t t i n c l ude <mat h . h >
float e x c _ f un ( f l o a t x, fio a t y ) ;
v o id main()

{
textcolor(W HITE);
textbackground(BLUE);
c h a r op;
float a 2 , b 2 , r e s u l ;
do

{
c l r s e r f );
p r i n t f ( "E x c e n t r i c i d a d de una e l i p s e \ n \ n " ) ;
p r i n t f ( " D a m e l a m edi da d e l e j e mayor

");

scant("% f",&a2);
p r i n t f ( " D a m e l a m edi da d e l e j e menor

");

scanf("*6f",&b2);
r e s u l = e xc _ f u n ( a 2 , b 2 ) ;
p rin tff"\n La

e x c e n t r i c i d a d e s de % . 2 f u . " , r e s u l ) ;

p r i n t f f " \ n \ n De s ea s r e p e t i r e l pr o gr am a? S / N
scant("% s",&op);

}
w h i l e ( (op==' s '; II ( o p==' s ; ; ;
getchf);

}
float e x c _ f u n ( float x, float y)
{

float a , b , e ;

www.FreeLibros.me

") ;

337

338

Captulo 9

Ejercicios resueltos

a =x/ 2 ;
b=yl2 ;
e=sqrt(a*a-b*b)a;
if

( ( a ! = 0 ) & & ( b ! =0 ) )

r e t u r n e;

else
p r i n t f ( " M e d i d a s no v a l i d a s \ n " ) ;

9.13.4 Calcular derivadas de X a la n


/* P r og r a m a de d e r i v a d a s de X a l a

n con p a s o de p a r m e t r o s */

# i n c l u d e < s t d i o . h>
f t i n c l u d e < c o n i o . h>
in t

d e riv_ co n s(in t x , i n t n , i n t

in t

d e riv_exp (int x , in t n , i n t

o);
o);

void main()

{
in t

x ,n ,o ,re s u l1,r e s u l2 ;

c h a r op;
do

{
c lrs c rf);
p r i n t f ( " D e r i v a d a s de X a l a
p r i n t f ( " \nDame l a

n de o r d e n s u p e r i o r \ n n) ;

c o n s t a n t e : ");

s c a n f ( U9f d u, &x ) ;
p r i n t f ("Dame e l e x p o n e n t e : " ) ;
scanf("%d",&n);
p r i n t f ( " \nDe que o r d e n q u i e r e s c a l c u l a r l a

derivada?

scanf("*d",&o);
r e s u l 1= d e r i v _ c o n s ( x , n , o ) ;
r e s u l 2 =deriv_exp(x, n , o ) ;
p r i n t f ( " \nLa d e r i v a d a es: %c/ X*%d\n" , r e s u l 1 , r e s u l 2 ) ;
p r i n t f ( " \nDeseas r e p e t i r e l pr o gr am a? S / N
s c a n f ( " % s ,&op);

}
w hile((op= = 's')\\(op= 'S '));
g e t c h f );

www.FreeLibros.me

");

") ;

9.13 Fu nciones co n paso d e p arm etros

in t

d e riv_ co n s(in t x , i n t n , i n t

o)

{
in t i;
f o r ( i = 1 ;i<=o;i ++)

{
x*=n;
n;

}
r e t u r n x;

}
in t

d e riv_exp (int x , i n t n , i n t

o)

{
in t i;
f o r ( i =1 ; i< = o; i ++)

{
x*=n;
n;

}
r e t u r n n;

9.13.5 Calcular velocidad, tiem po y distancia


/*Velocidad*/
ttinclude

< co ni o. h>

ttinclude

<stdio.h >

float v e l

( f l o a t a,

fl oat b)

{
r e t u r n a/ b ;

}
float t i e m p o ( f l o a t a,

f l o a t b)

{
r e t u r n a/ b ;

}
float d i s t

( f l o a t a,

f l o a t b)

{
r e t u r n a*b;

}
v o i d mai n ()

www.FreeLibros.me

339

340

Captulo 9

Ejercicios resueltos

{
e lrse r

();

f l o a t v,
in t

d,

t;

f;

char op= 's';


w h ile

( 0p = = ' s ' \ \ o p = = ' S ' )

{
p r i n t f ("Dame l a

f u n c i n que d e s e a s l l e v a r a c a b o \ n 1 ) v e l o c i d a d \ n 2 )

t i e m p o \ n 3 ) d i s t a n c i a \ n " );
s c a n f ("%d",
switch

& f);

(f)

{
case 1 : p r i n t f ( " v e l o c i d a d \ n " );
p rin tf

("Dame l a

scanf C * f ,

& d) ;

p r i n t f ("Dame e l
s c a n f ("%f",
v = vel
p rin tf

d i s t a n c i a \ n " );

tiem po\n");

& t);

(d, t ) ;
( " L a v e l o c i d a d e s %7. 2 f m / s \ n " , v ) ;

break;
c ase 2 : p r i n t f ( " t i e m p o \ n " );
p rin tf

("Dame l a

s c a n f ("%f",

d i s t a n c i a \ n " );

& d) ;

p r i n t f ("Dame l a
s c a n f ("%f",

v e l o c i d a d \ n " );

& v);

t= tiempo ( d , v ) ;
p rin tf

("El

tiempo es % 7 .2 fs \n " , t ) ;

break;
c a s e 3: p r i n t f

( " d is t a n c ia \ n " );

p r i n t f ("Dame l a
s c a n f ("%f",

& v);

p r i n t f ("Dame e l
s c a n f ("%f",
d=dist

v e l o c i d a d \ n " );

tiem po\n");

& t);

( v , t );

p r i n t f ("La d is ta n c ia

e s 96 7 . 2 f m \ n " ,

break;
d e fau lt: p r i n t f

( " E r r o r de c a s o \ n " ) ;

}
p r i n t f ("Deseas c a l c u l a r o t r a f u n c i o n ? \ n " );

www.FreeLibros.me

d);

9.13 Fu nciones con paso d e parm etros

s c a n f ( a* s u, & o p ) ; }
getch

();

9.13.6 Calcular fuerza, masa y aceleracin


/*F u e r z a */
ttinclude

< co ni o. h>

ttinclude

<stdio.h >

float f u e r z a

( f l o a t a,

f l o a t b)

{
r e t u r n a*b;

}
float masa (f loat a,

f l o a t b)

{
r e t u r n a/b;

}
float a c e l e r a c i n

( f l o a t a,

float b)

{
r e t u r n a/b;

}
v o i d mai n ()

{
e lrse r

();

float F ,
in t

m,

a;

f;

c h a r o p = 's ';
w h ile

( 0p = = ' s ' \ \ o p = = ' S ' )

{
p r i n t f ("Dame l a

f u n c i n que d e s e a s l l e v a r a c a b o \ n 1 ) F u e r z a \ n 2 ) m a s a \ n 3 )

a c e le r a c io n \ n " );
s c a n f ("%d",
switch

& f);

(f)

{
case 1: p r i n t f ( " F u e rz a \n ");
p rin tf
scanf
p rin tf

("Dame l a

masa\n") ;

& m);
("Dame l a

s c a n f ("*6f",

a c e le r a c io n \ n " );

& a);

www.FreeLibros.me

342

Captulo 9

F = fuerza
p rin tf

Ejercicios resueltos

(m, a) ;

( " L a f u e r z a es %7.2fN\n" , F ) ;

break;
case 2 : p r i n t f

("m asa\n") ;

p rin tf

("Dame l a

scanf ("*f",

fu e r z a \ n " );

& F);

p r i n t f ("Dame l a

a c e le r a c io n \ n " );

s c a n f ( " * f m, & a ) ;
m= masa ( F , a ) ;
p r i n t f ( " L a masa e s %7. 2 f m \ n " , m);
break;
c a s e 3: p r i n t f ( "a c e l e r a c i o n \ n " ) ;
p rin tf

("Dame l a

scanf ( " * f ,

f u e r z a \ n " );

& F);

p r i n t f ("Dame l a m a s a \ n ") ;
scanf

& m);

a= aceleracin

( F, m) ;

p r i n t f ( " L a a c e l e r a c i n e s 96 7 . 2 f m / s 2 \ n " , a ) ;
break;
de fau lt: p r i n t f

( " E r r o r de c a s o \ n " ) ;

}
p rin tf

("Deseas c a l c u l a r o t r a

scanf

f u n c i o n ? \ n " );

& op);

}
getch

();

9.13.7 Determ inar si un com puesto es alcano,


alqueno o alquino
/*Alcano alqueno o a lq u in o * /
Uinclude

<c o ni o. h >

itinclude

<stdio.h >

in t

c,

h , a1, a2,

float a l c a n o

a3;

( f l o a t c)

{
return

2 *c+2 ;

>
float

alq ueno

( f l o a t c)

www.FreeLibros.me

9.13 Fu nciones con paso d e parm etros

343

r e t u r n 2 *c;

}
float a l q u i n o

( f l o a t c)

{
retu rn 2 *c-2 ;

}
v o i d mai n ()

{
e lrse r

();

i n t h,

x;

c h a r o p = 's ';
w h ile

( 0p = = ' s ' \ \ o p = = ' S ' )

{
e lrse r

();

p rin tf

( " E l programa i n d i c a

si

e l compueso e s un a l c a n o ,

alq ueno y

a lq u in o \ n " );
p r i n t f ("Dame e l numero de c a r b o n o s \ n " ) ;
s c a n f ("%du,

& x);

p r i n t f ("Dame e l numero de h i d r o g e n o s \ n " ) ;


scanf ( " W ,
alcano

(x);

alq ueno

(x);

a lq uino

(x);

i f

& h);

(h==alcano ( x ) ) p r i n t f ( " E s un a l c a n o \ n " ) ;

e lse
i f

(h==alqueno ( x ) ) p r i n t f

( " E s un a l q u e n o \ n " ) ;

else
if

( h = a lq u in o (x))

p rin tf

( " E s un a l q u i n o \ n " ) ;

else
p rin tf

("Error,

p r i n t f ("Deseas r e p e t i r l a
scanf

no p e r t e n e c e a n i n g n g r u p o \ n " ) ;

funcin? s/n \n");

& op);

}
getch

();

9.13.8 Calcular resistencia, am peraje o voltaje


/*R esistencias* /
f t i n e l u d e <c o ni o. h >

www.FreeLibros.me

344

Captulo 9

Hinclude

Ejercicios resueltos

<stdio.h >

float r e s i s t e n c i a

( f l o a t a,

f l o a t b)

{
r e t u r n a/b;

}
float v o l t a j e

( f l o a t a,

f l o a t b)

float a mpe raj e ( f l o a t a,

f l o a t b)

{
r e t u r n a*b;

}
{
r e t u r n a/b;

}
v o i d mai n ()

{
e lrse r

();

float r ,
in t

v,

a;

f;

c h a r o p = 's ';
w h ile

( 0p = = ' s ' \ \ o p = = ' S ' )

{
p rin tf

("Dame l a

f u n c i n qu e d e s e a s l l e v a r a c a b o \ n 1 ) r e s i s t e n c i a \ n 2 )

v o lt a j e \ n 3 ) a m p e r a j e \ n " );
s c a n f ('% d',
sw itch

& f);

(f)

{
case 1 : p r i n t f

( "r e s i s t e n c i a \ n " ) ;

p r i n t f ("Dame e l
scanf ("*f",

& v);

p r i n t f ("Dame e l
s c a n f ("%f",
r

v o lt a j e \ n " );

am p e raje\n ");

& a);

= re siste n cia
p rin tf

(r,a);
("La r e s i s t e n c i a

e s % 7 .2 f Ohms\n" , r ) ;

break;
case 2 : p r i n t f ( " v o l t a j e \ n " );
p rin tf
scanf ("W ",

( Dame l a

& r);

p r i n t f ("Dame e l
s c a n f ("%f",

r e s i s t e n c i a \ n " );

am p e raje\n ");

& a);

www.FreeLibros.me

9.13 Fu nciones co n paso d e p arm etros

v= v o l t a j e

(r,a);

p r i n t f ( "El

vo lta je

e s %7.2 V o l t s \ n " , v ) ;

break;
c a s e 3: p r i n t f

( " am p e raje\n ");

p rin tf
s c a n f ( U96f*,
p rin tf

("Dame l a

r e s i s t e n c i a \ n " );

& r);

("Dame e l

v o lt a j e \ n " );

s c a n f ( " % f ' t & v);


a=amperaje ( r , v ) ;
p rin tf

("El

a mpe raj e e s % 7 .2 f A m p e r e s \ n " , a ) ;

break;
d e fau lt: p r i n t f

( " E r r o r de c a s o \ n " ) ;

}
p rin tf

("Deseas c a l c u l a r o t r a f u n c i o n ? \ n " );

scanf
getch

& op);}
();

9.13.9 Calcular campo elctrico, fuerza y carga


/*R esistencias* /
H i n d u de <c o ni o. h >
Hinclude

<stdio.h >

float ca mp o _e l e ( f l o a t a,

float b)

{
r e t u r n a/b;

}
float f u e r z a

(f loat a,

float b)

{
r e t u r n a*b;

}
float c a r g a

( f l o a t a,

f l o a t b)

{
r e t u r n a/b;

}
v o i d mai n ()
{

clrs c r

();

float e , f ,

q;

www.FreeLibros.me

345

346

Captulo 9

Ejercicios resueltos

i n t g;
c h a r o p = 's ';
w h ile

( 0p == ' s ' \ \ o p == ' S ' )

{
p r i n t f ("Dame l a

f u n c i n qu e d e s e a s l l e v a r a c abo \n1 )c amp o e l e c t r i c o \

n 2 ) fu e rz a \ n 3 ) c a rg a \ n ");
s c a n f ("%d",
sw itch

& g);

(g)

{
c a s e 1 : p r i n t f ("campo e l e c t r i c o \ n " ) ;
p rin tf
s c a n f ("%f",

("Dame l a

fu e r z a \ n " );

& f);

p r i n t f ("Dame l a
s c a n f ("*6f",

c a r g a \ n " );

& q) ;

e = ca mp o _e l e ( f , q ) ;
p r in t f ("El

campo e l c t r i c o

e s 96 7 . 2 f N \ n " ,

e);

break;
c a s e 2 : p r i n t f ( "f u e r z a \ n " ) ;
p rin tf
s c a n f ("%f",

("Dame e l

& e);

p r i n t f ("Dame l a
s c a n f ("%f",
f= f u e r z a

campo e l e c t r i c o \ n " ) ;

c a r g a \ n " );

& q);

(e,q);

p r i n t f ( " L a f u e r z a e s 96 7. 2f m\ n" ,

f);

break;
c a s e 3: p r i n t f ( " c a r g a \ n " ) ;
p rin tf
s c a n f ("*f",

("Dame e l

campo e l e c t r i c o \ n " ) ;

& e);

p r i n t f ("Dame l a
s c a n f ("%f",

f u e r z a \ n " );

& f);

q=carga ( e , f ) ;
p r i n t f ( " L a c a r g a e s 96 7 . 2 f m / s 2 \ n " , q ) ;
break;
de fau lt: p r i n t f

( " E r r o r de c a s o \ n " ) ;

}
p rin tf

("Deseas c a l c u l a r o t r a f u n c i o n ? \ n " );

scan f f% s",
getch

& op);}

();

www.FreeLibros.me

9.14 Funciones con arreglos

9.14 Funciones con arreglos


9.14.1 M ostrar el inventario de una librera
/ * I n v e n t a r i o de l o s l i b r o s ms v e n d i d o s * /
# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
float c d ( i n t c [ 4 J )

{
in t

t=0 , i ;

f o r ( i =0; i <4; i ++)

t= t+ c[i];

c[ij= t;
r e tu r n (c[i]*350);

}
float s e ( i n t c [ 4 J )

{
in t

t=0 , i ;

for(i=0;i< 4;i+ + )

t=t+c[i ] ;

c[i]= t;
re tu rn (c[i]*2 5 0 );

}
float t r e ( i n t c [ 4 J )

{
in t

t=0 , i ;

f o r (i =0;i < 4 ; i + + ) t = t + c [ i j ;
c [i]= t;
re tu rn (c[i]*1 9 0 );

}
void m ain()

{
in t

o p ,c[4 ],i;

c lrs c rO ;
p r i n t f ( u\ n \ t \ t i n v e n t a r i o
p rin tf("\n \t\tE lija

de l i b r o s mas v e n d i d o s \ n " ) ;

su l i b r o

(Ingrese e l

p r i n t f ( u\ t \ t L i b r o \ t \ t \ t C o d i g o \ t P r e c i o

c o d ig o ) :\n \ n ");

\n\n");

p r i n t f ( u\ t \ t E l

c o d i g o da v i n c i ...................

1 .........$ 3 5 0 \ n " ) ;

p r i n t f f u\ t \ t E l

s e c r e t o .............................

2 ........$ 2 5 0 \ n " ) ;

p r i n t f ( n\ t \ t L a

t r e g u a ...............................

3 ......... $ 1 9 0 \ n " ) ;

scanf("%d",&op);

www.FreeLibros.me

347

348

Captulo 9

Ejercicios resueltos

switch(op)

{
c a s e 1: f o r ( i = 0 ; i < 4 ; i + + )

{
printf("C uantos lib r o s

s e v e n d i e r o n en l a

semana?

%d\n\i+1);

s c a n f ( " 96 d " , & c [ i ] ) ;

}
p r i n t f ( " L a s v e n t a s d e l mes s on $ % .3 f p e s o s " , c d ( c ) ) ;
break;
c a s e 2:

for(i=0;i< 4;i++ )

{
p r i n t f ( " C u an t o s l i b r o s

s e v e n d i e r o n en l a

semana?

%d \ n " , i + 1 ) ;

scan f("^ d ",& c[ij);

}
p r i n t f ( " L a s v e n t a s d e l mes son $%.3 f p e s o s " , s e ( c ) ) ;
break;
c a s e 3: f o r ( i = 0 ; i < 4 ; i + + )

{
p r i n t f ( " C u an t o s l i b r o s

s e v e n d i e r o n en l a

semana?

% d \ n " , i + 1) ;
s c a n f ( " % d , & c [ i ] ) ;

}
p r i n t f ( " L a s v e n t a s d e l mes s on $%.3f p e s o s " , t r e ( c ) ) ;
break;

}
getch();

9.14.2 Calcular el salario de un trabajador


en consideracin de las piezas elaboradas
/*Pago p o r c a d a p i e z a e l a b o r a d a */
# i n c l u d e < s t d i o . h>
Uinclude<conio.h>
float m a ( i n t p i e [ 1 0 0 ] , f l o a t p a [ 1 0 0 ] )
{

float sue= 0 , s ;

www.FreeLibros.me

9.14 Funciones con arreglos

s=pa[ 1 0 0 ] * p i e [ 1 0 0 ] ;
sue=sue+s;
return(sue);

}
float m e f i n t p i e ] 1 0 0 ] , fl oat p a [ 1 0 0 J )

{
f loat sue= 0 , s ;
s = ( p a [ 1 0 0 ] * p i e [ 1 0 0 ] ) +( ( p a [ 1 0 0 ] * p i e [ 1 0 0 ] ) * . 8 0 ) ;
sue=sue+s;
return(sue);

}
void m ain()

{
i n t p ie [ 100] , t r a , i;
float p a [ 1 0 0 ] , t ;
c l r s c r f );
p r i n t f ( " \ n \ t \ t S u e l d o de un t r a b a j a d o r p o r c a d a p i e z a e l a b o r a d a \ n u) ;
p r i n t f ( u \ n Cu a nt os empl eados t r a b a j a n p o r p i e z a s e l a b o r a d a s ? \ n " ) ;
s c a n t ( u*6d" , & t r a ) ;
for

(i=0 ;i<tra;i++)

{
p r i n t f (" \nEmpleado numero 96d\n" , i + 1 ) ;
p r i n t f ( " C u a n t a s p i e z a s e l a b o r a s t e ( m a s de 30 %%20 a d i c i o n a l ) ? \ n " ) ;
seanf("% d",&pie[100]);
p r i n t f ( " C u a n t o s e t e pa g a p o r c a d a p i e z a ? \ n " ) ;
sca n f ("tif",&pa[ 1 00 ]);
if

( p i e [ 10 0 ] <= 3 0)

{
t= m a(pie,pa);
p r i n t f ("Tu s a l a r i o

e s $*6.2f \n , t ) ;

}
else

{
t=m e(pie,pa);
p rin tf("T u

sa la rio

es

}
}
getch();

www.FreeLibros.me

349

350

Captulo 9

Ejercicios resueltos

9.14.3 Calcular los gastos perdidos por piezas


defectuosas
/ * P r o d u c t o s d e f e c t u o s o s */
# i n c l u d e < s t d i o . h>
# i n c l u d e < c o n i o . h>
float c o s t o ( i n t p [ 3 0 ] , float c [ 3 0 ] , float p i )

{
in t i;
float m, t= 0 ,g= 0 , l , h ;
for

( i = 0 ; i < 1 ;i++)

{
t= t+ p[i];
g= g+c[ i };
m=t*g;
l= pi* t;
h= m- l;

}
return(h);

}
v o id main()

{
i n t p [ 30], i, d ;
f loat c [ 3 0 ] , p i ;
c l r s c r f );
p r i n t f ( u\ n \ t \ t C a l c u l a e l g a s t o o c a s i o n a d o p o r l o s

d e f e c t o s en un

d i a \ n ");
p r in t f( " C u a n t o cuesta l a

r e p a r a c i n de l a

p ie z a ? \ n " );

s ca n f("% f,& p i);


for

( i = 0 ; i <1 ;i++)

{
p r i n t f (" \ n D i a %c/ C u a n t o s p r o d u c t o s s a l i e r o n

d e f e c t u o s o s ? \ n " , i+ 1 );

s c a n f ( U96d", & p [ i ] ) ;
p r i n t f ( " Dame e l c o s t o u n i t a r i o

de l a

p i e z a \ n " );

s c a n f ( " * 6f " , & c [ i l ) ;


p r in t f( " \n\t\tEl

d i n e r o p e r d i d o p o r r e p a r a c i n e s %f", c o s t o ( p , c , p i ) ) ;

}
getch();

www.FreeLibros.me

9.14 Funciones con arreglos

9.14.4 M ostrar el inventario de refrescos ms vendidos


de las marcas de cola ms conocidas
/ * I n v e n t a r i o de l o s r e f r e s c o s ms v e n d i d o s */
# i n c l u d e < s t d i o . h>
f t i n c l u d e < c o n i o . h>
in t

c d ( in t c[4])

{
in t

t=0 , i ;

for

( i = 0 ; i < 4 ; i++)

t= t+ c[i];

c [i]-t;
r e t u r n ( c [ i ]);

}
in t

s e ( i n t c[4])

{
in t

t= 0 , i ;

f o r ( i =0;i <4;i ++)

t= t+ c[ij;

c[i]= t;
r e t u r n ( c [ i j );

}
void m ain()

{
in t

op,c[4],i;

clrscr();
p r i n t f ( " \ n \ t \ t I n v e n t a r i o de r e f r e s c o s mas v e n d i d o s \ n " ) ;
p r i n t f ( u\ n \ t D e que r e f r e s c o q u i e r e s a b e r e l t o t a l

de v e n t a s en un mes?\

n \f);
p r i n t f ( " 1 ) P E P S I \ n \ t 2 ) COCA-COLA\nu) ;
scanf("% d",&op);
switch(op)

{
c a s e 1: f o r ( i = 0 ; i < 4 ; i + + )

{
p r i n t f ( C u a n t a s P E P S I S s e v e n d i e r o n en l a

semana?

9ed \n , i + 1) ;
scanf

,& c[ij);

}
p r i n t f ( " \ n \ t E n e l mes s e v e n d i e r o n %c/ P E P S I S u, c d ( c ) ) ;
break;

www.FreeLibros.me

352

Captulo 9

c a s e 2:

Ejercicios resueltos

for(i=0;i< 4;i++ )

{
p r i n t f f " C u a n t a s c o c a - c o l a s se v e n d i e r o n en l a

semana

9td\n" , i + 1 ) ;
s c a n f f U96d", & c [ i j ) ;

}
p r i n t f f " \ n \ t E n e l mes s e v e n d i e r o n %c/ COCA-COLAS", s e ( c ) ) ;
break;

}
g e t c h f );

9.14.5 Calcular la m asa m olecular de un com puesto


/ * F r mu la m o l e c u l a r */
# i n c l u d e < s t d i o .h>
t t i n c l ude <coni o. h>
v o i d f o r m u l a ()

{
float p e ,
in t

e,

i,

muestra,

m oles[ 1 0 ], p o r c ,

comp;

s u b [ 1 0 J;

p r i n t f f "I n d i q u e e l num.

de e l e m e n t o s d e l

compuesto (mximo 1 0 ) " ) ;

scanf("% i",& e);


printf("Dam e l a

masa de m u e s t r a d e l

compuesto");

s c a n f f "%", & m u e s t r a ) ;
for

( i = 0 ; i < e ; i = i + 1)

{
p r i n t f f "Dame e l p e s o a t m i c o d e l

e l e m e n t o %", i + 1 ) ;

s c a n f f "%" , & p e ) ;
prin tff"A h o ra la

c a n t i d a d d e l compuesto (e n % m a s a ) ) ;

scanff"te",& porc);
m o l e s [ i ] = f f p o r c / 100) *muestra)/pe;

}
comp=moles[ 0 ];
for

( i =1 ; i < e ; i = i + 1 )

{
if

(comp<moles[i])

comp=moles[i];

else
comp=comp;

www.FreeLibros.me

9.14 Funciones con arreglos

353

y
for

( i = 0 ; i < e ; i = i + 1) s u b [ i ] = m o l e s [ i ] / c o m p ;

p r i n t f ( " L o s s u b i n d i c e s en l a
for

form ula d e l

compuesto s o n : ) ;

( i = 0 ; i < e ; i = i + 1) p r i n t f ( " E l e m e n t o %!=%! , i + 1, s u b [ i j ) ;

}
void m ain()

{
p r i n t f ( O b t e n c i n de l a

f o r m u l a m o l e c u l a r de a l g n c o m p u e s t o ) ;

fo rm u la i);
g e t c h f );

y
9.14.6 Calcular el reactivo lim itante de un elem ento
/*Reactivo l i m i t a n t e * /
# i n c l u d e < s t d i o . h>
ttin clu de< conio . h >
void r l ( )

{
float r e a c , p m , m o l e s [ 1 5 ] , c o m p ;
in t

c , i , elemento;

p r i n t f ( I n d i q u e c u a n t o s c omp ues tos t i e n e l a

reaccin

s c a n f f "% i,& c ) ;
for

( i = 0 ; i < c ; i = i + 1)

{
p r i n t f ( Dame l a

c a n t i d a d d e l r e a c t i v o % i",

i+1);

s c a n f ( U96 f , & r e a c ) ;
p r i n t f ( " D a m e e l p e s o m o l e c u l a r d e l r e a c t i v o ) ;
s c a n f ( " % f ,&pm);
mol e s [ i ] = r e a c /pm;

y
comp=moles[ 0 ];
for

( i = 1 ; i < c ; i = i + 1)

{
i f

( c o m p < m o l e s [ i ])

{
c o m p = m o l e s [ i ];
elemento=i;

www.FreeLibros.me

(no mas de 1 5 ) ) ;

C aptulo 9

354

Ejercicios resueltos

}
p r i n t f ("E l re a ctiv o lim ita n te

e s % i",

elem ento);

}
void main()

{
p r i n t f (" Reactiv o l i m i t a n t e " );
n();
getch();

9.14.7 Calcular la magnitud de un vector


/ * C l c u l o de l a

m a g n i t u d de un v e c t o r * !

# i n c l u d e < s t d i o . h>
t t i n c l u d e < c o n i o . h>
# i n c l u d e < m a t h . h>
v o i d mag()

{
in t

e , i , a [ 2 0 ] , a a [ 2 0 ] ,AA;

prin tf("D e

c u a n to s elementos es e l

vector

(mximo 2 0 ) ? " ) ;

s c a n f f "%" , & e ) ;
for

( i = 0 ; i < e ; i = i + 1)

{
p r i n t f ( "Dame e l

v a l o r d e l e l e m e n t o %i d e l p r i m e r

scanff"% i" , & a [ i ] );

}
for

( i = 0 ; i < e ; i = i + 1) a a [ i j = a [ i ] * a [ i j ;

AA=aa[0];
for(i= 1;i< e;i= i+ 1)

AA=AA+aa[i] ;

prin tf("% i",A A );

}
void main()

{
p r i n t f ( "Magnitud a l

c u a d r a d o de un v e c t o r " ) ;

mag() ;
g etchf);

www.FreeLibros.me

v e c t o r " , i+ 1);

9.14 Funciones con arreglos

9.14.8 Calcular el producto cruz de un vector


l*Producto cruz*I
# i n c l u d e < s t d i o . h>
f t i n c l ude <coni o. h>
v o i d p e ()

{
i n t i,a[3],b[3 ],ab[3],A B ;
p r i n t f ( " R e c u e r d a qu e so n de t r e s
for

ele m e n to s");

(i=0;i<3;i=i+1)

{
p r i n t f ( " Dame e l v a l o r d e l e l e m e n t o %i d e l p r i m e r v e c t o r " , i + 1) ;
s c a n f( " M ",& a [i]) ;

}
for

(i=0;i<3;i=i+1)

{
p r i n t f f "Dame e l

v a l o r d e l e l e m e n t o % d e l segu ndo v e c t o r " , i + 1 ) ;

scanf("M ",& b[J);

}
ab[0]=(a[2]*b[3])-(b[2]*a[3J)
ab[l]= (a[1]*b[3])-(b[1]*a[3])
ab[2]=(a[1J*b[2])-(b[1J*a[2])
AB=ab[0];
for

( i = 1 ; i < 3 ; i = i + 1 ) AB=A B+ab[ i];

p r i n t f ( " M ",AB) ;

}
v o id main()

{
p r i n t f f " P r o d u c t o c r u z de dos v e c t o r e s " ) ;
pc();
g e t c h f );

www.FreeLibros.me

355

www.FreeLibros.me

n d ic e d e e j e r c ic io s r e s u e l t o s
E je r c i c i o 3 .1
E je r c i c i o 3 .2

C a lc u le el p ro m e d io d e e d a d d e tres p e r s o n a s .....................................
E n c u e n tre el re a d e u n tra p e c io ................................................................

E je r c i c i o 3 3

C a lc u le el s a la rio d e u n tra b a ja d o r c o n el to ta l

42
44

d e p e rc e p c io n e s y d e d u c c io n e s .................................................................

45

E je r c i c i o 3 .4

E n c u e n tre el p ro m e d io d e c u a tro n m e r o s ............................................

47

E je r c i c i o 3 .5

C a lc u le el m o n to d e la s v e n ta s d e l d a d e u n a p a s te le r a

49

E je r c i c i o 3 .6

R e a lic e la s c u a tro o p e ra c io n e s b sic a s c o n d o s n m e r o s

51

E je r c i c i o 4 .1

L e e r u n n m e ro p o r el te c la d o y e v a lu a r si es p a r o i m p a r

62

E je r c i c i o 4 .2

In d ic a r si el a o e n q u e n a c iste fu e b i s i e s t o ..........................................

66

E je r c i c i o 4 3

C o n v e rtir g ra d o s d e te m p e ra tu ra ................................................................

67

E je r c i c i o 4 .4

I n d ic a r el tip o d e tri n g u lo i n tr o d u c id o .................................................

72

E je r c i c i o 4 .5

E le g ir u n a fig u ra g e o m tric a y c a lc u la r su r e a ..................................

77

E je r c i c i o 4 .6

Im p rim ir el s a la rio re a l d e u n t r a b a j a d o r ...............................................

79

E je r c i c i o 4 .7
E je r c i c i o 5.1

In d ic a r el s ig n o z o d ia c a l a p a rtir d e u n a f e c h a .....................................
E n c o n tra r c u a tro m ltip lo s d e u n n m e ro c u a l q u i e r a ......................

82
100

E je r c i c i o 5 .2

A d iv in a r e n u n m x im o d e c in c o o p o rtu n id a d e s u n e n te ro
c o m p re n d id o e n tre 1 y 100. E n c a d a c ic lo la c o m p u ta d o ra
d e b e d e c ir si el q u e s e c a p tu ra es m a y o r o m e n o r q u e e l q u e
g e n e r a u to m tic a m e n te ..............................................................................

E je r c i c i o 5 3
E je r c i c i o 5 .4
E je r c i c i o 6.1
E je r c i c i o 6 .2
E je r c i c i o 6 3
E je r c i c i o 6 .4

L e e r n m e ro s d e sd e e l te c la d o y su m a r
lo s p rim e ro s c in c o im p a r e s .........................................................................

107

C re a r u n m a rc o e n la p a n ta lla u tiliz a n d o a ste risc o s


e n la s c o o rd e n a d a s (1,1), (1 ,8 0 ), (8 0 ,2 4 ) y ( 1 , 2 4 ) ............................

112

Im p rim ir el c o n te n id o d e las p o sic io n e s


0, 3 y 4 d e l a rre g lo v e c ................................................................................

128

B u s c a r u n n m e ro e n u n a rre g lo e in d ic a r
e n q u p o sic i n se e n c u e n tra ......................................................................

129

Im p rim ir el c o n te n id o d e las p o sic io n e s p ares


d e u n a lista y su s u m a ...................................................................................

131

L e e r e le m e n to s, im p rim ir, s u m a r y c o n ta r lo s e le m e n to s
d e u n a p o sic i n p ar; si el n m e ro c o n te n id o es im p a r
in d ic a r la p o s ic i n ..........................................................................................

E je r c i c i o 6 3

132

R e a liz a r e n u n a rre g lo las s ig u ie n te s o p e ra c io n e s:


a g re g a r u n e le m e n to , b o rra r u n e le m e n to ,
b u s c a r u n e le m e n to d e la l is ta ....................................................................

E je r c i c i o 6 .6

105

134

A lm a c e n a r n m e ro s e n tre 1 y 2 5 , g e n e ra d o s a le a to ria m e n te ,
e n u n a ta b la d e 3 X 2 re n g lo n e s y c o lu m n a s ......................................

www.FreeLibros.me

143

358

n d ice d e ejercicios resueltos

Ejercicio 6.7
Ejercicio 6.8

R e a liz a r la su m a d e d o s m a tric e s, c o n u n a d im e n si n
d e h a s t a 4 X 4 ..................................................................................................
L e e r u n a rre g lo d e c a ra c te re s c o n la in s tru c c i n s c a n f
y m o s tra r lo c a p tu ra d o ...................................................................................

Ejercicio 6.9

145
155

L e e r u n a rre g lo d e c a ra c te re s y m o s tra r la lo n g itu d


d e la c a d e n a led a, c a r c te r a c arc ter, c o n s t r i e n ,
y c o n s i z e o f fin a lm e n te m o s tra r la p o sic i n e n m e m o ria
d e l a r r e g l o .........................................................................................................

157

Ejercicio 6.10 L e e r u n n o m b re y c o n ta r el n m e ro d e o c a sio n e s


q u e a p a re c e la le tra s e l e c c i o n a d a ............................................................

159

Ejercicio 6.11 D is tin g u ir e n tre u n n m e ro y u n a le tra ; si es letra,


a d e m s d is tin g u ir si es m a y s c u la o m in s c u la .................................

Ejercicio 7.1
(versin 1)

160

A lm a c e n a r e n u n a e s tru c tu ra el n o m b re y lo s a p ellid o s
d e u n a p e rso n a , y c re a r o tra e s tru c tu ra q u e c o n te n g a
el n o m b re , a d e m s d e tre s c a lific a c io n e s; a lm a c e n a r e sto
e n u n a rre g lo , in ic ia liz a rlo , a g re g a r d a to s y m o s tr a r lo s .................

Ejercicio 7.2
(versin 2)

178

A lm a c e n a r e n u n a e s tru c tu ra el n o m b re y lo s a p ellid o s
d e u n a p e rso n a , y c re a r o tra e s tru c tu ra q u e c o n te n g a
el n o m b re , a d e m s d e tre s c a lific a c io n e s; a lm a c e n a r e s to en
u n a rre g lo . In ic ia liz a r el a rre g lo , a g re g a r d a to s y m o stra rlo s.

Ejercicio 7 3
(versin 3)

(S o lu c i n u s a n d o fu n c io n e s y a p u n ta d o re s ) ........................................
A lm a c e n a r e n u n a e s tru c tu ra el n o m b re y lo s a p ellid o s

181

d e u n a p e rso n a , y c re a r o tra e s tru c tu ra q u e c o n te n g a


el n o m b re , a d e m s d e tre s c a lific a c io n e s; a lm a c e n a r e s to en
u n a rre g lo . In ic ia liz a r el a rre g lo , a g re g a r d a to s y m o stra rlo s.
(S o lu c i n u s a n d o u n tip o d e d a to d e fin id o p o r el u s u a r i o )

Ejercicio 8.1

183

R e a liz a r u n p ro g ra m a q u e p e rm ita al u s u a rio e s c o g e r u n a


o p e ra c i n : el fa c to ria l d e u n n m e ro , la p o te n c ia in d ic a d a
d e u n n m e ro o im p rim ir u n a ta b la d e m u ltip lic a r............................

Ejercicio 8.2

219

E s c rib ir u n p ro g ra m a c o n u n a fu n c i n q u e re a lic e la s sig u ie n te s


o p e ra c io n e s c o n u n n m e ro : ra z c u a d ra d a , c u a d ra d o y c u b o .
M o s tra r el re s u lta d o e n fo rm a d e ta b la , c o n lo s n m e ro s
d e l 1 al 1 0 .........................................................................................................

www.FreeLibros.me

225

n d ic e d e e j e m p l o s
E je m p lo 1.1
E je m p lo 2 .1

P ro g ra m a q u e le e d o s d a to s y los m u e s t r a ............................................
E x p re sio n e s v lid a s y c o m e n ta rio a la s o lu c i n ..................................

15
25

E je m p lo 2 .2

C a lc u le el re s u lta d o d e la s ig u ie n te e x p r e s i n ....................................

31

E je m p lo 3 .1

E s tru c tu ra m n im a d e u n p ro g ra m a e n le n g u a je C ,
v e rs i n 1 ............................................................................................................

39

E s tru c tu ra m n im a d e u n p ro g ra m a e n le n g u a je C ,
v e rs i n 2 ............................................................................................................

40

E je m p lo 3 .2
E je m p lo 4 .1

D e te rm in a r si u n a lu m n o a p ro b u n c u rs o a p a rtir
d e l p ro m e d io q u e o b tu v o d e su s tres c a lific a c io n e s
d e lo s p a rc ia le s q u e s e h ic ie ro n d u ra n te el s e m e s t r e .......................

60

E je m p lo 4 .2

Im p rim ir si u n n m e ro es p o sitiv o , n e g a tiv o o c e r o ..........................

61

E je m p lo 4 3

D e te rm in a r si u n a lu m n o a p ro b o re p ro b u n c u rs o a p a rtir del
p ro m e d io q u e o b tu v o e n su s tres c a lific a c io n e s p a rc ia le s

E je m p lo 4 .4

d u ra n te el s e m e s tre y m o s tra r la c a lif ic a c i n ......................................


C o n v e rtir k il m e tro s a m e t r o s ..................................................................

64
65

E je m p lo 4 3

In d ic a r si el n m e ro le d o es p o sitiv o , n e g a tiv o o c e r o ...................

70

E je m p lo 4 .6

L e e r d o s n m e ro s y si s o n ig u a le s m u ltip lic a rlo s ; si el p rim e ro


es m a y o r q u e el se g u n d o , q u e s e re ste n ; si el p rim e ro e s m e n o r
q u e el s e g u n d o , q u e s e s u m e n ....................................................................

E je m p lo 4 .7

71

I n d ic a r u n d a d e la se m a n a y q u e el p ro g ra m a e sc rib a
el n m e ro d e d a q u e le c o r r e s p o n d e .....................................................

74

E je m p lo 4 .8
E je m p lo 5.1

R e a liz a r la o p e ra c i n q u e s e e lig e d e l m e n v i s u a l i z a d o
Im p rim ir lo s n m e ro s e n te ro s d e l 1 al 1 0 ............................................

75
94

E je m p lo 5 .2

S u m a r lo s n m e ro s e n te ro s d e l 1 al 5 e im p rim ir el r e s u l t a d o . . .

95

E je m p lo 5 3

H a lla r el p ro d u c to d e v a rio s n m e ro s p o sitiv o s in tro d u c id o s


p o r te c la d o y te rm in a r el p ro c e s o c u a n d o s e c o n te sta c o n u n a
le tra d ife re n te a s .............................................................................................

96

P ro d u c ir u n a ta b la d e m u ltip lic a r e im p rim irla e n la p a n ta lla


u tiliz a n d o la e s tru c tu ra d e c o n tro l w h ile .............................................

97

E je m p lo 5 3

T a b la d e m u ltip lic a r c o n u n e rro r d e l g i c a .........................................

98

E je m p lo 5 .6

S u m a r lo s n m e ro s p a re s y m u ltip lic a r lo s n m e ro s im p a res

E je m p lo 5 .4

h a s ta q u e la s u m a s e a m a y o r q u e 5 0 y el p ro d u c to se a
m a y o r q u e 1 5 0 ..................................................................................................
E je m p lo 5 .7
E je m p lo 5 .8

99

O b te n e r el p ro m e d io d e u n a d e te rm in a d a c a n tid a d
d e n m e ro s le d o s d e sd e el t e c l a d o .......................................................

103

C a lc u la r el p a g o a re a liz a r se g n lo s litro s d e g a s o lin a ...................

104

www.FreeLibros.me

360

n d ice d e ejem plos

E je m p l o 5 .9

Im p rim ir e n p a n ta lla la ta b la d e m u ltip lic a r d e u n n m e ro


te c le a d o p o r el u su a rio , u tiliz a n d o la e stru c tu ra
d e c o n tro l d o - w h i l e ........................................................................................

E je m p l o 5 .1 0
E je m p l o 5 .1 1
E je m p l o 5 .1 2

Im p rim ir e n p a n ta lla lo s p rim e ro s 15 n m e ro s p o sitiv o s


e n te ro s e n o rd e n d e c re c ie n te ......................................................................

109

Im p rim ir to d as la s le tra s d e l a lfa b e to d e fo rm a in v e rs a .................

110

Im p rim ir e n p a n ta lla la ta b la d e m u ltip lic a r d e u n n m e ro


f o r ............................................

111

L e e r y a lm a c e n a r sie te e s ta tu ra s y m o stra rla s


e n fo rm a t a b u l a r .............................................................................................

128

u tiliz a n d o la e s tru c tu ra d e c o n tro l


E je m p l o 6.1
E je m p l o 6 .2

C o n ta r el n m e ro d e o c a sio n e s q u e a p a re c e la letra
a e n u n a l n e a ...............................................................................................

E je m p l o 6 3

104

151

Im p rim ir e n p a n ta lla , e n m a y s c u la s , u n n o m b re
q u e fu e le d o e n m i n s c u l a s ......................................................................

E je m p l o 6 .4

A lm a c e n a r u n n o m b re e n el a rre g lo d e n o m in a d o

E je m p l o 7 .1

L e e r y m o s tra r lo s d ato s d e u n a lu m n o y u n p ro feso r;

N o mb r e

152
154

el e je m p lo u tiliz a la d e fin ic i n d e e s tru c tu ra c o m o


u n a v a ria b le lo c a l.............................................................................................
E je m p l o 7 .2

M o s tra r e l n o m b re y la e s ta tu ra d e u n a lu m n o
(m a n e jo d e u n a e s tru c tu ra c o m o v a ria b le g l o b a l ) ............................

E je m p l o 1 3

170

S o lic ita r y m o s tra r el n o m b re y tre s c a lific ac io n e s


p a ra c a d a a lu m n o ; p u e d e n in c lu irs e h a sta 10 a lu m n o s
(a rre g lo d e e s t r u c t u r a s ) ................................................................................

E je m p l o 7 .4

169

171

M o s tra r n o m b re , tres c a lific a c io n e s y e s ta tu ra p a ra u n a lu m n o ;


el n o m b re e s t s e p a ra d o p o r n o m b re , a p e llid o p a te rn o
y a p e llid o m a te rn o ..........................................................................................

E je m p l o 1 3

U s a r u n n u e v o tip o d e d a to , a lm a c e n a r e n u n a e stru c tu ra
u n d a to d e tip o

E je m p l o 7 .6

n t

y o tro d e tip o

fioat;

m o s tra r e n p a n t a l l a

177

D e fin ir d o s v a ria b le s y d o s a p u n ta d o re s a e s a s v aria b le s;


a s ig n a r v a lo re s a la s v a ria b le s u sa n d o lo s a p u n ta d o r e s ..................

E je m p l o 7 .7

174

186

R e a liz a r o p e ra c io n e s a ritm tic a s c o n a p u n ta d o re s y m o stra r


el re su lta d o . L a p rim e ra v a ria b le in ic ia liz a c o n el v a lo r d e 3,
lu e g o s e o b tie n e el re s id u o d e d iv id ir e n tre 2 y fin alm e n te
s e in c re m e n ta e n 1. L a s e g u n d a v a ria b le , d e tip o fio at, in ic ia
c o n el v a lo r 3.2 , d e sp u s s e le s u m a 10 y fin alm e n te
s e re d u c e e n u n o .............................................................................................

E je m p l o 7 .8

188

L e e r e n u n a e s tru c tu ra a n id a d a lo s d a to s d e l n o m b re c o m p le to
y la e d ad , a c c e d ie n d o m e d ia n te u n a p u n ta d o r a e s t r u c t u r a

www.FreeLibros.me

189

n d ice d e ejem plos

Ejem plo 8.1


Ejem plo 8.2
Ejem plo 8 3

361

R e s o lv e r el sim p le p ro b le m a d e la s u m a d e d o s s , m e d ia n te
u n a fu n c i n sin p a so d e p a r m e tro s ni d e v o lu c i n d e v a l o r

201

C a lc u la r el p ro m e d io in d iv id u a l d e u n c o n ju n to d e a lu m n o s

204

D is e a r la s o lu c i n p a ra el c a s o d e la s u m a d e d o s s
m e d ia n te u n a fu n c i n q u e re g re s a u n valo r: el re su lta d o
d e l c lc u lo d e la s u m a ...................................................................................

Ejem plo 8.4

206

D ise a r, re to m a n d o el e je m p lo d e la fu n c i n q u e c a lc u la
el p ro m e d io , u n p ro g ra m a d o n d e la fu n c i n d e v u e lv a u n v a lo r
q u e s e a c u m u le e n u n a v a ria b le e n main p a ra lu e g o o b te n e r

Ejem plo 8.5


Ejem plo 8.6

el p ro m e d io g ru p a l d e n a lu m n o s ............................................................

208

C a lc u la r el re a d e u n t r a p e c i o ..................................................................

209

R e s o lv e r n u e v a m e n te el p ro b le m a d e la su m a d e d o s n m e ro s ,
p e ro u s a n d o u n a fu n c i n c o n p a so d e p a r m e tro s p o r v a l o r

Ejem plo 8.7

211

C re a r la fu n c i n p a ra s u m a r d o s n m e ro s , p e ro c o n lig ero s
c a m b io s a main p a ra q u e el p ro g ra m a c a lc u le
la s u m a d e c u a tro s ........................................................................................

Ejem plo 8.8

213

C r e a r u n p ro g ra m a c o n d o s fu n c io n e s: u n a q u e c a lc u le
el c u a d ra d o d e u n n m e ro y o tra q u e c a lc u le el cubo.
A m b a s d e b e n d e v o lv e r el r e s u l t a d o .......................................................

Ejem plo 8.9 R e a liz a r u n a fu n c i n q u e in te rc a m b ie d o s v a lo re s e n tre s


Ejem plo 8.10 R e a liz a r u n a fu n c i n q u e in te rc a m b ie d o s v a lo re s e n tre s,
Ejem plo 8.11

u tiliz a n d o p a r m e tro s p o r r e f e r e n c i a .....................................................


R e a liz a r u n a fu n c i n q u e in te rc a m b ie d o s v alo res

214
215
217

e n tre n m e ro s , u tiliz a n d o u n p a r m e tro p o r v alo r


y o tro p o r r e f e r e n c i a .....................................................................................

www.FreeLibros.me

218

n d ic e d e t a b l a s
Tabla 1.1
Tabla 1 .2
Tabla 1 3
Tabla 2.1
Tabla 2.2
Tabla 2 3
Tabla 2.4
Tabla 2 3
Tabla 2 .6

T ip o s d e d a to s y m o d ific a d o re s..................................................................
C a d e n a s d e c o n tro l d e tip o p a ra s a l id a ...................................................

7
13

S e c u e n c ia s d e e s c a p e ......................................................................................

14

O p e ra d o re s a ritm tic o s c o n e je m p lo s ......................................................

23

P re c e d e n c ia d e o p e ra d o re s a ritm tic o s ....................................................

25

O p e ra d o re s d e a s ig n a c i n ............................................................................

26

O p e ra d o re s r e l a c i n a l e s ..............................................................................

28

O p e ra d o re s l g i c o s ........................................................................................

29

O p e ra d o re s y su p rio r id a d ............................................................................

30

Tabla 3.1

B ib lio te c a s d e C .............................................................................................

38

Tabla 8.1

D e s c rip c i n d e la d e fin ic i n d e fu n c i n

www.FreeLibros.me

200

www.FreeLibros.me

Este libro fue creado teniendo en mente a


aquellos estudiantes que desean adentrarse
en el mundo de la programacin utilizando el
lenguaje de C. El contenido est considerado
para desarrollarse en un primer curso.
El mtodo de enseanza se basa en el anli
sis de un problema y la descripcin de los
pasos necesarios para llegar a la solucin;
el objetivo principal es mostrar con detalle
cmo crear un programa y cmo entenderlo.
Todo esto se complementa con ejemplos y ejercicios resueltos, desglosados en cinco
partes para una mejor comprensin. Tambin se presenta la descripcin de las
operaciones, los datos, la codificacin y la ejecucin del cdigo, adems de una
explicacin detallada del procedimiento.
Los primeros captulos presentan los fundamentos de la programacin en C, la
aritmtica y la programacin estructurada. Luego se muestran las estructuras
de control, algunos datos estructurados y funciones, para finalizar con una serie de
ejercicios resueltos.
Cada tema se trata con suficiente profundidad y detalle para ser entendido por un
estudiante que se inicia en esta rea de la computacin.

Para mayor informacin visite la pgina Web:


w w w .p e a rs o n e d u c a c io n .n e t/m a rq u e z

www.FreeLibros.me

También podría gustarte