Как определить первый символ слова?

#include <string> 
#include <Windows.h> 
#include <iomanip> 
using namespace std;
struct Library
{
    string writer;
    string title;
    string publisher;
    int year;
    float cost;
};

void InputBooks(Library* Lib, int BookCount);
void PrintSortBooks(Library* Lib, int BookCount, const string message);
int GetBooksCount_O(Library* Lib, int BookCount);
Library* GetBooks_O(Library* Lib, int BookCount, int F_Count);
void Selection_sort(Library* Lib, int BookCount);

int main() {
    setlocale(LC_ALL, "Russian");
    int BookCount;
    cout << "Введите количество книг: "; cin >> BookCount;
    Library* Lib = new Library[BookCount];
    InputBooks(Lib, BookCount);
    int F_Count = GetBooksCount_O(Lib, BookCount);
    Library* F_Book = GetBooks_O(Lib, BookCount, F_Count);
    PrintSortBooks(Lib, BookCount, "Информация о книгах, названия которых начинаются на 'Ф'");
    Selection_sort(Lib, BookCount);

}

void InputBooks(Library* Lib, int BookCount) {
    cout << "Вам предстоит ввести информацию о " << BookCount << " книгах." << endl << endl << endl;
    for (int i = 0; i < BookCount; i++) {
        cout << "\t\t Ввод информации о книге N " << (i + 1) << endl;
        cout << "\t\t - введите автора: ";
        cin >> Lib[i].writer;
        cout << "\t\t - введите название: ";
        cin >> Lib[i].title;
        cout << "\t\t - введите издательство: ";
        cin >> Lib[i].publisher;
        cout << "\t\t - введите год написания: ";
        cin >> Lib[i].year;
        cout << "\t\t - введите стоимость: ";
        cin >> Lib[i].cost;
    }
}
void PrintSortBooks(Library* Lib, int BookCount, const string message) {
    cout << "----------------------------------------------------------------------------------------" << endl;
    cout << endl << message << BookCount << " шт.) имеет вид: " << endl;
    cout << " Название книг, начинающихся на Ф " << endl;
    for (int i = 0; i < BookCount; i++) {
        cout << "\t\t Вывод информации о книге N " << (i + 1) << endl;
        cout << "\t\t - вывод автора: " << Lib[i].writer << endl;
        cout << "\t\t - вывод названия: " << Lib[i].title << endl;
        cout << "\t\t - вывод издательства: " << Lib[i].publisher << endl;
        cout << "\t\t - вывод года написания: " << Lib[i].year << endl;
        cout << "\t\t - вывод стоимости: " << Lib[i].cost << endl;
    }
    cout << "----------------------------------------------------------------------------------------" << endl;

}
int GetBooksCount_O(Library* Lib, int BookCount){
}

Library* GetBooks_O(Library* Lib, int BookCount, int F_Count) {
}
void Selection_sort(Library* Lib, int BookCount) {
}

Помогите написать функцию для того, чтобы переписать все названия книг, начинающиеся на "Ф", из первого массива в новый массив.


Ответы (1 шт):

Автор решения: AlexZel

Если правильно понял вопрос

int GetBooksCount_O(Library *Lib, int BookCount) {
  int count = 0;
  for (int i = 0; i < BookCount; i++) {
  // Проверяем поле название книги. Если пустое то переходим к следующей итерации.
    if (Lib[i].title.empty()) 
      continue;
  // Сравниваем первый символ если равен то увеличиваем на 1 значение `count`
    if (Lib[i].title.at(0) == 'Ф') {
      count++;
    }
  }

  return count;
}

Library *GetBooks_O(Library *Lib, int BookCount, int F_Count) {
  Library *LibNew = new Library[F_Count];

  // Почти по аналогии с предыдущей функцией.
  // Создаем дополнительный индекс iF для LibNew

  for (int i = 0, iF = 0; i < BookCount; i++) {
    if (Lib[i].title.empty())
      continue;
    if (Lib[i].title.at(0) == 'Ф') {
      LibNew[iF++] = Lib[i];
    }
  }

  return LibNew;
}

void Selection_sort(Library *Lib, int BookCount) {
  for (int i = 0; i < BookCount; ++i) {
    for (int j = 0; j < BookCount - 1; j++) {
      if (Lib[j].title > Lib[j + 1].title) {
        const auto tmp = Lib[j].title;
        Lib[j].title = Lib[j + 1].title;
        Lib[j + 1].title = tmp;
      }
    }
  }
}
→ Ссылка