Сортировка массивов и на выходе получение дополнительной первой строки случайных символов - PullRequest
0 голосов
/ 17 июня 2019

Я написал программу, в которой программа сортирует людей по времени каждого человека, и если время совпадает, программа сортирует по названию в алфавитном порядке.Все работает отлично, просто я получаю дополнительную первую строку, полную случайных символов.Я, конечно, могу написать if function и сказать, чтобы не показывать эту первую строку, но разве это хорошо?

#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;
struct people {
  string full_name;
  int h;
  int min;
  int sec;
};
bool comp(const people &p1, const people &p2) {
  return (p1.min < p2.min || p1.min == p2.min && p1.sec < p2.sec ||
          p1.min == p2.min && p1.sec == p2.sec && p1.full_name < p2.full_name);
}

int main() {
  int time;
  string fullnamechange[30];
  people peo[30];

  cin >> time;
  for (int i = 0; i < time; i++) {
    getline(cin, peo[i].full_name); // taking everything into a string
    fullnamechange[i] = peo[i].full_name;
    fullnamechange[i].erase(fullnamechange[i].begin(),
                            fullnamechange[i].end() - 8);
    peo[i].h = atoi(fullnamechange[i].c_str());
    fullnamechange[i].erase(fullnamechange[i].begin(),
                            fullnamechange[i].end() -
                                5); // changing time in string to int
    peo[i].min = atoi(fullnamechange[i].c_str());
    fullnamechange[i].erase(fullnamechange[i].begin(),
                            fullnamechange[i].end() - 2);
    peo[i].sec = atoi(fullnamechange[i].c_str());
  }
  for (int i = 0; i < time; i++) { // erasing time from string
    peo[i].full_name.erase(peo[i].full_name.begin() + 20,
                           peo[i].full_name.end());
  }
  sort(peo, peo + time, comp);
  cout << endl;
  for (int i = 0; i < time; i++) {
    cout << peo[i].full_name << " " << peo[i].min << " " << peo[i].sec << endl;
  }
  return 0;
}

/*
input for example:
6
Petras A. Petraitis    0 20 00
Jurgis Jurgutis        0 12 59
Romas Jonas            0 15 12
Zigmas Nosis           0 23 9
Rimas Senasis          0 15 12

output I get:
 em3╣Mg n Ç         0 0      //random numbers I get
Jurgis Jurgutis      12 59
Rimas Senasis        15 12
Romas Jonas          15 12
Petras A. Petraitis  20 0
Zigmas Nosis         23 9 */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...