enkov

Задача със структура и проверка на входа

Dec 4th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.91 KB | None | 0 0
  1. #include "stdafx.h"
  2.  
  3. /*
  4. Да се напише програма, която прави следните обработки:
  5. а) Въвежда данните за няколко вида риби. Броят на видовете да се фиксира с константа
  6. в програмата. За всеки вид риби трябва да се прочетат названието на вида,
  7. като то може да съдържа интервали, максималната дълбочина, до която плуват рибите
  8. от такъв вид, и най-голямата дължина, до която израстват.
  9. При въвеждането да се контролира, че дълбочината и дължината са строго положителни,
  10. а названието започва с голяма латинска буква.
  11. б) Извежда названията на всички видове риби, които плуват до половината от най-голямата
  12. въведена дълбочина.
  13. в) Извежда пълните данни за всички видове риби, чието название не съдържа интервал.
  14. */
  15.  
  16. #include <iostream>
  17. #include <string>
  18. using namespace std;
  19.  
  20. int main()
  21. {
  22.     const int MAX_FISH = 50;
  23.     struct Fish {
  24.         string Species;
  25.         int Depth;
  26.         int Length;
  27.     };
  28.     Fish Fishes[MAX_FISH]; // не е правилно Fishes според английския език, но така решаваме да е
  29.  
  30.     int num;
  31.     cout << "Enter number of fish: ";
  32.     do
  33.     {
  34.         cin >> num;
  35.     } while (!(num >= 2 && num <= MAX_FISH));
  36.  
  37.     for (int i = 0; i < num; i++)
  38.     {
  39.         cout << "Enter data for fish " << i + 1 << ": ";
  40.         do
  41.         {
  42.             cout << "  Enter species name: ";
  43.             cin.ignore();
  44.             getline(cin, Fishes[i].Species);
  45.         } while (!(Fishes[i].Species.at(0) <= 'Z' && Fishes[i].Species.at(0) >= 'A'));
  46.         do
  47.         {
  48.             cout << "  Enter species max depth: ";
  49.             cin >> Fishes[i].Depth;
  50.         } while (Fishes[i].Depth <= 0);
  51.         do
  52.         {
  53.             cout << "  Enter species max length: ";
  54.             cin >> Fishes[i].Length;
  55.         } while (Fishes[i].Length <= 0);
  56.     }
  57.  
  58.     int max_depth = Fishes[0].Depth;
  59.     for (int i = 1; i < num; i++)
  60.         if (Fishes[i].Depth > max_depth)
  61.         max_depth = Fishes[i].Depth;
  62.     cout << "Max depth is " << max_depth << " and these species flow tiil half ot it: ";
  63.  
  64.     for (int i = 0; i < num; i++)
  65.         if (Fishes[i].Depth <= max_depth / 2)
  66.             cout << Fishes[i].Species << " ";
  67.     cout << endl;
  68.  
  69.     cout << "Species without a space in the name: ";
  70.     for (int i = 0; i < num; i++)
  71.     {
  72.         size_t n = Fishes[i].Species.find(' '); // търси подниза ' ' (интервал)
  73.         if (n == string::npos) // не е намерен интервал
  74.         {
  75.             cout << Fishes[i].Species << " " <<
  76.                 Fishes[i].Length << " " <<
  77.                 Fishes[i].Depth << " " << endl;
  78.         }
  79.     }
  80.  
  81.     return 0;
  82. }
Add Comment
Please, Sign In to add comment