Как определить первый символ слова?
#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;
}
}
}
}