packnames.cpp
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // packnames.cpp
  2. //
  3. // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #include <iostream>
  10. #include <string>
  11. #include "constellation.h"
  12. #include "starname.h"
  13. static char *greekAlphabet[] =
  14. {
  15.     "Alpha",
  16.     "Beta",
  17.     "Gamma",
  18.     "Delta",
  19.     "Epsilon",
  20.     "Zeta",
  21.     "Eta",
  22.     "Theta",
  23.     "Iota",
  24.     "Kappa",
  25.     "Lambda",
  26.     "Mu",
  27.     "Nu",
  28.     "Xi",
  29.     "Omicron",
  30.     "Pi",
  31.     "Rho",
  32.     "Sigma",
  33.     "Tau",
  34.     "Upsilon",
  35.     "Phi",
  36.     "Chi",
  37.     "Psi",
  38.     "Omega"
  39. };
  40. int main(int argc, char *argv[])
  41. {
  42.     string s;
  43.     for (;;)
  44.     {
  45. unsigned int catalogNumber;
  46. char sep;
  47. cin >> catalogNumber;
  48. if (cin.eof())
  49.         {
  50.     break;
  51. }
  52. else if (cin.bad())
  53. {
  54.     cerr << "Error reading names file.n";
  55.     break;
  56. }
  57. cin >> sep;
  58. if (sep != ':')
  59.         {
  60.     cerr < "Missing ':' in names file.n";
  61.     break;
  62. }
  63. // Get the rest of the line
  64. getline(cin, s);
  65. int nextSep = s.find_first_of(':');
  66. if (nextSep == string::npos)
  67.         {
  68.     cerr << "Missing ':' in names file.n";
  69.     break;
  70. }
  71. string common, designation;
  72. string conAbbr;
  73. string conName;
  74. string bayerLetter;
  75. if (nextSep != 0)
  76.     common = s.substr(0, nextSep);
  77. designation = s.substr(nextSep + 1, string::npos);
  78. if (designation != "")
  79.         {
  80.     nextSep = designation.find_last_of(' ');
  81.     if (nextSep != string::npos)
  82.     {
  83. bayerLetter = designation.substr(0, nextSep);
  84. conAbbr = designation.substr(nextSep + 1, string::npos);
  85.     }
  86. }
  87. Constellation *constel;
  88. for (int i = 0; i < 88; i++)
  89.         {
  90.     constel = Constellation::getConstellation(i);
  91.     if (constel == NULL)
  92.         {
  93. cerr << "Error getting constellation " << i << 'n';
  94. break;
  95.        }
  96.     if (constel->getAbbreviation() == conAbbr)
  97.       {
  98. conName = constel->getName();
  99. break;
  100.     }
  101. }
  102. if (constel != NULL && bayerLetter != "")
  103.         {
  104.     StarName sn(common, bayerLetter, constel);
  105.     cout << sn.getDesignation() << ' ' << constel->getAbbreviation() << 'n';
  106. }
  107.     }
  108. }