C++/Data Type/Struct

Материал из C\C++ эксперт
Перейти к: навигация, поиск

array of structures

<source lang="cpp">

  1. include <iostream>
  2. include <string>
  3. include <sstream>

using namespace std;

  1. define N_MOVIES 3

struct movies_t {

 string title;
 int year;

} films [N_MOVIES]; void printmovie (movies_t movie); int main () {

 string mystr;
 int n;
 for (n=0; n<N_MOVIES; n++)
 {
   cout << "Enter title: ";
   getline (cin,films[n].title);
   cout << "Enter year: ";
   getline (cin,mystr);
   stringstream(mystr) >> films[n].year;
 }
 cout << "\nYou have entered these movies:\n";
 for (n=0; n<N_MOVIES; n++)
   printmovie (films[n]);
 return 0;

} void printmovie (movies_t movie) {

 cout << movie.title;
 cout << " (" << movie.year << ")\n";

}


 </source>


Defines and uses a struct.

<source lang="cpp">

  1. include <iostream>
  2. include <iomanip>
  3. include <string>

using namespace std; struct Product {

 string name;        
 double sales;       

}; inline void print( const Product& v) {

  cout << fixed << setprecision(2)
       << left  << setw(20) << v.name
       << right << setw(10) << v.sales << endl;

} int main() {

  Product productObject, productObject2;
  productObject.name    = "one";
  productObject.sales   = 37.37;
  productObject2.name   = "two";
  productObject2.sales  = 231.23;
  productObject.sales   += 17.11;
  cout << "  Product            Sales\n"
       << endl;
  print( productObject);
  print( productObject2);
  cout << "\nTotal of sales: "
       << productObject.sales + productObject2.sales << endl;
  Product *ptr = &productObject2;         
  if( productObject2.sales < productObject.sales)         
    ptr = &productObject;
  cout << "\nSalesman of the month: " << ptr->name << endl;   
                               
  return 0;

}


 </source>


demonstrates nested structures

<source lang="cpp">

  1. include <iostream>
 using namespace std;   
 struct Distance{   
    int feet;   
    float inches;   
 };   
 struct Room{   
    Distance length;
    Distance width;
 };   
 int main()   
 {   
    Room dining;   
   
    dining.length.feet = 13;    
    dining.length.inches = 6.5;   
    dining.width.feet = 10;   
    dining.width.inches = 0.0;   
    float l = dining.length.feet + dining.length.inches/12;   
    float w = dining.width.feet  + dining.width.inches/12;   
    cout << l * w;   
    return 0;   
   }
 
   
   
 </source>


demonstrates passing structure as argument

<source lang="cpp">

  1. include <iostream>
 using namespace std;   
 
 struct Distance{   
    int feet;   
    float inches;   
 };   
 void engldisp( Distance );
   
 int main(){   
    Distance d1, d2; 
    cout << "Enter feet: ";  
    cin >> d1.feet;   
    cout << "Enter inches: ";  
    cin >> d1.inches;   
   
    cout << "\nEnter feet: ";  
    cin >> d2.feet;   
    cout << "Enter inches: ";  
    cin >> d2.inches;   
   
    cout << "\nd1 = ";   
    engldisp(d1); 
    cout << "\nd2 = ";   
    engldisp(d2); 
    cout << endl;   
    return 0;   
 }   
 void engldisp( Distance dd ){   
    cout << dd.feet << "\"-" << dd.inches << "\"";   
 }
 
   
   
 </source>


demonstrates passing structure by reference

<source lang="cpp">

  1. include <iostream>
 using namespace std;   
 
 struct Distance{   
    int feet;   
    float inches;   
   };   
 void scale( Distance&, float );
 void engldisp( Distance );     
   
 int main() {   
    Distance d1 = { 12, 6.5 };  
    Distance d2 = { 10, 5.5 };   
   
    cout << "d1 = "; 
    engldisp(d1);
    cout << "\nd2 = "; 
    engldisp(d2);   
   
    scale(d1, 0.5);    
    scale(d2, 0.25);   
   
    cout << "\nd1 = "; 
    engldisp(d1);   
    cout << "\nd2 = "; 
    engldisp(d2);   
    cout << endl;   
    return 0;   
 }   
 void scale( Distance& dd, float factor){   
    float inches = (dd.feet*12 + dd.inches) * factor;   
    dd.feet = static_cast<int>(inches / 12);   
    dd.inches = inches - dd.feet * 12;   
 }   
 void engldisp( Distance dd ){   
    cout << dd.feet << "\"-" << dd.inches << "\"";   
 }
 
   
   
 </source>


example about structures

<source lang="cpp">

  1. include <iostream>
  2. include <string>
  3. include <sstream>

using namespace std; struct movies_t {

 string title;
 int year;

} mine, yours; void printmovie (movies_t movie); int main () {

 string mystr;
 mine.title = "2001 This is a test";
 mine.year = 1968;
 cout << "Enter title: ";
 getline (cin,yours.title);
 cout << "Enter year: ";
 getline (cin,mystr);
 stringstream(mystr) >> yours.year;
 cout << "My favorite movie is:\n ";
 printmovie (mine);
 cout << "And yours is:\n ";
 printmovie (yours);
 return 0;

} void printmovie (movies_t movie) {

 cout << movie.title;
 cout << " (" << movie.year << ")\n";

}


 </source>


pointers to structures

<source lang="cpp">

  1. include <iostream>
  2. include <string>
  3. include <sstream>

using namespace std; struct movies_t {

 string title;
 int year;

}; int main () {

 string mystr;
 movies_t amovie;
 movies_t * pmovie;
 pmovie = &amovie;
 cout << "Enter title: ";
 getline (cin, pmovie->title);
 cout << "Enter year: ";
 getline (cin, mystr);
 (stringstream) mystr >> pmovie->year;
 cout << "\nYou have entered:\n";
 cout << pmovie->title;
 cout << " (" << pmovie->year << ")\n";
 return 0;

}


 </source>


uses parts inventory to demonstrate structures

<source lang="cpp">

  1. include <iostream>
 using namespace std;   
 struct part{   
    int modelnumber; 
    int partnumber;  
    float cost;      
 };   
 int main(){   
    part part1;      
   
    part1.modelnumber = 6244;
    part1.partnumber = 373;   
    part1.cost = 217.55F;   
    cout << "Model "    << part1.modelnumber;   
    cout << ", part "   << part1.partnumber;   
    cout << ", costs $" << part1.cost << endl;   
    return 0;   
 }
 
   
   
 </source>