Advertisement
gasaichan

BDZ_16

Dec 10th, 2017
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.24 KB | None | 0 0
  1. // Dynamic.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <clocale>
  6. #include <conio.h>
  7.  
  8. using namespace std;
  9.  
  10. typedef struct Passport {
  11.     char * Surname;
  12.     char * Name;
  13.     char * Address;
  14. };
  15.  
  16. bool CharCompare( char * A, char * B );
  17. Passport StructInit( Passport p );
  18. char * StructOut( Passport p );
  19. void CheckNames( Passport * p, int n );
  20.  
  21.  
  22. int main( )
  23. {
  24.     setlocale( LC_ALL, "Russian" );
  25.  
  26.     int n, MenuChoice;
  27.     char * C = new char[16];
  28.  
  29.     cout << "Введите количество паспортов: ";
  30.     cin >> n;
  31.  
  32.     Passport *p = new Passport[n];
  33.  
  34.     char * Choice = new char[2];
  35.     strcpy_s( Choice, strlen( Choice ), "Y" );
  36.  
  37.     while ( Choice[0] == 'Y' )
  38.     {
  39.         cout << endl << "1. Ввести паспорта. " << endl;
  40.         cout << "2. Вывести паспорта на экран. " << endl;
  41.         cout << "3. Проверить, есть ли паспорта с одинаковыми именами. " << endl;
  42.         cout << "4. Очистить экран. " << endl;
  43.         cout << "5. Выход. " << endl;
  44.  
  45.  
  46.         cout << endl << "Ваш выбор: ";
  47.         for ( ;;)
  48.         {
  49.             cin >> MenuChoice;
  50.             if ( MenuChoice >= 1 && MenuChoice <= 5 ) { break; }
  51.             else { cout << endl << "Повторите ввод: "; continue; }
  52.         }
  53.  
  54.         switch ( MenuChoice )
  55.         {
  56.         case 1:
  57.             for ( int i = 0; i < n; i++ )
  58.             {
  59.                 getchar( );
  60.                 p[i] = StructInit( p[i] );
  61.             }
  62.             break;
  63.         case 2:
  64.             for ( int i = 0; i < n; i++ )
  65.             {
  66.                 cout << StructOut( p[i] ) << endl;
  67.             }
  68.             break;
  69.         case 3:
  70.             CheckNames( p, n );
  71.             break;
  72.         case 4:
  73.             system( "CLS" );
  74.             break;
  75.         case 5:
  76.             system( "EXIT" );
  77.             return 0;
  78.             break;
  79.         }
  80.     }
  81.  
  82.  
  83.  
  84.     _getch( );
  85.     return 0;
  86. }
  87.  
  88. bool CharCompare( char * A, char * B )
  89. {
  90.     if ( strlen( A ) == strlen( B ) )
  91.     {
  92.         for ( int i = 0; i < strlen( A ); i++ )
  93.         {
  94.             if ( A[i] == B[i] ) { continue; }
  95.             else { return false; }
  96.         }
  97.     }
  98.     else
  99.     {
  100.         return false;
  101.     }
  102.     return true;
  103. }
  104.  
  105. Passport StructInit( Passport p )
  106. {
  107.     char * buff = new char[128];
  108.     cout << "Введите фамилию: ";
  109.     gets_s( buff, 127 );
  110.  
  111.     p.Surname = new char[strlen( buff ) + 1];
  112.     strcpy_s( p.Surname, strlen( p.Surname ), buff );
  113.  
  114.     delete [] buff;
  115.  
  116.     buff = new char[128];
  117.     cout << "Введите имя: ";
  118.     gets_s( buff, 127 );
  119.  
  120.     p.Name = new char[strlen( buff ) + 1];
  121.     strcpy_s( p.Name, strlen( p.Name ), buff );
  122.  
  123.     delete [] buff;
  124.  
  125.     buff = new char[128];
  126.  
  127.     cout << "Введите адрес: ";
  128.     gets_s( buff, 127 );
  129.  
  130.     p.Address = new char[strlen( buff ) + 1];
  131.     strcpy_s( p.Address, strlen( p.Address ), buff );
  132.  
  133.     delete [] buff;
  134.     return p;
  135. }
  136.  
  137. char * StructOut( Passport p )
  138. {
  139.     char * Result = new char[512];
  140.     strcpy_s( Result, 511, "" );
  141.     strcat_s( Result, 511, "Фамилия: " );
  142.     strcat_s( Result, 511, p.Surname );
  143.     strcat_s( Result, 511, "; Имя: " );
  144.     strcat_s( Result, 51, p.Name );
  145.     strcat_s( Result, 511, "; Адрес: " );
  146.     strcat_s( Result, 511, p.Address );
  147.     return Result;
  148. }
  149.  
  150. void CheckNames( Passport * p, int n )
  151. {
  152.     for ( int i = 0; i < n; i++ )
  153.     {
  154.         for ( int j = 0; j < n; j++ )
  155.         {
  156.             if ( i == j ) { continue; }
  157.             if ( CharCompare( p[i].Name, p[j].Name ) )
  158.             {
  159.                 cout << StructOut( p[i] ) << endl;
  160.             }
  161.         }
  162.     }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement