Está en la página 1de 380

www.FreeLibros.

me
www.FreeLibros.me
Introducción a la programación
estructurada en C
Primera edición

Teresa G ab riela M árquez Frausto


Sonia O so rio Á ngel
Elzie Noem í O lvera Pérez
C entro U niversitario d e Ciencias Exactas
e Ing eniería s (CUCEI)
U niversidad d e Guadalajara

Revisión técnica
Luis Arturo Jim énez Mendoza
Escuela Superior de Ingeniería Mecánica
y Eléctrica (ESIM E), Zacatenco
Instituto Politécnico Nacional

Prentice Hall
M éxico • A rgentina • B rasil • C olom bia • C osta R ica • C hile • E cuador
E spaña • 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 ráfica

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


O sorio Angel, Sonia; O lvera P érez, E lzie Noemí

Introducción a la program ación e s tru c tu ra d a e n C.


Prim era edición

PEA RSO N ED U C A C IÓ N , M éxico, 2011

ISBN: 978-607-32-0600-6
Á rea: C om putación

Form ato: 18.5 X 23.5 cm Páginas: 376

Edición en español

Editor: L uis M iguel C ruz Castillo


luis.cruz@ pearson.com
Editor de desarrollo: B em ardino G utiérrez Hernández
Supervisor de producción: Enrique T rejo Hernández

PRIM ERA EDICIÓN, 2011


D.R. © 2011 por Pearson Educación de M éxico, S.A. de C.V.
Atlacom ulco 500-5o. piso
Industrial A toto, C.P. 53519
Naucalpan de Juárez, Estado de M éxico
E-mail: editorial.universidades@ pearsoned.com

C ám ara Nacional de la Industria Editorial Mexicana. Reg. Núm. 1031.

Prentice Hall es una m arca registrada de Pearson Educación de M éxico, S.A. de C.V.

Reservados todos los derechos. Ni la totalidad ni parte de esta publicación pueden reproducirse,
registrarse o transm itirse, por un sistem a de recuperación de información, en ninguna forma ni por
ningún m edio, sea electrónico, m ecánico, fotoquím ico, m agnético o electroóptico, por fotocopia,
grabación o cualquier otro, sin perm iso previo por escrito del editor.

El préstam o, alquiler o cualquier otra forma de cesión de uso de este ejem plar requerirá tam bién la
autorización 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 rínted 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 básicos) ...................... 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 valuación .................................................................................................... 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 Inicialización y asignación 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 relaciónales ............................................................................ 27
2.5 O peradores lógicos ..................................................................................... 28
2.6 O perador condicional ................................................................................. 29
2.6.1 Prioridad de operadores .................................................................. 30
R esum en ......................................................................................................... 31
Evaluación .................................................................................................... 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
Evaluación .................................................................................................... 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
Evaluación .................................................................................................... 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 valuación .................................................................................................... 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
Evaluación .................................................................................................... 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
Evaluación .................................................................................................... 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 parám etros ........................................................ 210
8.3.1 Funciones con parám etros por valor ............................................ 211
8.3.2 Parám etros por valor y por referencia ......................................... 215
Resum en ......................................................................................................... 227
Evaluación .................................................................................................... 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 Secuenciación ............................................................................................... 231


9.1.1 Calcular el área de una balastra ..................................................... 231
9.1.2 C alcular el pago a realizar por núm ero
de apagadores y contactos .............................................................. 232
9.1.3 Calcular las coordenadas del vértice
de una parábola ................................................................................ 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 illón) en una solución ............ 234
9.1.7 C alcular el porcentaje de masa ..................................................... 235
9.1.8 C alcular el núm ero de ladrillos que se necesitan ..................... 236
9.1.9 C alcular el núm ero de escalones de una distancia ................... 236
9.1.10 Separa un núm ero de cuatro dígitos e n millares,
centenas, decenas y unidades ..................................................... 236
9.1.11 Calcular el cam po eléctrico ....................................................... 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 variación ............................................ 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 fórm ula VENA ........................................................... 241
9.2.5 C alcular las ecuaciones básicas del gas ..................................... 242
9.2.6 C alcular el costo indirecto de cada departam ento
de la com pañía 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 escripción de un com puesto quím ico según
sus com ponentes ........................................................................... 248
9.2.13 Calcular corriente, potencia y resistencia
de un aparato eléctrico ................................................................ 249
9.3 Selectiva doble ............................................................................................. 251
9.3.1 C alcular la cantidad de concreto requerido
según 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 núm 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 correlación ......................................... 256
9.3.7 Indicar si un com puesto es soluble o no ..................................... 257
9.3.8 Identificar sem irreacciones, oxidación o reducción ................. 257
9.3.9 Indicar el rendim iento teórico de una reacción ....................... 258
9.4 Selectiva doble anidada .............................................................................. 259
9.4.1 Juego de adivinanza de núm 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 núm ero m enor de cinco núm eros ............................................ 261


9.4.4 Indicar e l tipo de ángulo introducido,
según su m edida ................................................................................ 262
9.4.5 Calcular el coeficiente de variación ............................................ 263
9.4.6 C alcular la desviación 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 básicas d e un polígono 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 solución ........... 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 producción de cualquier em presa
en un día, una sem ana o un m es .................................................. 277
9.6.2 Sum ar los elem entos de una progresión aritm ética ............... 278
9.6.3 Sum ar los elem entos de una progresión geom étrica ............. 279
9.6.4 O btener la nóm ina de hom bres y mujeres,
y su prom edio .................................................................................... 280
9.6.5 Calcular el precio del concreto según su resistencia ............. 281
9.6.6 C alcular el coeficiente de correlación
entre d o s variables ........................................................................... 282
9.6.7 Calcular el balance de m asa ........................................................ 283
9.6.8 Im prim ir la fracción mol de los elem entos
de un com puesto .............................................................................. 284
9.6.9 Calcular porcentaje en presión ................................................... 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 aceleración 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 solución .................................................................. 294
9.8.7 C alcular la presión 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 proyección 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 desviación estándar 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 correlación ........................................ 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
según las horas de ejercicio realizadas ................................... 314
9.10.8 Calcular la raíz cuadrada de una m a t r iz ................................... 315
9.10.9 Calcular la m ultiplicación 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 raíz 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 artículos 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 solución ........ 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 eléctrico ............................................ 328
9.11.8C alcular e l núm ero de ladrillos y la cantidad
de cem ento necesarios para construir una pared ................... 330
9.12 Funciones con prototipo sin paso de parám etros .............................. 331
9.12.1 Calcular la distancia entre dos puntos .......................... 331
9.12.2 Calcular la excentricidad de una elipse
sin paso de parám etros ................................................................ 332
9.12.3 Calcular la derivada de X a la n ..................................... 333
9.13 Funciones con paso de parám 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 eléctrico, fuerza y c a r g a ............................... 345
9.14 Funciones con arreglos ........................................................................... 347
9.14.1 M ostrar el inventario de una librería ...................................... 347
9.14.2 C alcular e l salario de un trabajador
en consideración 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 Presentación

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 ría .

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
Introducción
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 ación 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
Capítulo 1 In troducción 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 ría 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 térp 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
Diseño
Programación
Codificación

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
Capítulo 1 In troducción 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 rís tic a s d e C , c o m o Ja v a .

1.5 Elem entos de un program a en C


(conceptos básicos)

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 básicos)

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 ría 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 arác 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
sím 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 Explicación

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 carácter - no e s p e r m i t i d o

"a l u m n o " El carácter " no e s p e r m i t i d o

www.FreeLibros.me
Capítulo 1 In troducción 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 básicos)

Ta b l a 1.1 Tipos de datos y m odificadores

Cantidad
de m e m o ria
Tipo Descripción 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
tamaño d e l float (más 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 tamaño 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 tamaño 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
Capítulo 1 In troducción 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 números


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 ría 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 básicos)

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 ría 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 ría 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
Capítulo 1 In troducción 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 ría 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 unión

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 sím 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
Capítulo 1 In troducción 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
carácter 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 ría 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
Capítulo 1 In troducción 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 ría 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 Descripción

\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 Tabulación

\v Tabulación 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 Carácter nulo

www.FreeLibros.me
1.6 Entrada y salida d e datos

L a s a lid a s e m o s tra ría 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 ría 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 sería:

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);
(continúa)

www.FreeLibros.me
Capítulo 1 In troducción al le n g u a je C

(continuación)
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/ años 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 años 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.

Evaluación
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 continuación.


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 código.


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
Capítulo 1 In troducción 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 acenaría 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
Aritmética 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 ría 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 Inicialización y asignación 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 Capítulo 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 Operación 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

(continúa )

www.FreeLibros.me
Capítulo 2 A ritm ética d e C

(continuación)

/ 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


módulo 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 )
2¡3~
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 aritméticos

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 válidas y com entario a la solución

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 operación 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 evalúan l o s demás 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 símbolos ( ). Las { }
(llaves) y los [ ] (corchetes) en el lenguaje C no se utilizan para asociar. Su significado se
explicará más adelante.

www.FreeLibros.me
Capítulo 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 asignación

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 asignación

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 relaciónales

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 relaciónales

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
Capítulo 2 A ritm ética d e C

Ta b l a 2.4 Operadores relaciónales

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

Operación Descripción 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 lógicos

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 lógicos

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 sólo
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

Operación 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 Capítulo 2 A ritm ética d e C

donde

< expresión 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 < expresión 2 >; p e ro si < expresión 1 > es
falsa, e n to n c e s s e e je c u ta rá < expresión 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 ría 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 expresión

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 líc 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 Capítulo 2 A ritm ética d e C

Evaluación

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 Capítulo 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 expresión, 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
Programación
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 rístic 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
Capítulo 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 Descripción

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 matemáticas 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 mínima de un programa en lenguaje C, versión 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 lín 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 lín 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 lín e a . O b s e rv e q u e los
sím 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 lín 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 lín e a s c o n tie n e n lo s sím 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
Capítulo 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 ría ser:

Ej e m p l o 3.2 Estructura mínima de un programa en lenguaje C, versión 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 lín 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 lín 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 ría 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


sím 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 ría 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
Capítulo 3 Prog ram ació n estructurada

3.3.1 Secuenciación

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

Descripción

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

Codificación
/ *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>
tíinclude< 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);

Explicación

L a p rim e ra lín 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 fác 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 lín 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.
(continúa)

www.FreeLibros.me
Capítulo 3 Prog ram ació n estructurada

(continuación )
Ejecución

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

Descripción

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.

Codificación
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 ;

Explicación

A q u í, a d e m á s d e std io .h s e ría 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 espués 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 lín 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.

Ejecución
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

Descripción

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
Capítulo 3 Prog ram ació n estructurada

(continuación)
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.

Codificación

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

Explicación

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.

Ejecución
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 núm eros

Descripción

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 .
(continúa)

www.FreeLibros.me
Capítulo 3 Prog ram ació n estructurada

(continuación)

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.

Codificación

l * P r o gr a ma p a r a p r o m e d i a r 4 números*/
#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;

Explicación

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 ría 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 ría d o s sa lto s d e lín e a y a d e m á s se
e sc u c h a ría u n “b¿p” .

Ejecución
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 día de una pastelería

Descripción

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 Número 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 Capítulo 3 Prog ram ació n estructurada

(continuación)

Vari abl es

Nombre Tipo Uso

M Entero Número de p a s t e l e s m edi a nos v e n d i d o s .

Ch Entero Número 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 Número 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 .

Codificación
/*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

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

Ejecución

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 básicas con dos núm eros

Descripción

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.

Codificación
/ *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
Capítulo 3 Prog ram ació n estructurada

(continuación)

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 ;

Explicación

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 .

Ejecución

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
Evaluación 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 rís 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 ría ) 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 están 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.

Evaluación
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
Capítulo 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 FIfíWA: 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 Capítulo 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 >

tíin 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.
Hiñel 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 Capítulo 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: selección simple, selección doble y selección
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
Capítulo 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 (condición 1 )

in stru cció n 1;

2.
if (condición 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 calificación 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 calificación 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 núm 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
Capítulo 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 núm ero por el teclado y evaluar si es par o impar

Descripción
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

Codificación

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

Explicación

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 .

Ejecución

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
Capítulo 4 Estructuras d e c o n tro l selectivas

1.
if (condición )
in stru cció n ;
else
in stru cció n ;
2.
if (condición )

{
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 instrucción, é 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 calificación

/*Aprobo o r e p r o b o * /
ttinclude <stdio.h >
Hiñel 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 calificación 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 calificación 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 kilóm 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 ;
(continúa )

www.FreeLibros.me
Capítulo 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 realizarán 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 año en que naciste fue bisiesto

Descripción

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 Año de n a c i m ie n t o

Codificación
/* AñO 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 ;

Explicación

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 .

Ejecución

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

Descripción
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
Capítulo 4 Estructuras d e c o n tro l selectivas

(continuación )
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 onversión.

Codificación

/ * 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 ;
}

Explicación

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 .

Ejecución

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
Capítulo 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 (condición 1 )
in stru cció n 1;
else
if (condición 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 núm ero leído 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 * !
tíinclude< 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 núm 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 núm 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 núm 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
Capítulo 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 triángulo introducido

Descripción

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 .

Codificación
/ * 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 ;
}

Explicación

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 .

Ejecución

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 líc 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
Capítulo 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 (expresión)
{
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 día de la semana y que el programa escriba


el núm ero de día 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 carácter. 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 operación 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 operación a r e a l i z a r \ n " );
(c o n tin ú a )

www.FreeLibros.me
Capítulo 4 Estructuras d e c o n tro l selectivas

(continuación)
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

Descripción

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 Carácter Cpción o p e r a c i ó n .

Codificación
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
Capítulo 4 Estructuras d e c o n tro l selectivas

(continuación)
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 ;
}

Explicación

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 )

Ejecución
Figuras g eom étricas
E l i j a s u figura ( 1. t r i a n g u l o
2 . rectángulo
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

Descripción

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 arácter Puesto.
sal Real Salario t o ta l.
sdes Real Salario descu en to .
h Entero Número 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
Capítulo 4 Estructuras d e c o n tro l selectivas

(continuación)
Codificación
# i n c l u d e < s t d i o . h>
tíinclude<conio.h>
tídefine D 600
tídefine 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 ;
}

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

Ejecución
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
Capítulo 4 Estructuras de control selectivas

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

Descripción

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 .

Codificación

/*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 "Escorpión" ) ;
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 ;
}

Explicación

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 .

(continúa)

www.FreeLibros.me
Capítulo 4 Estructuras d e co n tro l selectivas

(continuación)
Ejecución

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
Evaluación 85

Evaluación

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 ría 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 Capítulo 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 cuál es el resultado de la ejecución 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 acén*!


#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
Capítulo 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 Capítulo 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 $ 9óf" , 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 Capítulo 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 :

expresión 1;

w h ile (expresión 2 )

{
in stru cció n 1;

e x p r e s i ó n 3;

}
donde:
expresión 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 ).
expresión 2 es la c o n d ic ió n b o o le a n a .
expresión 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 núm 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 rístic 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 ién 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 núm 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
Capítulo 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 núm 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
Capítulo 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 lógica

# 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 números pares y multiplicar los números 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 Capítulo 5 Estructuras d e c o n tro l repetitivas

[continuación)
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 núm ero cualquiera

Descripción

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 Número 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 Número a e v a l u a r .
cont Entero Cu en ta l o s m ú l t i p l o s .

Codificación
# 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;

Explicación
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.
(continúa)

www.FreeLibros.me
102 Capítulo 5 Estructuras d e c o n tro l repetitivas

[continuación)

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.

Ejecución
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 :

expresión 1;

do

{
in stru cció n 1;

e x p r e s i ó n 3;
} w h ile(e xpresión 2);

donde:

expresión 1 es la a s ig n a c ió n d e in ic io .
expresión 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

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


expresión 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 núm eros leídos 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 Capítulo 5 Estructuras d e c o n tro l repetitivas

Ej e m p l o 5.8 Calcular el pago a realizar según 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 número 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 máximo 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

Descripción
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 Número g e n e r a d o p o r e l usuario.

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

(c o n tin ú a )

www.FreeLibros.me
106 Capítulo 5 Estructuras d e c o n tro l repetitivas

(continuación)
Codificación
t t i n c l u d e < s t d i o . h>
tíinclude< 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 ;

Explicación

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 próxim a".

Ejecución

(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 mío
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 mío
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 números desde el teclado y sumar los primeros cinco impares

Descripción

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 números i m p a r e s .

num Entero Es e l número l e í d o del teclado.

cont Entero Cuenta l a c a n t i d a d de números i m p a r e s .

(c o n tin ú a )

www.FreeLibros.me
108 Capítulo 5 Estructuras d e c o n tro l repetitivas

[continuación)
Codificación
/* Sumar c i n c o números 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>
tíinclude< 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 números i m p a r e s e s %c/ " ,s u m a ) ;

getch();
return 0;
}

Explicación

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.

Ejecución

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 números 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 ( expresión 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:

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


expresión 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 .
expresión 3 instrucción d e increm ento o decrem ento d e la variable d e control.

La expresión 1 y expresión 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 expresión

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 núm 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 ( );
(continúa)

www.FreeLibros.me
110 Capítulo 5 Estructuras d e c o n tro l repetitivas

(continuación)
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 núm 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 lín 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 lín 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 Capítulo 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)

Descripción

D ib u ja r u n a lín 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 lín 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 lín 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 lín 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

Codificación
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 Capítulo 5 Estructuras d e c o n tro l repetitivas

(continuación)
Explicación

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.

Ejecución

* * * * * * * * * * * * * * * * *

* *

* *

* *

* * * * * * * * * * * * * * *

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

Evaluación

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 lím ite d e fin id o p o r el u su ario .

www.FreeLibros.me
116 Capítulo 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 líneas 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 Capítulo 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;

c—

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 números 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 Capítulo 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 números e s %c/ ", s u m a p a r ) ;

p r i n t f ( " \nLa suma de l o s números 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;
}

Hiñelude < 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 Capítulo 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.
Hiñel 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 Capítulo 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 Capítulo 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 > <[número 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 ría 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 ría 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 ría 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 Capítulo 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 lím 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

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

Codificación

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

Ejecución
p o s ic ió n 0 3
p o s ic ió n 3 9
p o s ic ió n 4 2

Explicación

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 núm ero en un arreglo e indicar


en qué posición se encuentra

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


(continúa)

www.FreeLibros.me
130 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(continuación)

Vari abl es
Nombre Tipo Us o
vec Vector r e a l Al macena números 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 Número 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 ) .

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

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

Ejecución
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

Explicación

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

Descripción

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 números


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.

Codificación
# 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{

(continúa)

www.FreeLibros.me
132 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(continuación)
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 números e s *d ", s u m a ) ;
getch();
return 0;

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

Ejecución
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 números e s 18

Eje r c ic io 6.4 Leer elem entos, imprimir, sum ar y contar los elem entos de una
posición par; si el número contenido es impar indicar la posición

Descripción

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 números 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 números 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 números a l e e r .

Codificación
/*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 Capítulo 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 números e s %d " , c , s u m a ) ;

getch();

return 0 ;

Explicación

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.

Ejecución
Cuant os e l e m e n t o s s e l e e r á n (no mas de 10) 5

Posición numero

0 1

4 5

son 2 y l a suma de e s o s números 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

Descripción
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 números.


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.

Codificación
/* 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 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(continuación)
{
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 número 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;

Explicación

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.

Ejecución
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 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(continuación)
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 continuación se m uestra el ejercicio a n terio r con el uso de funciones


con p arám etro s p a ra cada operación.

/* 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 Capítulo 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 ( " adiós ") ;
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> <[núm ero d e renglones]> <[núm 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 ría 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 Capítulo 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 ría 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

Descripción

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

(continuación)

Variabl es

Nombre Tipo Us o

tabla Entero, real Al macena l o s números.

i Entero Recorre filas.

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

Codificación

/* T a b l a con números 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 ;
}

Explicación
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

Ejecución
13
4
13
24

Eje r c ic io 6.7 Realizar la suma de dos matrices, con una


dim ensión de hasta 4 X 4

Descripción

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 Posición 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 Número de c ol um nas .

Renglón Número de r e n g l o n e s .

Codificación

/* 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 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(continuación)

# 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 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(continuación)

p o s Y +=3;

}
getch();
return 0;
}

Explicación

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 .

Ejecución
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[renglón] [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
Capítulo 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 ría 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.

Función 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 arác ter.


Función 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 arác ter.

Ej e m p l o 6.2 Contar el núm ero de ocasiones que aparece la letra


'a' en una línea

# 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 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

m in ( ) (continuación)

{
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 lín 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 mayúsculas, un nombre


que fu e leído en minúsculas

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 ría 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 lín 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 función 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 lín e a (e n te r). L a función 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 lín 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 Capítulo 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 .

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

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

Función 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 cadañal, a p a rtir d e l c a rá c te r


de fin d e la cadañal, so b re sc rib ie n d o e s e c arác ter.

Función 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
cadañal, a p a rtir d e l c a rá c te r d e fin d e cadañal, so b re sc rib ie n d o el c a rá c te r
d e fin d e cadañal.

Función 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 cadañal y lo c o m p a ra c o n el c o n te n id o d e cadena2 .

Función 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 instrucción s c a n f


y m ostrar lo capturado

Descripción

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 arác ter.

M o stra r la c a d e n a d e c a ra c te re s leíd a.

Vari abl es

Nombre Tipo Uso

cad Carácter Al mac ena l a cadena l e í d a .


car Carácter 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 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(c o n tin u a c ió n )
Codificación
/ * 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 añade el fin d e cadena */

p r i n t f ( u \n L a cadena capturada es: %s", cad);

getchf);

Explicación

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 lín 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 leíd a.

Ejecución
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


leída, carácter a carácter, con s t r le n , y con s i z e o f
finalm ente m ostrar la posición en m em oria del arreglo

Descripción

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 lín 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 Carácter Al mac ena l a cadena l e í d a .


car Carácter 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.

Codificación

#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>
tídefine 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

(continúa)

www.FreeLibros.me
158 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

(continuación)

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

Explicación

S e le e la c a d e n a 1 c a rá c te r a c arác 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.

Ejecució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)
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 núm ero de ocasiones


que aparece la letra seleccionada

Descripción

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

Codificación

/* 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 Capítulo 6 Datos d e t ip o estructurado. A rre g lo s

[continuación)

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

Explicación
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
leíd 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 .

Ejecución
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 núm ero y una letra; si es letra,


adem ás distinguir si es mayúscula o minúscula

Descripción
L ee r el c arác 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 Carácter 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

Codificación
/*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;

Explicación

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 .

Ejecución

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 mayúscula

www.FreeLibros.me
162 Capítulo 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.

Evaluación
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 lín 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 rtíc 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 rtíc 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 Capítulo 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 líneas 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>
tídefine 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 Capítulo 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 Capítulo 7 D atos d e t ip o estructurado

};

D onde

identif¡cador_ 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 sería:

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 leíd 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 definición de estructura com o una variable local

Hiñel 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 ;

/*asignación */
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 " ) ;

(continúa)

www.FreeLibros.me
170 Capítulo 7 D atos d e t ip o estructurado

(continuación)
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 Capítulo 7 D atos d e t ip o estructurado

[continuación)

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 Capítulo 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 leíd 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 >


tíinclude <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 lificación 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 Capítulo 7 D atos d e t ip o estructurado

(continuación)
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 números;

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

Hiñel 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 Capítulo 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 (Versión 1) Alm acenar en una estructura el nombre


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, inicializarlo, agregar datos
y mostrarlos, usando un tip o de dato definido p o r el usuario

Descripción

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.

Codificación

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


tíinclude <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 Capítulo 7 D atos d e t ip o estructurado

(continuación)
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 ;

Explicación

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


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

Ejecución
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 López
dame l a calificación 1 99
dame l a calificación 2 78
dame l a calificación 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 Gómez
dame l a calificación 1 85
dame l a calificación 2 97
dame l a calificación 3 68

dame l a estatura 2 1.59

nombre ca lificación 1 calificación 2

calificación 3 estatura
Juan p e r e z lop ez 99 78
86 1.79
Luis Ibarra Gómez 85 97
68 1.59

E je r c ic io 7.2 (Versión 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, además de tres calificaciones; alm acenar esto en
un arreglo. Inicializar el arreglo, agregar datos y mostrarlos,
usando un tipo definido por el usuario. (Solución 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 Capítulo 7 D atos d e t ip o estructurado

[continuación)
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 (Versión 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.
(Solución 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 Capítulo 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 irección ");

g ets(d a to s[i] .p e rs.d ire cció n );


p rin tf("\n dame e l teléfon 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 Capítulo 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 Capítulo 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 , después 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>
Hiñelude <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 ", *apf¡oat) ;

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 Capítulo 7 D atos d e t ip o estructurado

(icontinuación)
tíinclude < 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
Evaluación 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.

Evaluación

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 Capítulo 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 efectúe 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 TAMAÑO

i f ( o p c = = 1)

www.FreeLibros.me
194 Capítulo 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 ? (máximo 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 amón") ;
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
(programación 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 ría 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 Capítulo 8 Funciones (prog ram ación 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 fác 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.

Función 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 lín 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 rístic 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 parám 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 parám 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 arám 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 arám 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 función.

www.FreeLibros.me
200 Capítulo 8 Funciones (prog ram ación 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 función;
* 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 Descripción de la definición de función

Concepto Explicación

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 función,


si e s que l a función 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
parámetros 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 función
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 á
función 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 función devolver e l r e s u l t a d o de l a función, si e s qu e l a
función 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 función.

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 función;

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 cío 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 función sin paso de parám etros ni devolución 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 Capítulo 8 Funciones (prog ram ación 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 izás 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 bién so n funciones, a u n q u e éstas están 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 ién
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, sólo b asta co n invocarlas y ejecu tarán 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 diseña.

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 lín 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 Capítulo 8 Funciones (prog ram ación 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 rístic 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 ría 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 ría
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 Capítulo 8 Funciones (prog ram ación 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 función;
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 Diseñar la solución para el caso de la suma de dos s m ediante una


función que regresa un valor: el resultado del cálculo 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 Capítulo 8 Funciones (prog ram ación 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 Diseñar, 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 Capítulo 8 Funciones (prog ram ación 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 parám 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 parám 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 arác ter.

8.3.1 Funciones con parámetros 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 parám etro )

I
declaración d e variables locales;
cuerpo d e la función;
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


parám 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 números,


pero usando una función con paso de parám 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 Capítulo 8 Funciones (prog ram ación m odular)

(continuación)
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 .

Parám 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 parám 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 ría m o s q u e s e a lm a c e n a ría 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 ría 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 iría e n c, y d e sp u é s lo im p rim iría .

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 ría 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 función para sum ar dos números, 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 Capítulo 8 Funciones (prog ram ación 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 núm 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 parám 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 Parámetros 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 función 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 Capítulo 8 Funciones (prog ram ación 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 ría :

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.

Parám 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 parám 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 función que intercambie dos valores entre s,


utilizando parám 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 Capítulo 8 Funciones (prog ram ación m odular)

(continuación)
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 función que intercambie dos valores entre números,
utilizando un parámetro 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 parám 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 lín 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 ría 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


operación: el factorial de un número, la potencia indicada
de un núm ero o im prim ir una tabla de m ultiplicar

Función m a in

Descripción

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.
(continúa)

www.FreeLibros.me
220 Capítulo 8 Funciones (prog ram ación m odular)

[continuación)

Función m e n ú

Descripción

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 .

Función fa c to r ia l

Descripción

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 .

Función p o te n c ia

Descripción
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 parám 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 .

Función ta b la

Descripción
S o lic ita r el n ú m e ro d e la ta b la y el lím ite .

L ee r el n ú m e ro y el lím ite .

Im p rim ir la ta b la d e sd e 1 h a s ta el lím 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 é número 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.

Codificació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 i d f a c t o r i a l ()

(c o n tin ú a )

www.FreeLibros.me
222 Capítulo 8 Funciones (prog ram ación m odular)

(continuación)

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 parám 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 Capítulo 8 Funciones (prog ram ación m odular)

(continuación)

}
getch();

}
p rin tf ("\n \n \n \t adiós “) ;
getch();
return 0;
}

Explicación

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 .

Ejecución

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 parám etros

F a cto ria l
I n t r o d u c e un número: 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.

Adiós.

Eje r c ic io 8.2 Escribir un programa con una función que realice las siguientes
operaciones con un número: raíz cuadrada, cuadrado y cubo.
M ostrar el resultado en forma de tabla, con los núm eros del
1 al 10

Descripción

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 Parámetro p o r v a l o r p a r a l o s valores del uno a l diez.

ra íz Peal Parámetro 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 Capítulo 8 Funciones (prog ram ación m odular)

(continuación)

Tabl a d e p a r á m e t r o s

Nombre Tipo Uso

c uad Entero Parámetro 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 Parámetro 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.

Codificación

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 números 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

Explicación

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 .

Ejecución

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 Capítulo 8 Funciones (prog ram ación 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
Evaluación 229

Evaluación

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 ría 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 ría 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 ría 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 Capítulo 8 Funciones (prog ram ación 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 ría 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 ría ,
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 Secuenciación

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 Capítulo 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 número


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 Secuenciación 233

9.1.3 Calcular las coordenadas del vértice de una parábola

/*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 vértice 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 vértice 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 vértice 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 Capítulo 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>
tíinclude<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 millón)


en una solución

/*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 Secuenciación 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 ción -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 Capítulo 9 Ejercicios resueltos

9.1.8 Calcular el número de ladrillos que se necesitan

/ *Número_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 núm 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 núm ero de cuatro dígitos 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 Secuenciación 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 máximo ") ;
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 eléctrico


/*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 Capítulo 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 variación

/* 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 desviación estándar ");

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 Capítulo 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 fórm 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 apítulo 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 básicas 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 presión (en a t m ) \ n " ) ;
scanf(">6f",&P);

www.FreeLibros.me
244 Capítulo 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 presión (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 pañía 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 Capítulo 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
según 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 Capítulo 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 Descripción de un compuesto químico según


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 eléctrico

/*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 Capítulo 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


según 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 según 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 Capítulo 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 número 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 Capítulo 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 Capítulo 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 correlación

/* 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 catión ;
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, oxidación o reducción


¡*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 apítulo 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 teórico de una reacción

/ * 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 reacción (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 números

/*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 Capítulo 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 número menor de cinco números


/* 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 Capítulo 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,


según 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 variación

/* 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 desviación estándar ");
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 Capítulo 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 estándar ");
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 desviación 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 Capítulo 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 ión 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 Capítulo 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 básicas de un polígono 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 Capítulo 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 Capítulo 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 solución

/ * 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 Capítulo 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)Presión 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 Capítulo 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 producción de cualquier empresa


en un día, 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 Capítulo 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 progresión aritmética

/* 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 progresión ");
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 común " ) ;
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 progresión geométrica

/* 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 progresión ");
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 razón ");
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 Capítulo 9 Ejercicios resueltos

p r i n t f ( "= %. 2 f " , r e s u l ) ;
getchf);

9.6.4 O btener la nóm ina de hombres y mujeres,


y su promedio

/*Nómina*/
# 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 según


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 según 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 Capítulo 9 Ejercicios resueltos

9.6.6 Calcular el coeficiente de correlación


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 Capítulo 9 Ejercicios resueltos

9.6.8 Imprimir la fracción 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 presión


/*Porciento presió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)

{
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 presión

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 Capítulo 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 Capítulo 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 Capítulo 9 Ejercicios resueltos

9.8 Estructura repetitiva f o r

9.8.1 Calcular la aceleración 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 >
Hiñel 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 Capítulo 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 concentración 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 centración 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 Capítulo 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 atóm 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 solución

/ * 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 concentración 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 presión parcial de un com ponente

/*Presión 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 Capítulo 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 (máximo 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
Capítulo 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 reacción


/ * 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 proyección 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 Capítulo 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 Capítulo 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 desviación estándar 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 estándar 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 Capítulo 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 regresión


/ * 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 correlación

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 Capítulo 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 pastelería

/ * 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 Capítulo 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 Capítulo 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 Capítulo 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 más 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 Capítulo 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


según 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 raíz 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 Capítulo 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 multiplicación 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 Capítulo 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 Capítulo 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 raíz 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 Capítulo 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 parám etros

9.11.1 Calcular el costo de los artículos 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 parám 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 Capítulo 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 ( "Opción i n v a l i d a " );

}
getchf);

9.11.3 Calcular la molaridad de una solución


/ * 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 parám 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 solución


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 ción : ") ;


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 Capítulo 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 parám 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 Capítulo 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 función? s/n\n");
scanf & op);

}
getch ();

9.11.7 Calcular el campo eléctrico


/*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 parám 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 Capítulo 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 función? s/n\n");
scanf ("%s", & op);

}
getch ();

9.11.8 Calcular el número 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 parám 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 parám 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 Capítulo 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 parámetros
/* 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 parám 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 Capítulo 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 parám 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 parám 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 Capítulo 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 arám 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 Capítulo 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 arám 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 Capítulo 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 parám etros

s c a n f ( a* s u, & o p ) ; }
getch ();

9.13.6 Calcular fuerza, masa y aceleración


/*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 Capítulo 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= aceleración ( 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 parám 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 función? 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 Capítulo 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 arám 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 eléctrico, 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 Capítulo 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 librería


/ * I n v e n t a r i o de l o s l i b r o s más 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 Capítulo 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 consideración 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 Capítulo 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 más vendidos


de las marcas de cola más conocidas
/ * I n v e n t a r i o de l o s r e f r e s c o s más 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 Capítulo 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 (máximo 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 reacción (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 apítulo 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 (máximo 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 leíd a, c a rá c te r a c arác 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
(versión 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
(versión 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
(versión 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 programación utilizando el
lenguaje de C. El contenido está considerado
para desarrollarse en un primer curso.

El método de enseñanza se basa en el análi­


sis de un problema y la descripción de los
pasos necesarios para llegar a la solución;
el objetivo principal es mostrar con detalle
cómo crear un programa y cómo entenderlo.

Todo esto se complementa con ejemplos y ejercicios resueltos, desglosados en cinco


partes para una mejor comprensión. También se presenta la descripción de las
operaciones, los datos, la codificación y la ejecución del código, además de una
explicación detallada del procedimiento.

Los primeros capítulos presentan los fundamentos de la programación en C, la


aritmética y la programación 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 computación.

Para mayor información visite la página 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