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 ISBN: 978 -607 -3 2 -0600-6

www.FreeLibros.me
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 x iii

C a p tu lo 1 In tro d u c c i n a l le n g u a je C 1

1.1 Conceptos ..................................................................................................... 1


1.2 Lenguajes utilizados en una com putadora .......................................... 2
1.3 Etapas de desarrollo del softw are .......................................................... 3
1.4 El lenguaje C .............................................................................................. 4
1.5 Elem entos de un program a en C (conceptos bsicos) ...................... 4
1.5.1 Identificadores .................................................................................. 5
1.5.2 T ipos de datos .................................................................................. 6
1.5.3 Variables ............................................................................................. 6
1.5.4 C onstantes ......................................................................................... 9
1.5.5 Palabras reservadas ......................................................................... 11
1.5.6 C om entarios ....................................................................................... 11
1.6 Entrada y salida de datos .......................................................................... 11
1.6.1 Salida de datos .................................................................................. 12
1.6.2 Entrada de datos ................................................................................ 15
Resum en ......................................................................................................... 16
E valuacin .................................................................................................... 16
Ejercicios propuestos .................................................................................. 17

www.FreeLibros.me
vi C o n te n id o

C a p tu lo 2 A rit m tic a d e C 21

2.1 Inicializacin y asignacin de variables ............................................... 21


2.2 O peradores aritm ticos ............................................................................ 23
2.2.1 Prioridad de los operadores aritm ticos ..................................... 24
2.2.2 O tros operadores d e a s ig n a c i n ..................................................... 26
2.3 O peradores de increm ento y decrem ento ............................................. 26
2.4 O peradores relacinales ............................................................................ 27
2.5 O peradores lgicos ..................................................................................... 28
2.6 O perador condicional ................................................................................. 29
2.6.1 Prioridad de operadores .................................................................. 30
R esum en ......................................................................................................... 31
Evaluacin .................................................................................................... 32
Ejercicios propuestos .................................................................................. 33

C a p tu lo 3 P ro g ra m a c i n e s t r u c tu r a d a 37

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


3.2 D irectivas del preprocesador ................................................................... 40
3.3 E structuras de c o n tr o l ................................................................................. 41
3.3.1 S e c u e n c ia c i n .................................................................................... 42
R esum en ......................................................................................................... 52
Evaluacin .................................................................................................... 53
Ejercicios propuestos .................................................................................. 55

C a p tu lo 4 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 59

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


4.2 Selectiva doble ( f - e l s e ) ................................................................... 63
4.3 Selectiva doble anidada ............................................................................ 69
4.4 Selectiva m ltiple (sw itc h - c a se ) ...................................................... 73
R esum en ......................................................................................................... 84
Evaluacin .................................................................................................... 85
Ejercicios propuestos .................................................................................. 86

C a p tu lo 5 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 ......................................................................... 94


5.2 E structura repetitiva d o -w h ile ................................................................. 102
5.3 E structura repetitiva f o n ............................................................................ 109
R esum en ......................................................................................................... 114
E valuacin .................................................................................................... 115
Ejercicios propuestos .................................................................................. 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 125

6.1 Arreglo o array ............................................................................................. 125


6.2 Vectores o arreglos unidim ensionales ..................................................... 126
6.3 M atrices o arreglos bidim ensionales ....................................................... 141
6.4 Arreglo de caracteres y cadena de caracteres ....................................... 151
Cadena de caracteres .................................................................................. 153
Funciones para m anejo de cadenas ......................................................... 154
Resum en ......................................................................................................... 162
Evaluacin .................................................................................................... 162
Ejercicios propuestos .................................................................................. 163

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 167

7.1 E structura ..................................................................................................... 167


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

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) 197

8.1 Funciones ..................................................................................................... 199


8.2 Funciones que devuelven valores .......................................................... 205
8.3 Funciones con paso de parm etros ........................................................ 210
8.3.1 Funciones con parm etros por valor ............................................ 211
8.3.2 Parm etros por valor y por referencia ......................................... 215
Resum en ......................................................................................................... 227
Evaluacin .................................................................................................... 229
Ejercicios propuestos .................................................................................. 230

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

9.1 Secuenciacin ............................................................................................... 231


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

www.FreeLibros.me
C o n te n id o

9.1.5 C alcular la m agnitud de un vector dados


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

www.FreeLibros.me
C o n te n id o ix

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


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

www.FreeLibros.me
X C o n te n id o

9.8.3 C alcular el salario de un trabajador, dependiendo


de las piezas que elabor ................................................................ 291
9.8.4 C alcular diluciones por pasos ....................................................... 292
9.8.5 Indicar los m oles de un elem ento ................................................ 293
9.8.6 Indicar la cantidad de agua que se necesita
para diluir una solucin .................................................................. 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 ................................................... 296
9.9 A rreglos u n id im e n sio n a le s......................................................................... 297
9.9.1 C alcular la m agnitud al cuadrado de un vector ...................... 297
9.9.2 C alcular el producto cruz de dos v e c to r e s ................................. 298
9.9.3 C alcular el reactivo lim itante de una re a c c i n ........................... 298
9.9.4 C alcular la proyeccin entre dos vectores
de n elem entos .................................................................................. 299
9.9.5 C alcular el ngulo en grados entre d o s vectores ..................... 301
9.9.6 C alcular la desviacin estndar y varianza
m uestral de n datos ......................................................................... 302
9.9.7 C alcular el producto punto entre tres vectores .......................... 303
9.9.8 C alcular los estim adores de la recta de r e g r e s i n ..................... 304
9.9.9 C alcular el coeficiente de correlacin ........................................ 305
9.9.10 Calcular la c o v a ria n z a ................................................................ 306
9.9.11 Calcular ganancias y ventas de una p a s te le r a ..................... 307
9.10 A rreglos bidim ensionales ....................................................................... 309
9.10.1 Calcular la m atriz traspuesta ..................................................... 309
9.10.2 C rear una tabla con los tipos de concreto disponibles,
ju n to con sus resistencias ........................................................... 310
9.10.3 C alcular la determ inante de un m atriz triangular .............. 310
9.10.4 C alcular la determ inante de una m atriz de 2 X2 ................ 311
9.10.5 Devolver el inventario por s e m a n a ............................................ 312
9.10.6 C alcular en qu tu m o de la empresa
se elaboran m s piezas ................................................................ 313
9.10.7 Calcular la cantidad de grasa perdida
segn las horas de ejercicio realizadas ................................... 314
9.10.8 Calcular la raz cuadrada de una m a t r iz ................................... 315
9.10.9 Calcular la m ultiplicacin de una m atriz
por un escalar ................................................................................ 316
9.10.10 D eterm inar si una m atriz es de identidad o no ................... 317
9.10.11 Calcular el producto punto de dos m atrices ....................... 318
9.10.12 Calcular la inversa de una m atriz cuadrada de 3 X 3 ----- 319

www.FreeLibros.me
C o n te n id o xi

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


9.10.14 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.5C alcular la norm alidad de una norm alidad ................. 326
9.11.6C alcular la velocidad ....................................................... 327
9.11.7C alcular el cam po elctrico ............................................ 328
9.11.8C alcular e l nm ero de ladrillos y la cantidad
de cem ento necesarios para construir una pared ................... 330
9.12 Funciones con prototipo sin paso de parm etros .............................. 331
9.12.1 Calcular la distancia entre dos puntos .......................... 331
9.12.2 Calcular la excentricidad de una elipse
sin paso de parm etros ................................................................ 332
9.12.3 Calcular la derivada de X a la n ..................................... 333
9.13 Funciones con paso de parm etros ....................................................... 334
9.13.1 Calcular costos en la em presa G ood M ark C o m p a n y 334
9.13.2 Calcular los costos unitarios de la em presa G elstrap ......... 335
9.13.3 Calcular la excentricidad de una elipse .................................. 337
9.13.4 Calcular derivadas de X a la n ................................................. 338
9.13.5 Calcular velocidad, tiem po y distancia .................................. 339
9.13.6 Calcular fuerza, m asa y a c e le ra c i n ........................................ 341
9.13.7
D eterm inar si un com puesto es alcano,
alqueno o alquino ......................................................................... 342
9.13.8 C alcular resistencia, am peraje o voltaje ............................... 343
9.13.9 C alcular cam po elctrico, fuerza y c a r g a ............................... 345
9.14 Funciones con arreglos ........................................................................... 347
9.14.1 M ostrar el inventario de una librera ...................................... 347
9.14.2 C alcular e l salario de un trabajador
en consideracin de las piezas elaboradas .............................. 348
9.14.3 Calcular los gastos perdidos por piezas
defectuosas .................................................................................... 350
9.14.4 M ostrar el inventario de refrescos m s vendidos
de las m arcas de cola m s conocidas ....................................... 351
9.14.5 Calcular la m asa m olecular de un com puesto ...................... 352
9.14.6 Calcular el reactivo lim itante de un elem ento ...................... 353

www.FreeLibros.me
C o n te n id o

9.14.7 Calcular la m agnitud de un vector .................................. 354


9.14.8 Calcular el 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

a _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 requerid a Rango

void Define v a c o o v a l o r NULL.

Al macena un c a r c t e r . Puede
char 1 byte -128 a 127
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
1 byte 0 a 255
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 2 bytes -32767 a 32768
(sin fr a c c i n ) .

unsigned i n t V alor entero s i n signo. 2 bytes 0 a 65, 53 5

Entero co rto , puede s e r i g u a l


short i n t 2 bytes -32767 a 32768
al i n t o a l a mitad.
En p u n t o f l o t a n t e ( p uede s e r
3.4x10-38 a
float una f r a c c i n o un e n t e r o con 4 bytes
3.4x10+38
exponente).

En p u n t o f l o t a n t e d e l d o b l e de
tamao d e l float (ms c i f r a s 1. 7x10-308 a
double 8 bytes
s ig n i f i c a t iv a s para l a fra cci n 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 ,
-2,147,483,648 a
long u s u a l me nt e d e l d o b l e de tamao 4 bytes
2, 147, 4 8 3 , 64 7
al in t.

unsigned Entero s in signo.


4 bytes 0 a 4,294,967,295
long

Incrementa e l tamao d e l 3.4x10-4932 a


lo n g double 10 b y t e s
doubl. 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 In troduccin a l le n g u a je C

float b , c , d ; 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 1 2 3 4 5 6 7 8 9

a a j
10 11 12 13 14 15 16 17 18 19

b b b b c c c c

20 21 22 23 24 25 26 27 28 -

d d d d

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, ya qu e r e p r e s e n t a l a c a n t i d a d de 1506.

PI constante r e a l , representa l a c a n t i d a d de 3 .1 41 6.

CAR c o n s t a n t e de c a r c t e r , y a que r e p r e s e n t a a l a le tra 'a'.

SALUDO constante de c a d e na de caracteres, representa la 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 ' s ' que e s e l c o n t e n i d o


de l a v a r i a b l e c.

p r i n t f C % c %c/ % f", c, a,b); Se v i s u a l i z a s 7 8 . 2 que son l o s v a l o r e s de


la s v a r i a b l e s c, a y b respectivam ente.

printf("H O LA"); Se v i s u a l i z a l a p a l a b r a HOLA.

www.FreeLibros.me
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 (in t).

%2 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 s i g n o en d e c i m a l (unsigned i n t ) .

%c El d a t o es un c a r c t e r (char).

%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 con p u n t o d e c i m a l con s i g n o (float).

El d a t o es un r e a l (float).

%s 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 \0 .

%lf El 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 s

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);

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

r 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 edad y e s t ; p rim e ro s e u tiliz la fu n c i n


p rin tf () 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
Ejercicios p ro p u e s to s 17

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 d o ub ie .
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 scanf y
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 p rin tf.
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 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;
p rin tff" " , B ) ; __________________
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 \ n " , a + b ) ; ___________________
p(" r e a l %f \ n " , ( f l o a t ) (a+b) ; ___________________
pC l a r g o % lf \ n " , z ) ; ___________________
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, c 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 ; d 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, d a n d o c o m o re s u lta d o 1 1 .7 6 . U n
e je m p lo m s: s e d e c la ra la v a ria b le t c u y o v a lo r in ic ia l es la le tr a r.

char t = 1 r ';

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 5
(pueden s e r 3.3 + 5 8.3
d iferen tes). 8 . 2 + 7.1 15.3

- Resta Enteros y re a le s 3 - 2 1
(pueden s e r 3 . 3 - 5 -1.7
d iferen tes). 8.2 - 7.1 1.1
* M u ltip lica ci n Enteros y re a le s 3 * 2 6
(pueden s e r 3.3 * 5 16.5
d iferen tes). 8 . 2 * 7.1 5 8 .22

(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 1
(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 1


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 , como en e s t e c a s o l a suma y l a
2 resta, la s o p e r a c i o n e s se r e a l i z a n de i z q u i e r d a a
derecha.
b) 8+5*9-6 Aunque l a suma e s t p r i m e r o , el o p e r a d o r de mayor
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 suma, es d e c i r , nuevamente s e e v a l a n
47 de i z q u i e r d a a d e r e c h a .
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 d iv isi n ;
6/2+4*(3) para e fe c t u a r l a suma, es n e c e s a r i o l l e v a r a cabo
6/2+12 la operacin entre p a r n te s is (resta) y luego l a
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 suma.

d) 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 , l u e g o se
6 + 7 * 0 evalan l o s dems o p e r a d o r e s de a c u e r d o a su
6 + 0 precedencia.
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 ; 8

A* =2; a=a* 2 ; 20

a l =2 ; a=a! 2 ; 5

A%=2; a=a%2 ; 0

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 a=a+i,


que d ich o e n p a la b ras sig n ifica a la v ariab le 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) a =10
X=++a; 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 (0)

a != b a diferen te de b V e r d a d e r o (1)

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, ser fa lsa .

0 (or) E l 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 ser

II v e r d a d e r o s i a l g u n o de l o s operandos o l o s dos
son v e r d a d e r o s ; s i t o d o s so n f a l s o s , ser fa ls a .

No ( n o t ) E l 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 slo
l ser verdadero s i el o p e ra nd o es f a l s o , de l o
con tra rio, ser 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 (Q>)


a si es i g u a l que c l a p r i m e r a no s e cumpl e

(a>b)&&(a>=d) 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 d o s s e cumplen

(a==c) || ( c 1 = d) a si es i g u a l que c V e r d a d e r o (1)


c si es d i f e r e n t e de d la s d o s s e cumplen

(d>c) || (b>a) d no es mayor c Falso ((d)


b no es mayor qu e a n i n g u n a s e cumple

(c>=d) || (c>a) c si es mayor o i g u a l qu e d Verdadero ( 1 )


c no es mayor qu e a 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 ) ? 1 : 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 &&

++, -- n
*, / , % ?:

- +=, *=, /=, =


<# <=, >=

www.FreeLibros.me
Resumen 31

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
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
Ejercicios p ro p u e s to s 33

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 A ritm tica d e C

p rin tf(" 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));
p rin tf(" v a l o r de c %d\t v a l o r de 1 %d\n , c , l ) ; ______________
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 = 5

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 % c
9. 3+5*d % 10
10. a/b % 2
11. -a*7
12. (a>d) && (b<c) || (d>5)
13. ( (a>b) || ( a<c )) && ( (a=c)
14. || (a>=b))
15. ( (a>=b) || (a<d)) && 16.
16. ( (a>=d) && (c>d))
17. I (a<=c) || (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 de d a t o s .

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
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: assert.h, ctype.h, e r r n o . h , float.h, l i m i t s . h ,


l c a l e . h , m ath.h, s e t jm p .h , sig n a l.h , stdarg.h, stddef.h, std io .h ,
s t d l i b . h , s t r i n g . h , tim e.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 Prog ram aci n estructurada

se e n c u e n tra la in s tru c c i n 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 vo id ,


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 return
0. 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 ");


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

p rin tf("T e cle a la e d ad de l a 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 e3; d e s p u s s e h a ce
el c lc u lo y s e a s ig n a a prom (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 5


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

B Real Base menor.

B Real Base mayor.

H Real A ltura.

R 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 con io.h,


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) y 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
7

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 .


(c o n tin a )

www.FreeLibros.me
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

H 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 .

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

P 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

A Entero o re a l Primero a p ro m e d ia r.

B Entero o re a l Segundo a p r o m e d i a r .

C Entero o re a l Tercero a p ro m e d ia r.

D 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 \n\n\a")
s c a n f ( U96 f u, & a ) ;
p r i n t f f Inserte el 2 do numero a promediar \n\n\a")
s c a n f ( H96 f " , & b ) ;
prin tf(" Inserte el 3 e r numero a p r o m e d i a r \n\n\a")
s c a n f ( u% f " , & c ) ;
p r i n t f f " Inserte el 4tO numero a p r o m e d i a r \n\n\a")
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

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

M 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 chico.

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

G 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 .

(c o n tin a )

www.FreeLibros.me
50 Captulo 3 Prog ram aci n estructurada

(continuacin)

Vari abl es

Nombre Tipo Uso

M 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 .

P 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, m, c h , p co n
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

a Entero o re a l P r i m e r o p e r an d o.

b 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 53

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
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

8 . 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 ( " ..................... \ n u) ;
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
Ejercicios propuestos 55

g o t o x y f 19,12); p rin tff"^ a ) ;


g o t o x y f 1 9 , 1 3 ) ; p r i n t f f 3 HORAS TRABAJADAS: 3-;;
g o t o x y f19,14); p r i n t f f a 3 ) ;
g o t o x y f 19,15) ; p r i n t f f a CUOTA POR HORA: 3"; ;
g o t o x y f 19,16); p r i n t f f "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 . DE C . V . 3 \n ") ;
p r i n t f f 3 3\n");
p r i n t f f "3 GUADALAJARA, J A L , A 14 DE FEBRERO DE 2008. 3\n");
p r i n t f f 3 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 3 \ n ) ;
p r i n t f f 3 M CANTIDAD DE: $ % - 1 5 . 2 f 3\n,S ueld o);
p r i n t f f 3 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 ________________________

2 .
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 57

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
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;

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 1 )

in stru cci n 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, cal3, prom;
p r i n t f (" Dame l a 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 + cal2 + cal3) / 3;


i f (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
n 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 15
E l numero 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, prom;
p r i n t f ( " Dame l a 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 + cal2 + cal3) / 3;
i f (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

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 ) ;
(c o n tin u a c i n )
}
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 & an io ) ;
if( 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 .
g 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( "%c/", &opc ) ;
if( 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 ) ;
if (num i num2 )
{
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 " ) ;
else
p rin tff "El t r i a n g u l o e s E s c a l e n o " ) ;

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

(continuacin)
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
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.
r 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 ) : \n \n " );
scanff 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 .
h Entero Nmero d e h o r a s .

Constantes
Nombre Tipo Uso
D Entero P recio hora d i r e c t o r .
G Entero P recio hora g e r e n te .
S 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) " );
scanf( "%c//%cT, & d i a , &mes ) ;
p rin tf( "\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 ( "C a p r i c o r n i o " ) ;
e ls e p r in t f f "A c u a r i o " ) ;
b reak;
case 2 : i f ( d a <= 2 0 ) p r i n t f f "A c u a r i o " ) ;
else p r in tf( "P i s c i s " ) ;
break;
c a s e 3: i f ( d a <=20 ) p r i n t f f " P is c is " );
else p r in tff "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 "C a n c e r " ) ;
else p r in tf( "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 ( "E s c o r p i n " ) ;
else p r in tf( "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 gana
C o n c u a lq u ie r o p c i n d ife re n te 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 91

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
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 y 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 1 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 stru cci n 1 in s tru c c io n e s a e je c u ta r

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 p 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 n,
el n m e ro y el re s u lta d o d e m u ltip lic a r 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 sum se a m e n o r o ig u a l q u e 50
y que prod 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


num 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 cont.
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.

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 s e e s c r ib e p u n to y
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 1 es la a s ig n a c i n d e in ic io .
expresin 3 es la a s ig n a c i n d e v a ria c i n .

www.FreeLibros.me
5.2 Estructura rep etitiva d o - w h i l e 103

instruccin 1 s o n la s in s tru c c io n e s a e je cu tar.


expresin 2 d e b e s e r u n a e x p re s i n b o o lea n a.

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
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 5
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 " fl* p re c io );
p r i n t f ( \n O t r o c a l c u l o s/n ");
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 105

in t i,n ; 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 la tabla de m u l t ip l ic a r y g e n e ra u n a del


1 al 10. S e 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 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 n*i. O b s e rv e la s d ife re n c ia s e n el u so d e
la e s tru c tu ra w h ile y do-whiie 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

c 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 usuario.

numcom Entero Guarda e l nmero g e n e r a d o .

(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 fe licid a d e s y


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 -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 : 5
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 suma de l o s nmeros i m p a r e s .

num Entero Es e l nmero l e d o del teclado.

cont Entero Cuenta l a 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 do-while


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, 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 cont lle g u e a 5.

Ejecucin

Dame un numero 2
Dame un numero 5
Dame un numero 3
Dame un numero 1

www.FreeLibros.me
5.3 Estructura rep etitiva f o r 109

Dame un numero 6
Dame un numero 9
8

un numero 4
i

Dame un numero 1

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 1

donde:

expresin 1 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 .


expresin 2 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.
in stru cci n 1 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 instruccin d e increm ento o decrem ento d e la variable d e control.

La expresin 1 y 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

2 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 ;

2 .

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
I 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 c on a s t e r i s c o s

#i n e l u d e <stdio.h >
itinel u d e <c o ni o. h >
ttinclude <dos.h>
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 e s : % d " ,______
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
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 de una c i f r a " ) ;
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
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 10 a base 2 \ n \ n " );
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
Ejercicios propuestos 123

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();
return 0;
}

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
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 0 1 2 3 4

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;

0 1 2 3 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 '
1 2 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 scanf de


fo rm a s im ila r a c u a lq u ie r v a ria b le .

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, 5, 8, 9 , 4}; o

I n t L i s C a l i f [ J ={10, 5, 8, 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 Datos d e t ip o estructurado. A rre g lo s

for ( 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.

i 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 Nmero a b u s c a r .
b Entero (booleano) A l m a ce na e l v a l o r de l a bandera.

P Entero Indica l a p o s i c i n en que s e e n c o n t r


(si 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 9
E l numero 9 s i s e e n c u e n t r a en l a po sici n 3

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 , b 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 b 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 valores del vector.

suma Entero Al macena l a 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 .

i 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 *d ", s u m a ) ;
getch();
return 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 elementos im pares.

c Entero Cuenta l o s nmeros i m p a r e s .

i Entero Recorre e l arreg lo.

n Entero Al mac ena l a 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 , sumar y c o n t a r l o s e l e m e n t o s de
la p o s ic i n par, 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

Posicin numero

0 1

4 5

son 2 y l a suma de e s o s nmeros e s 6

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 de nmeros.


n 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 .

i Entero Recorre e l arreg lo.

b Entero Bandera para l a 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, se busca e l elemento y se e s c r i b e e l l t i m o e l e m e n t o en su
lugar, 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
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 b a 1, y s e s a le d e l c ic lo ; al s a lir d e l c ic lo
se p re g u n ta si la b a n d e ra b 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 n 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 n

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 6

elemento 3

elemento 1
[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 7
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 58

31 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, agregar, usando


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
6.2 Vectores o arreglos u nid im en sion ales 139

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
140 Captulo 6 Datos d e t ip o estructurado. A rre g lo s

for (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 2. m u e s t r a \ n 3. b u s c a \ n 4. a g r e g a r \ n 5.
elim ina \n 6. s a lir\n \t ");
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 lis ta ");
s("*6d",&num);
a g r e g a r (n u m , l i s t a ) ;

www.FreeLibros.me
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 } ; o
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 j (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 ] ) ;

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, real Al macena l o s nmeros.

i Entero Recorre filas.

J Entero R e c o r r e c ol um nas .

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, p o s Y, Entero Posicin del cursor para im prim ir.


PX_ 1, PX_2
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, j Entero n d i c e s p a r a r e n g l n y columna.

c o l _ 1 , r en _ 1 , c o l _ 2 , ren _ 2 Entero D i m e n s i n de l a s m a t r i c e s .

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 1 m atriz 2

1 2 3 1 1 1

4 5 6 1 1 1

Resultado

2 3 4
5 6 7

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 c o l _ 1)

{
in t i,j,p o sX ,p o sY ;
posX=3Q; po sY =3 0;

www.FreeLibros.me
6.3 M atrices o arreglos bid im ensionales 149

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
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 '

0 1 2 3

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 E s c r i b a s u nombre: ');
w h ile (Cadena!=EOF)
{ Cadena=getchar( ) ;
p u t c h a r ( t o u p p e r ( Cadena));
i
/
getchf);
return 0 ;

www.FreeLibros.me
6.4 A rre g lo d e caracteres y caden a d e caracteres 153

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 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 ) ;

H 0 L A '\0 '

0 1 2 3 4

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 ,
scanf
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 ( ) .

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 Hola, mi nombre e s " ) ;
puts ( 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 a 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 strn cp y 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:

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 cadenal. P uede ser que


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 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, c h a r cadena2 )

www.FreeLibros.me
6.4 A rre g lo d e caracteres y caden a d e caracteres 155

T o m a el c o n te n id o d e c a de n a 2 y lo d e p o s ita e n cadaal, a p a rtir d e l c a r c te r


de fin d e la cadaal, 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 n, de c a d e na 2 y lo d e p o s ita e n la
cadaal, a p a rtir d e l c a r c te r d e fin d e cadaal, so b re sc rib ie n d o el c a r c te r
d e fin d e 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 cadena l e d a .


car Carcter Al macena un c a r c t e r .

i Entero Recorre e l 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 cad[20] ,car;

in t 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 aade el fin d e cadena */

p r i n t f ( u \n L a cadena capturada es: %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 18)

Ga b y

La cadena capturada e s Gaby

www.FreeLibros.me
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 cadena l e d a .


car Carcter Al macena un c a r c t e r .

i Entero Al mac ena l a lo n g it u d del a rre g lo .

j Entero Recorre e l 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", cad);
p r i n t f ( " \n 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 a r r e g l o c a d e s : %c/", s iz e o f (cad)) ;

p r i n t f ( \n L a d i r e c c i n donde s e e n c u e n t r a l a 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 (n m e ro d e c a ra c te re s de
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 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 117 101
122

L a l o n g i t u d de l a c adena, c o n t a d a c on i es: 12
n L a l o n g i t u d de l a c a d e na medi da c on s t r l e n es: 12
La l o n g i t u d d e l a r r e g l o c a d e s 20

La d i r e c c i n de l a cadena c a p t u r a d a e s : 2293584

www.FreeLibros.me
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 .

i Entero Recorre e l a r r e g l o de c a r a c t e r e s .

nombre A rreglo caracteres A l m a c e n a e l nombre.

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();
return 0;

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 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
v aria b le total 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 c a r c te r a evaluar.

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

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 del a l f a b e t o o un d g i t o */

Uinclude <stdio.h >


H include <ct ype.h>
H include <c o ni o. h >

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 del a lfa b e t o " ) ;
i f (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 is d ig it. S i es u n d g ito


e n tre c e ro y n u e v e s e m u e s tra el te x to "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 163

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
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
Ejercicios p ro p u e s to s 165

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 173

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
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 Entero:

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
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 in t lla m a d o Entero, y a c o n tin u a c i n


un n u e v o tip o lla m a d o Tipo q u e c o n tie n e u n n m e ro d e tip o float y u n n m e ro de
tip o E n t e r o .

www.FreeLibros.me
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 a d e tip o Entero y la d e tip o Tipo.


S e le a s ig n a v a lo r y s e m u e stra n .

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 arreg lo.

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 estructura.

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 datos.

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
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 2
dame e l nombre 1 Juan
a p e llid o paterno 1 Perez
a p e l l i d o mat er no 1 Lpez
dame l a calificacin 1 99
dame l a calificacin 2 78
dame l a calificacin 3 86

dame l a estatura 1.79

dame e l nombre 2 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 calificacin 3 68

dame l a estatura 2 1.59

nombre ca lificacin 1 calificacin 2

calificacin 3 estatura
Juan p e r e z lop ez 99 78
86 1.79
Luis Ibarra Gmez 85 97
68 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 183

void im p rim irN o m b re (stru ct t_ datos *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 \ t d i r e c c i o n \ t \ t t e l e f o n o \ n u) ;

for (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 fioat y o tra tip o in t:

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 1 %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 2 %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 1 %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 2 %c/ c o n t e n i d o apuntador
%c/ ", d a to 2 ,&dato 2 , apfloat);

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

/* 2 . 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/ ", * a p i n t ) ;


p r i n t f ("\n dato2 valor i n i c i a l * apfloat);

* a p i n t = *a p i n t % 2 ;

www.FreeLibros.me
7.2 Apuntadores 189

*apf loat = *apf loat + 1 0 ;

p rin tf ("\n\n datol residuo 2 %c/ ", *apint) ;


p rin tf ( * \ n d a t o 2 sumado 1 0 %. 2 f ", * 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 %c/ ", *apint);


p rin tf ( " \ n d a t o 2 de cr em en ta do %. 2 f ", *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 3
dat o2 valor i n i c i a l 3.2

datol residuo 2 1

dat o2 sumando 10 13.20

datol incrementado 2

dato2 de cr em en ta do 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 \n");


p rin ttf" \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 \n");
p rin tt(" 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 191

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
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 *************\n \ n \ n \ n " ) ;

p r i n t f ("1. 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
hacer?: ");
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 ? (mximo 3 ) \ t " ) ;
p r i n t f ("1. Jamon\n2. Tocino\n3. Elote\n4. Jalapenio\n5.

Salchich a
\n6. E x t r a q u e s o\ n 7 . Listo\n\n\nAgregar
ingredien te: ");
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 195

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
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 199

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
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 tip o de d a t o d e l v a l o r qu e d e v u e l v e l a funcin,


si e s que l a funcin l o hace. S i no d e v u e l v e v a l o r ,
debe i n i c i a r co n l a p a la b r a rese rv a d a v o id . S i se
omite e l t i p o de d a t o , 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 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
parmetros 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,. . . , Cuando e x i s t e n ,
s t o s son l o s d a t o s qu e debe r e c i b i r l a funcin
c uando se l e 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 f u n c i n c a d a vez qu e sea i n v o c a d a .
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 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 funcin devolver e l r e s u l t a d o de l a funcin, si e s qu e l a
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 funcin.

www.FreeLibros.me
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:

vo id 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
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 .
id entificado r 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
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 retum , p u e s to q u e s e in ic ia la fu n c i n


c o n la p a la b ra 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 sumai y d e n tro d e la m is m a s e d e c la ra n
tres v a ria b le s lo c a le s: a , b y c. 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 y 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 4;

www.FreeLibros.me
8.1 Funciones

E n e s te e je m p lo s e d is e a la funcionx con n 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


n 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 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 h a s ta q u e fin aliza.

www.FreeLibros.me
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 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,


y lu e g o s e in v o c a a prom ; 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 205

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
206 Captulo 8 Funciones (prog ram acin m odular)

tipo_dato id e n tific a d o r ( )

{
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 funcin;
return (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:

Tipo_dato 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
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 .

retum 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
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 207

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
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 n alum nos

float prom( )
{
i n t n, i ;
float c, p= 0 ;

www.FreeLibros.me
8.2 Funciones q u e devuelven valores 209

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 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 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


parm etro) 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 ) CUBO\n");

www.FreeLibros.me
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 ;
O
(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 219

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; main lo s p a s a c o m o
a rg u m e n to s a la fu n c i n func, q u e lo s re c ib e a trav s d e su s p a r m e tro s a y b, de
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 b re c ib e la d ire c c i n d e l a rg u m e n to
y func le s u m a 5 a a y ta m b i n s u m a 2 a b. S e te rm in a la fu n c i n y s e re g re sa
al mai n 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 b 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 y


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

b Entero Al macena e l fa c to ria l.

P Entero Al macena l a b a s e de l a potencia.


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 base por
s misma.

i Entero 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 .

Funcin 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

n 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 .

i Entero V a r i a b l e de c o n t r o l que toma l o s v a l o r e s desde


1 hasta 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 base: ");

s c a n f ( u%du, &b);

p r i n t f ( " \n\tIntroduce l a potencia: ");

s c a n f ( n%du, &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: % .01f.\n\n", b,p, tmp);

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 de m u l t i p l i c a r \ n " );

p rin tf("\tD e q u e n u me ro e s l a tab la: ");

s c a n f ( 096dB, & n ) ;

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 f "%cT, & lim it);

f o r ( i = 1; i < = l i m i t ; i ++)

www.FreeLibros.me
8.3 Funciones con paso d e parm etros 223

p r i n t f f " \ n \ n \ t 96d x %c/ = 96d\n" , i , n, 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: 4
E l r e s u l t a d o es: 24

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.

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

n Entero Parmetro p o r v a l o r p a r a l o s valores del uno a l diez.

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 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 c on l o s nmeros d e l 1 al d i e z c on s u s r e s p e c t i v a s
potencias \, 2 y 3 (ra iz cuadrada, cuadrado y cubo). */

H include <stdio.h >


Uinclude <c o ni o. h >
ftinclude <math.h>

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 *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 c u b o \ n m) ;
for ( 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 y 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 1.00 1 1
2 1.41 4 8

3 1.73 9 27

4 2.00 16 64

5 2.24 25 125

6 2.45 36 216

7 2.65 49 343

8 2.83 64 512

9 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 1 (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 1 ( ); 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 ( ) ; c) void f 1 (int x );

www.FreeLibros.me
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 b a l a s t r a de 240 v o l t s \ n " ) ;
printf("Dam e l a b a s e \ n " );
scanf("% f", & b);
printf("Dam e l a a lt u r a \ n " );
s c a n f f "% f", & 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 e l e c t r i c a \ n " );
printf("Dam e l a 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 " , p recio);
g e t c h f );

www.FreeLibros.me
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 vrtice de una p a r a b o l a \ n " ) ;
printf("Dam e e l coeficiente d e l termino c u a d r a t ic o ") ;

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


p r i n t f ( "Dame e l coeficiente d e l termino l i n e a 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 Ejercicios resueltos

printf("S u 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) ;
s c a n f ( "% f" , & c 1 ) ;
p rin tff" Dame l a 2da. componente " ) ;
s c a n f f "% f" , & c 2 ) ;
p r i n t f ( " Dame l a 3era. componente ");
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 en una s o l u c i o n \ n " ) ;
p r i n t f ( " \ n L a masa d e l 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 237

# 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 campo e l e c t r i c o \ n " ) ;
p rin tf ("Dame l a f u e r z a \ n " );

scanf r % f" , & f);


p rin tf ("Dame l a carga");
scanf & q);

e=flq;
p rin tf ("El campo e l c t r i c o e s %6 . 2 f , e);
getch ();

www.FreeLibros.me
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 r e s is t e n c ia \ n " );
p rin tf ("Dame e l v o l t a j e \ n " );
s c a n t ( " * f m, & v);
p rin tf ("Dame e l am peraje\n");
s c a n t ("%f", & a);
r=v/a;
p rin tf ("la re siste n cia e s %6 . 2 f o m h s " , r);
getch ();

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 ");


s c a n f ( n*6f " , & x 1 ) ;
p r i n t f ( " Dame l a Y de l a lera, coordenada ) ;
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 ") ;
s c a n f ( " * f " , & x 2 );
printf("Dam e l a Y de l a 2da. coordenada ");
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 VENA\n I n d i q u e que d e s e a c a l c u l a r : \ n " ) ;
p r i n t f ( "A)Volumen 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
242 C aptulo 9 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 Ejercicios resueltos

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 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 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 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 245

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 del d e p ar t a me nt o de i m p r e s i n

es 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
246 Captulo 9 Ejercicios resueltos

if (c==1) m3=m*1.5;
i f (c==2) m3=m*2;

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 es: n d ice );

i f (indice>=30) p r i n t f ( \n \n \n \n \n Cuidado! t u n d i c e de masa c o r p o r a l es


ELEVADO, \n n e c e s ita s hacer e j e r c i c i o " );

i f ( 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 ! ! tu n d ic e de masa c o r p o r a l


e s demas iado BAJO \n n e c e s i t a s a l i m e n t a r t e mas) ;

i f ( 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 ! ! tu n d ic e de masa


corporal e s NORMAL");
g e t c h f );

www.FreeLibros.me
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*, & c);
p rin tf ("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 compuesto no e x i s t e " ) ;
getch ();

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 d ista n cia a l a qu e t e e n c u e n t r a s , en m e t r o s \ n " ) ;
s c a n f r% c/\ & d);
i f ( d >0 && d<=1 0 ) p r i n t f ("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
la lu z");

www.FreeLibros.me
248 Captulo 9 Ejercicios resueltos

if (d>10) p r i n t f ( " L a l u z no s e e n c e n d e r " ) ;


getch ();

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 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 " ) ;


p rin tf ("El 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 t e m p o r iz a d o r \ n " );
s c a n f ( n%f ", & 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 ( " 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
la s c om p uertas");
getch ();

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 249

e lrse r ();
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 , 1)C 2)0, 3)H\n");
s c a n f (",96d", & c 1) ;
p rin tf ("C u a l o t r o \ n " );
s c a n f ("%d", & c2) ;
i f (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 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, c2) ;
getch ();

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, r;
p rin tf ( "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 Ejercicios resueltos

p rin tf ( " S e u sa l a corrien te , la potencia y l a resisten cia\n se leccion e


el v a lo r a c a l c u l a r \ n " );

p rin tf (" 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 ("%d", &op);

i f (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 r e s i s t e n c i a \ n " );
s c a n f ("%f", &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 in t e n s id a d \ n " );
scanf & 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 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
e s a s i marca 1 \nde l o 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 Ejercicios resueltos

Hinclude <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 d ista n cia a l a qu e t e e n c u e n t r a s , en m e t r o s \ n " ) ;

s c a n f ( m* d m, & d);
i f (d>0 && d<=10) p r i n t f ("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
la lu z ");
else
p rin tf ( " L a l u z no s e e n c e n d e r " ) ;
getch ();

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 , rp, r 1 , r2, r3;
in t 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 253

p rin t f ("La re siste n cia total 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 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

la 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 ? -Le p r e g u n t a r o n , \ n\ n- No l o se,
r e c u e r d o qu e a l c o n t a r l o s en g r u p o s \ n " ) ;
p rin tf("d e 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
254 Captulo 9 Ejercicios resueltos

Cuantos huevos t e n i a l a 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 . . . .VaMoS A
JuGaR! ");
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 255

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
256 Captulo 9 Ejercicios resueltos

else
p rin tff" E s o NO e s c o r r e c t o " ) ;
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 (c==d) p r i n t f f " B ien hecho");
e lse
p rin tff" E so NO e s c o r r e c t o " ) ;
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 c o e f i c i e n t e de c o r r e l a c i o n \ n " ) ;
p r i n t f f "Dame l a 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 d e s v i a c i n e s t n d a r de X " ) ;
scanff ,&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 o n = = ' R ' ) ||
( c a t i n 'C ' )) p r i n t f ( " \n E l 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 embargo, s i e l a n i n es
un n i t r a t o , carbonato acido, clo ra to o perclorato, 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
258 C aptulo 9 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 (se c a lc u la
e s t e q u i o m e t r i c a m e n t e ) de l a 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 259

p r i n t f ( " \ n Ahora e l rendim iento p r a c t i c o (se ob serva experimentalm ente)


de l a 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 1 y 10 c r e e s qu e e s t o y
pensando? ");
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 Ejercicios resueltos

if (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
m i o u) ;
if(usuario> yo) p r i n t f ( " \n\nLo s i e n t o , t u numero es MAYOR que e l
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 , t u numero e s MENOR que
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
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 c a n f f ", &a, & b , &c , & d , & e ) ;

www.FreeLibros.me
262 Captulo 9 Ejercicios resueltos

i f ((a<b) && ( a<c ) && (a<d) && ( 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) && ( d<c) && ( d < e ) ) p rin tf ("El numer o

menor e s : 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
9.4 Selectiva d o b le anidada 263

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
264 Captulo 9 Ejercicios resueltos

printf("Dam e l a m edi a ") ;


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 265

p r i n t f ( " \nDame e l v a l o r de l a 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 e l e c t o l i t o
no v o l t i l (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 267

p r i n t f ( " \ n Dame l a 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, a, res, r;
in t op;
p rin tf ( " E l programa p e r m i t e c a l c u l a r l a re siste n cia de un c a b l e \ n " ) ;
p rin tf ( "Selecione e l m a te ria l del c a b l e \ n " );
p rin tf (" 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 \ n ");
s c a n f ("%d", &op);
switch (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 de d i a g o n a l e s \ n " ) ;
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 ") ;
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 271

# 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
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 e l e c t r o l i t o
no v o l t i l (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 \

www.FreeLibros.me
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 de l a empresa G e l s t r a p \ n " ) ;
p r i n t f ( "\ n Q u e c o s t o u n i t a r i o 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 costo u n ita r io de
m a t e r i a l e s ha d i s m i n u i d o l o 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, el costo u n it a r io de mano

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 que p r o v o c a mas
p ro d u ccio n \n ");

www.FreeLibros.me
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 de
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 que s e p u ede o b s e r v a r l a l u z son:\n");
p rin tf ( " 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 onda\n");
s c a n f ("%d",&1);
sw itch (1)

www.FreeLibros.me
9.6 Estructura rep etitiva w h i l e 277

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 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
\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 : %c/ p e s o s , promedio:
%. 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 o lla s de c o n c r e t o segn r e s i s t e n c i a
del 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, y, sx= 0 , sy=0 , sxy= 0 , s x 2 =0 , s y 2 =0 , c o v , dx, dy;
double r c o v , rdx, rd y , dx1, dy1;
in t 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 masa t o t a l
de l o s p r o d u c t o s s e a l a misma que l a de l o s re activ os",m );
getchf);

www.FreeLibros.me
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 e l e m e n t o s de un c o m p u e s t o \ n \ n
Cuantos elementos t i e n e e l 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 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 presin

total del sistem a: ") ;


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 d e t e r m i n a n t e dados e l cofactor y el v e c t o r \ n ) ;
p r i n t f ( Dame e l o r d e n de l a m a t r i z ) ;
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 ",i) ;
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
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 frecuen cia r e la t iv a de n d a t o s \ n " ) ;


printf("Dam e l a cantid ad t o t a l 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 ,frec);
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
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, a, t;
c h a r op; op= 's';
w h ile ( 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 v e l o c i d a d i n i c i a l \ n " );
s c a n f ("^f", & vo);
p r i n t f ("Dame l a a c e le r a c io n \ n " );

s c a n f ( n96 f " , & a);


for ( 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 v e l o c i d a d f in a l? \ n " );
s c a n f ("9ss", & 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 primer d i l u c i n es: ",c2);
for ( 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 %; ",i);
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 d e l componente es:

p r i n t f ( " \ n La p re s i n t o t a l es
getchf);

www.FreeLibros.me
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 ",i) ;
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
9.9 A rre g lo s u nidim ensionales 297

p r i n t f ("Dame l a constante ");


scanf("% d",&x);
p r i n t f ("Dame e l e x p o n e n t e ");
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 v e c to r",i+ 1 );
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
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 299

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
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 es l a
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);
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 ( " \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: ") ;
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
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 : " , i + 1) ;
s c a n f ( " * 6f " , & v 2 [ i ] ) ;

}
for ( i = 0 ;i < n ; i ++ )

www.FreeLibros.me
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 303

p rin tf("C a lcu la la d e sv ia ci n estndar y l a 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 Ejercicios resueltos

float v 1 [ 1 0 ] , v 2 [ 10], v3[ 1 0 ] ;


in t i, 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 v e c t o r e s max 1 0 \ n " ) ;
scanf & n);
for ( i = 0 ; i < n ; i++)

{
p r i n t f ("Dame e l d a t o %c/ d e l p r i m e r v e c t o r \ n " , i + 1 ) ;
s c a n f ("%f", & v1 [ i ] );
p r i n t f ("Dame e l d a t o %c/ d e l segundo v e c t o r \ n " , i + 1 ) ;
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 t e r c e r v e c t o r \ n " , i+ 1);
s c a n f ("%f", & 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, v1 [ i ] * v 2 [ i ] * v 3 [ i ] ) ;
p rin tf ("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 c t a de
r e g r e s i o n \ n " );

www.FreeLibros.me
9.9 A rre g lo s u nidim ensionales 305

w h ile ( 0p = =' 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 ("%d", & n);
for ( i = 0 ; i < n ; i++)

{
p rin tf ("Dame un v a l o r d e l e j e x \ n " );
s c a n f ("%f", & x [ij);
p rin tf ("Dame un v a l o r d e l e j e y \ n " );

scanf ("* f", & 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 v a l o r de X \ n " ) ;
s c a n f ("%d", & 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, B1);
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
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 ( " 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 " ) ;
w h ile (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. 3Q\n");
s c a n f ( a%du, & n);

for ( i = 0 ; i < n ; i++)

{
p rin tf ("Dame un v a l o r d e l e j e x \ n " );
s c a n f ("%f", & x [ i ] );
p rin tf ("Dame un v a l o r d e l e je y \ n " );
scanf ( " * f , & 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 c o e f i c i e n t e de c o r r e l a c i n e s 96 f \ n " , cdc);
p rin tf ( " 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 ();

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 ( " E l programa c a l c u l a l a co v a ria n za \n ");
w h ile (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 e je x \ n " );
s c a n f ("*6f", & x [ij);
p rin tf ("Dame un v a l o r d e l e j e y \ n " );

scanf ( " * f , & 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 d , p [ 3 0 ] , g [ 3 0 ] , p a [ 30] ,ac=0,acu=0,acum=Q, x , i ;
float 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 309

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 ", & x);
for (i=Q; i < n ; i++)
for ( j = 0 ; j <x; j++)

{
p rin tf ("Dame e l 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 ) ;
scanf ( ' W , & 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
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 re siste n cia de c o n c r e t o s seg n l a semana de p r u e b a \
nCuantos t i p o s de c o n c r e t o s t i e n e s ? \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();

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 Introduzca e l tamanio
de l a m atriz (m x. 10x 1 0 , 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 Ejercicios resueltos

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 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 . . . . %c/ p i e z a s
\n\n , 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 315

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 de h o r a s de l a semana %c/ f u e de %c/", s , p ) ;
p r i n t f ( \n\tPor l o tanto, 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
316 Captulo 9 Ejercicios resueltos

for ( 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 m atriz: \n");
for ( 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 : , i + 1 , j +1 ) ;
s c a n f ( "% f" , &mat 1 [ i ] [ j ] ) ;

www.FreeLibros.me
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 Ejercicios resueltos

for ( 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 ]==*))) cont++;
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, m1[ 1 0 ] [ 1 0 ] , m2[1 0 ] [ 1 0 ] , m3[10][10], m, n;
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 ( 0p = = ' s ' \ \ o p = = ' S ' )

{
p r i n t f ("Dame e l t o t a l de f i l a s \ n " ) ;
scanf , & m);
p rin tf ("Dame e l t o t a l de c o l u m n a s \ n " ) ;
scanf & n);
for ( i = 0 ; i<m; i++)
for ( j = 0 ; j <n; j++)

www.FreeLibros.me
9.10 A rre g lo s bid im ensionales 319

p rin tf ("Dame e l 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 1\n",

i+ 1, 1+V;
scanf ("W ", & m1 [ i j [ j j ) ;
p rin tf ("Dame e l 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 ",

+ i, 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, m[3 ] [ 3 ] , det3;
float t [ 3 J [ 3 ] , a;
e lrse r ();
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 " , +1, j + 1 );
scanf ( ' * d \ & 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 ("Dame l a m a triz 2x2\n");

fo r (i= 0; i<n; i ++)

fo r (j= 0 ; j<n; j++)

{
p rin tf ("Dame e l 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);

scanf ("%d", & 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 a + b + c + d + e );

p rin tf ("Deseas c a l c u l a r otro determ inante? s/n\n");

s c a n f ( " %s " , & 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 ], y [ 2 0 ] [ 2 0 ];

in t i,j,f,c;

p rin tf ("El programa t e da u na m a t r i z y l a ra z de l a m ism a\n");

p rin tf ("Dame e l n u me ro de f i l a s \ n " ) ;

scanf ("%d", & f);

p rin tf ("Dame e l n u me ro de c o l u m n a s \ n " ) ;

scanf ("*d", & c);

fo r (i=0; i< f; i++)

www.FreeLibros.me
322 Captulo 9 Ejercicios resueltos

{
p r i n t f ( ' L e c t u r a de l a f i la %c/ de l a m a t r i z a : \ n u, i ) ;
for (j = 0 ; j <c; j++)

{
p rin tf ("a ( *d, %c/;=\ i , j);
scanf & x [i][j]);

y [i1 lll= sqrt ( x [ i] [ jj) ;

}
}
p rin tf ( " M a t r i z o r i g i n a l \ n " );
for (= 0 ; i < f ; i++)

{
for ( j = 0 ; j < c ; j++) p r i n t f C * 5 .2 f, x [ij[jj);
p rin tf ("\n");

}
p rin tf ("M atriz r a z c u a d r a d a \ n " );
for (i= 0; i< f; 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 p ro d u ccio n \n ");
s c a n f ( "% f" , &md);

www.FreeLibros.me
9.11 Funciones sin paso d e parm etros 323

p r i n t f ( "Dame e l costo in d ir e c t o 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 e s $%.3 f " , t o t a l ) ;

www.FreeLibros.me
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 de l a empresa G e l s t r a p \ n " ) ;
p r i n t f ( \nQue c o s t o u n i t a r i o 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 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 ,

la masa de l a solu cin : ") ;


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. de e q u i v a l e n t e s q u m i c o s d e l
c omponente; i n t r o d z c a l o s : ") ;
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, t;
void v e l ()

{
p rin tf ("Dame l a d is t a n c ia \ n " );
s c a n f ("%f", & d);
p rin tf ("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 v e lo c id a d \ n " );
s c a n f ("%f", & v);
p rin tf ("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 v e lo c id a d \ n " );
s c a n f ("%f", & v);
p rin tf ("Dame l a d i s t a n c i a \ n ) ;

www.FreeLibros.me
328 Captulo 9 Ejercicios resueltos

scanf & 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 d ista n cia 3)el
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, & f);
switch (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 ("Deseas r e p e t i r l a funcin? s/n\n");
scanf & 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
9.11 Funciones sin paso d e parm etros 329

float e, f, q;
v o i d c am po _e l e ()

{
p rin tf ("Dame l a f u e r z a \ n " );

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


p rin tf ("Dame l a ca rg a \n ");
scanf & 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", & e);


p rin tf ("Dame l a ca rg a \n ");
scanf & 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", & e);
p rin tf ("Dame l a fuerza \ n ");
s c a n f ('% f", & 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
330 Captulo 9 Ejercicios resueltos

scanf ( V , & f);


switch (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\n");

carga ();
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 r e p e t i r l a funcin? s/n\n");
scanf ("%s", & 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 cuantos c o s t a l e s n e c e s it a s \
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
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 ");


s c a n f ( " % f " , & x 1) ;
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 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 s i n p a s o de p a r m e t r o s */
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
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 335

# 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
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 del d e p ar t a me nt o de i m p r e s i n es
$%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
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 de l a empresa G e l s t r a p \ n " ) ;
p r i n t f ( "\ n Q u e c o s t o u n i t a r i o 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 es
$%. 3 f " , c o s i n d ( c i n ) ) ;

www.FreeLibros.me
9.13 Fu nciones co n paso d e p arm etros 337

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
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 o);
in t d e riv_exp (int x , in t n , i n t 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 n de o r d e n s u p e r i o r \ n n) ;
p r i n t f ( " \nDame l a 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 339

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
340 Captulo 9 Ejercicios resueltos

{
e lrse r ();
f l o a t v, d, t;
in 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", & f);
switch (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 d i s t a n c i a \ n " );
scanf C * f , & d) ;
p r i n t f ("Dame e l tiem po\n");
s c a n f ("%f", & t);
v = vel (d, t ) ;
p rin tf ( " 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 d i s t a n c i a \ n " );

s c a n f ("%f", & d) ;
p r i n t f ("Dame l a v e l o c i d a d \ n " );
s c a n f ("%f", & 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 v e l o c i d a d \ n " );

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


p r i n t f ("Dame e l tiem po\n");

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


d=dist ( v , t );
p r i n t f ("La d is ta n c ia e s 96 7 . 2 f m \ n " , d);
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
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 , m, a;
in t 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", & f);
switch (f)

{
case 1: p r i n t f ( " F u e rz a \n ");
p rin tf ("Dame l a masa\n") ;
scanf & m);
p rin tf ("Dame l a a c e le r a c io n \ n " );

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

www.FreeLibros.me
342 Captulo 9 Ejercicios resueltos

F = fuerza (m, a) ;
p rin tf ( " 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 fu e r z a \ n " );
scanf ("*f", & 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 f u e r z a \ n " );
scanf ( " * f , & 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 f u n c i o n ? \ n " );
scanf & 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, a3;
float a l c a n o ( 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 , & h);
alcano (x);
alq ueno (x);
a lq uino (x);
i f (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, no p e r t e n e c e a n i n g n g r u p o \ n " ) ;
p r i n t f ("Deseas r e p e t i r l a funcin? s/n \n");
scanf & 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 Ejercicios resueltos

Hinclude <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)

{
r e t u r n a*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;

}
v o i d mai n ()

{
e lrse r ();
float r , v, a;
in t 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', & f);
sw itch (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 v o lt a j e \ n " );
scanf ("*f", & v);
p r i n t f ("Dame e l am p e raje\n ");
s c a n f ("%f", & a);

r = re siste n cia (r,a);


p rin tf ("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 ( Dame l a r e s i s t e n c i a \ n " );
scanf ("W ", & r);
p r i n t f ("Dame e l am p e raje\n ");
s c a n f ("%f", & a);

www.FreeLibros.me
9.13 Fu nciones co n paso d e p arm etros 345

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 ("Dame l a r e s i s t e n c i a \ n " );

s c a n f ( U96f*, & r);


p rin tf ("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 & op);}
getch ();

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
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", & g);
sw itch (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 ("Dame l a fu e r z a \ n " );
s c a n f ("%f", & f);
p r i n t f ("Dame l a c a r g a \ n " );

s c a n f ("*6f", & 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 ("Dame e l campo e l e c t r i c o \ n " ) ;

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


p r i n t f ("Dame l a c a r g a \ n " );
s c a n f ("%f", & q);
f= f u e r z a (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 ("Dame e l campo e l e c t r i c o \ n " ) ;
s c a n f ("*f", & e);
p r i n t f ("Dame l a f u e r z a \ n " );
s c a n f ("%f", & 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", & op);}
getch ();

www.FreeLibros.me
9.14 Funciones con arreglos 347

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 de l i b r o s mas v e n d i d o s \ n " ) ;
p rin tf("\n \t\tE lija su l i b r o (Ingrese e l c o d ig o ) :\n \ n ");
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 \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
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 349

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
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 Ejercicios resueltos

c a s e 2: 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 , muestra, m oles[ 1 0 ], p o r c , comp;
in t e, i, 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 form ula d e l compuesto s o n : ) ;
for ( 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 );

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 (no mas de 1 5 ) ) ;
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
354 C aptulo 9 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 v e c t o r " , i+ 1);

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
9.14 Funciones con arreglos 355

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 ele m e n to 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 %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
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 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 ..................................... 42
E je r c i c i o 3 .2 E n c u e n tre el re a d e u n tra p e c io ................................................................ 44
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
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 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 ..................................... 82
E je r c i c i o 5.1 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 ...................... 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 .............................................................................. 105
E je r c i c i o 5 3 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
E je r c i c i o 5 .4 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
E je r c i c i o 6.1 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
E je r c i c i o 6 .2 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
E je r c i c i o 6 3 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
E je r c i c i o 6 .4 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 .......................................................................................... 132
E je r c i c i o 6 3 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 .................................................................... 134
E je r c i c i o 6 .6 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 ...................................... 143

www.FreeLibros.me
358 n d ice d e ejercicios resueltos

Ejercicio 6.7 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 .................................................................................................. 145
Ejercicio 6.8 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 ................................................................................... 155
Ejercicio 6.9 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 ................................. 160
Ejercicio 7.1 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
(versin 1) 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 ................. 178
Ejercicio 7.2 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
(versin 2) 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 fu n c io n e s y a p u n ta d o re s ) ........................................ 181
Ejercicio 7 3 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
(versin 3) 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 ) 183
Ejercicio 8.1 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............................ 219
Ejercicio 8.2 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 ......................................................................................................... 225

www.FreeLibros.me
n d ic e d e e j e m p l o s

E je m p lo 1.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 ............................................ 15


E je m p lo 2 .1 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 .................................. 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 je m p lo 3 .2 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 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
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 ...................................... 64
E je m p lo 4 .4 C o n v e rtir k il m e tro s a m e t r o s .................................................................. 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 .................................................................... 71
E je m p lo 4 .7 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 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 75
E je m p lo 5.1 Im p rim ir lo s n m e ro s e n te ro s d e l 1 al 1 0 ............................................ 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
E je m p lo 5 .4 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
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 .................................................................................................. 99
E je m p lo 5 .7 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
E je m p lo 5 .8 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 ........................................................................................ 104
E je m p l o 5 .1 0 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
E je m p l o 5 .1 1 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
E je m p l o 5 .1 2 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
u tiliz a n d o la e s tru c tu ra d e c o n tro l f o r ............................................ 111
E je m p l o 6.1 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
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 ............................................................................................... 151
E je m p l o 6 3 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 ...................................................................... 152
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 m N o mb r e 154
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;
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............................................................................................. 169
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 ) ............................ 170
E je m p l o 1 3 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 ) ................................................................................ 171
E je m p l o 7 .4 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 .......................................................................................... 174
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 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
E je m p l o 7 .6 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 .................. 186
E je m p l o 7 .7 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 ............................................................................................. 188
E je m p l o 7 .8 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 189

www.FreeLibros.me
n d ice d e ejem plos 361

Ejem plo 8.1 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
Ejem plo 8.2 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
Ejem plo 8 3 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 ................................................................................... 206
Ejem plo 8.4 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
el p ro m e d io g ru p a l d e n a lu m n o s ............................................................ 208
Ejem plo 8.5 C a lc u la r el re a d e u n t r a p e c i o .................................................................. 209
Ejem plo 8.6 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 211
Ejem plo 8.7 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 ........................................................................................ 213
Ejem plo 8.8 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 ....................................................... 214
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 215
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,
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 ..................................................... 217
Ejem plo 8.11 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
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 ..................................................................................... 218

www.FreeLibros.me
n d ic e d e t a b l a s

Tabla 1.1 T ip o s d e d a to s y m o d ific a d o re s.................................................................. 7


Tabla 1 .2 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 ................................................... 13
Tabla 1 3 S e c u e n c ia s d e e s c a p e ...................................................................................... 14
Tabla 2.1 O p e ra d o re s a ritm tic o s c o n e je m p lo s ...................................................... 23
Tabla 2.2 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
Tabla 2 3 O p e ra d o re s d e a s ig n a c i n ............................................................................ 26
Tabla 2.4 O p e ra d o re s r e l a c i n a l e s .............................................................................. 28
Tabla 2 3 O p e ra d o re s l g i c o s ........................................................................................ 29
Tabla 2 .6 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 200

www.FreeLibros.me
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