Professional Documents
Culture Documents
Ebook C Programming From Problem Analysis To Program Design 6Th Edition Malik Solutions Manual Full Chapter PDF
Ebook C Programming From Problem Analysis To Program Design 6Th Edition Malik Solutions Manual Full Chapter PDF
Ebook C Programming From Problem Analysis To Program Design 6Th Edition Malik Solutions Manual Full Chapter PDF
Chapter 9
Records (structs)
At a Glance
• Objectives
• Teaching Tips
• Quick Quizzes
• Additional Projects
• Additional Resources
• Key Terms
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-2
Lecture Notes
Overview
In Chapter 9, students will be introduced to a data type that can be heterogeneous. They
will learn how to group together related values that are of differing types using records,
which are also known as structs in C++. First, they will explore how to create
structs, perform operations on structs, and manipulate data using a struct.
Next, they will examine the relationship between structs and functions and learn
how to use structs as arguments to functions. Finally, students will explore ways to
create and use an array of structs in an application.
Objectives
In this chapter, the student will:
• Learn about records (structs)
• Examine various operations on a struct
• Explore ways to manipulate data using a struct
• Learn about the relationship between a struct and functions
• Discover how arrays are used in a struct
• Learn how to create an array of struct items
Teaching Tips
Records (structs)
1. Define the C++ struct data type and describe why it is useful in programming.
Discuss how previous programming examples and projects that used parallel
Teaching
arrays or vectors might be simplified by using a struct to hold related
Tip
information.
3. Using the examples in this section, explain how to define a struct type and then
declare variables of that type.
1. Explain how to access the members of a struct using the C++ member access
operator.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-3
2. Use the code snippets in this section to illustrate how to assign values to struct
members.
Mention that the struct and class data types both use the member access
operator. Spend a few minutes discussing the history of the struct data type
and how it relates to C++ classes and object-oriented programming. Note that the
struct is a precursor to the class data type. Explain that the struct was
introduced in C to provide the ability to group heterogeneous data members
together and, for the purposes of this chapter, is used in that manner as well.
Teaching However, in C++, a struct has the same ability as a class to group data and
Tip
operations into one data type. In fact, a struct in C++ is interchangeable with
a class, with a couple of exceptions. By default, access to a struct from
outside the struct is public, whereas access to a class from outside the
class is private by default. The importance of this will be discussed later in the
text. Memory management is also handled differently for structs and
classes.
Quick Quiz 1
1. True or False: A struct is typically a homogenous data structure.
Answer: False
4. True or False: A struct is typically defined before the definitions of all the functions
in a program.
Answer: True
Assignment
1. Explain that the values of one struct variable are copied into another struct
variable of the same type using one assignment statement. Note that this is equivalent to
assigning each member variable individually.
Ask your students why they think assignment operations are permitted on
Teaching
struct types, but not relational operations. Discuss the issue of determining
Tip
how to compare a data type that consists of other varying data types.
Input/Output
1. Note that unlike an array, aggregate input and output operations are not allowed on
structs.
Mention that the stream and the relational operators can be overloaded to provide
Teaching
the proper functionality for a struct type and, in fact, that this is a standard
Tip
technique used by C++ programmers.
2. Illustrate parameter passing with structs using the code snippets in this section.
1. Using Table 9-1, discuss the similarities and differences between structs and arrays.
Spend a few minutes comparing the aggregate operations that are allowed on
Teaching structs and arrays. What might account for the differences? Use your previous
Tip exposition on the history of structs and memory management to facilitate this
discussion.
Arrays in structs
2. Using Figure 9-5, discuss situations in which creating a struct type with an array as a
member might be useful. In particular, discuss its usefulness in applications such as the
sequential search algorithm.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-5
structs in Arrays
1. Discuss how structs can be used as array elements to organize and process data
efficiently.
Emphasize that using a structured data type, such as a struct or class, as the
Teaching element type of an array is a common technique. Using the vector class as an
Tip example, reiterate that object-oriented languages typically have containers such
as list or array types that in turn store objects of any type.
1. Discuss how structs can be nested within other structs as a means of organizing
related data.
2. Using the employee record in Figure 9-8, illustrate how to reorganize a large amount of
related information with nested structs.
3. Encourage your students to step through the “Sales Data Analysis” Programming
Example at the end of the chapter to consolidate the concepts discussed in this chapter.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-6
Quick Quiz 2
1. What types of aggregate operations are allowed on structs?
Answer: assignment
3. True or False: A variable of type struct may not contain another struct.
Answer: False
Additional Projects
1. In Chapter 8, you were asked to write a program that keeps track of important birthdays.
Modify this program to store one person’s birthday information in a struct data type.
The struct should consist of two other structs: one struct to hold the person’s
first name and last name, and another to hold the date (day, month, and year). Consider
including other information as well, such as a vector of strings with a list of possible
gift ideas.
2. In Chapter 8, you were asked to write a program that listed all the capitals for countries
in a specific region of the world. Modify this program to use an array of structs to
store this information. The struct should include the capital, the country, and the
continent. You might include additional information as well, such as the languages
spoken in each capital.
C++ Programming: From Problem Analysis to Program Design, Sixth Edition 9-7
Additional Resources
1. Data Structures:
www.cplusplus.com/doc/tutorial/structures.html
2. struct (C++):
http://msdn2.microsoft.com/en-us/library/64973255.aspx
Key Terms
Member access operator: the dot (.) placed between the struct and the name of one
of its members; used to access members of a struct
struct: a collection of heterogeneous components in which the components are
accessed by the variable name of the struct, the member access operator, and the
variable name of the component
Another random document with
no related content on Scribd:
lukuunottamatta tietysti hetkiä, jolloin hän ajatteli Paulia. Hän tiesi
uskollisena isänmaansa palvelijana tehneensä maansa viholliselle
kaikenmoista haittaa. Itse hän ei kuitenkaan pitkiin aikoihin joutunut
katsomaan vihollista silmästä silmään.
*****
Kävi kuin sähkövirta Dimitrin koko olemuksen läpi. Se oli hän, juuri
hän! Ja hän muistutti todellakin Paulia.
*****
Näytti melkein siltä kuin järjestelyssä olisi piillyt jokin ajatus, niin
perin erilaiset olivat nämä vierustoverit. Toinen oli joukkonsa iloisin
mies, toinen oli ainoa, joka ei ilmaissut vähintäkään iloa
kotiinpääsöstä. Toisella ei ollut yhtään mitään matkassaan, sillä
iloisella oli tavallista suurempi matkapussi, jota hän ei, ellei se käynyt
välttämättömäksi, hetkeksikään heittänyt luotaan. Toinen katseli
tuontuostakin osaaottavasti vierustoveriinsa, toinen ei koskaan edes
kääntänyt päätäänkään toveriinsa päin. Hän oli sokea ja hänellä oli
side silmillä.
Näkevä, joka oli iloinen luonteeltaan, puheli aina kun vain sai
tilaisuutta siihen. Hänen täytyi jakaa iloaan muillekin. Ja sekin, että
hänen vierustoverinsa oli sokea, kehoitti häntä puhumaan. Täytyihän
sokean edes saada kuulla, kuulla jotain iloista. Ja hänellä oli iloista
puhuttavaa.
— Tiedättekö, meillä on vain laskettavana pitkä alamäki läpi
Ruotsin.
Sitte olemme kotona.
Taas vetäisi hän muutamia rajun iloisia säveleitä, sitte hän alkoi
kertoa. Hän puhui nyt matalalla äänellä, melkein kuiskaamalla, mutta
nytkin värisi joka sana hillittyä iloa. Viulu oli koko ajan seurannut
häntä. Hän oli peljännyt sen kadottamista melkein enemmän kuin
henkeään. Kukapa oikeastaan ennätti ajatella henkeään sodassa.
Vaaraa hetkenä oli muuta ajattelemista, ja kun vaara oli ohi, oli hän
aina ajatellut viuluaan.
Tämä viulu oli myöskin hankkinut hänelle sen pikku vaimon, joka
nyt kotona odotti häntä.
— Mutta vaimo?
— Vaimo on.
*****
Eikö hänellä vielä ollut ikää tarpeeksi ymmärtääkseen, että vaikka
he kaikki olivatkin palaavia, palasivat he eri asteisesti ruhjoutuneina,
eri mielentilassa ja erilaisiin oloihin. Rikkiammuttu sääri oli
korvattavissa keinotekoisella, mutta mikä korvasi sokealle hänen
näkönsä? Ja kuka aavisti, mitä näkö merkitsi juuri hänelle? Hän ei
voinut avautua ihmisille, ei kuten vierustoveri sanoin viskellä heille
sisintään niinkuin rikas rahoja taskustaan. Hän oli luonnostaan saita
sisimpänsä suhteen. Ja olot olivat yhä enemmän kehittäneet häntä
tähän suuntaan. Hän oli oppinut olemaan yksin ja yksinäisyydessä
tuijottamaan omaan sisimpäänsä, niinkuin saita raha-arkkuunsa,
Barbel ei käsittänyt tällaista. Ajatukset eivät koskaan rasittaneet
häntä. Hän purki sisimpänsä lauluun ja laverteluun. Kaikki oli
helppoa hänelle paitsi yksinäisyys. Sitä hän ei sietänyt. Sentähden
olivat he oppineet kulkemaan kukin omia teitään, toinen koko
maailman ystävänä, toinen sisäisesti eristettynä kaikista, joskin
ulkonaisesti yhtenään kosketuksessa sen monivivahteisen
ihmisvirran kanssa, joka päivittäin vieri hänen ja hänen kotinsa
ohitse.
Jospa hän vielä olisi voinut vihata niinkuin silloin! Mutta hän oli
taistellut voidakseen antaa anteeksi. Ja kun hän oli voinut sitä, oli
hän uudelleen ruvennut rakastamaan. Hän uskoi vieläkin
mahdolliseen muutokseen. Etenkin sodan puhjettua oli toivo
hänessä virinnyt. Ero oli yhdistävä heidät. Ero oli ehjentävä
särkyneen.
Hän näki monta kaunista unta, sillaikaa kun kuulat vinkuivat hänen
ympärillään ja tykit soittivat surmasäveleitään. Hän toivoi sekä
omasta että toisten puolesta. Ei kai tällainen hävityksen kauhistus
ollut vain äkillisen mielijohteen seuraus. Sillä täytyi olla jokin
tarkoitus, niin hyvä ja suuri tarkoitus, että sen saavuttamiseksi
kannatti kärsiä ja uhrautua.
*****
Hän naurahti taas niin ilkeästi, että hän itsekin säikähti sitä. Hänen
mieleensä oli johtunut, ettei hän koskaan niinkuin muut illoin voinut
ummistaa silmiään. Hänellähän ei ollut silmiä.
Niin, hän oli ilkeästi ruhjottu raukka, jota kuka tahansa milloin
tahansa saattoi pettää, mies, joka ei enää voinut elättää itseään,
mies, jolta kaikki oli riistetty.
*****
Jos saisi ajatella niin, jos voisi luottaa ja uskoa johonkin, ehkä
silloin jaksaisi elää tulematta hulluksi.
Hän kohotti kätensä. Hän tahtoi pujottaa sen oman pikku poikansa
käteen ja kulkea hänen kanssaan kotirinteitten varjoisaa polkua
pitkin.
Vastaus taittoi ikiajoiksi kärjen kaikelta mitä äiti olisi tahtonut sanoa
pojalleen. Se suuntasi syytöksen hänen oman sisimpänsä
veristävään haavaan. Hän sulkeutui huoneeseensa. — Miksi, miksi,
kysyi hänkin. — Miksi tuli juuri Feodor Petrovits Iwanoffsky lasteni
isäksi?