Структуры c++

Написать программу удаления книги из массива структур с введенным именем автора.(c++)
Почему не идентифицируются cout и cin в некоторых местах?(Visual studio 2019)

#include <string.h>
#include <iostream>
#include <conio.h>

int main()
{
    struct library
    {
        char author[30];
        char book[30];
    } p[5];

    int i, j;
    char author[30];
    int n = sizeof(p) / sizeof(library);

    for (i = 0; i < n; ++i)
    {
        cout << " Vvedi avtora ";
        cin >> p[i].author;
        cout << " Vvedi knigu ";
        cin >> p[i].book;
    }

    cout << " Vvedi imya avtora ";
    cin >> author;

    //.....................
    for (i = 0, j = 0; i < n; ++i)
    {
        if (strcmp(p[i].author, author) != 0)
        {
            p[j] = p[i];
            ++j;
        }
    }
    n = j;
    //.....................

    for (i = 0; i < n; ++i)
        cout << p[i].author << " \t" << p[i].book << "\n";
    getch();

    return 0;
}

std::cout или using namespace std; или using std::cout;.

1 лайк

Тоооочнооо, такая глупость)
А как вам сам код?

Если С++, а не С, то проще использовать std::string.
Тогда например сравнение через просто ==.

Обычно структуры/классы объявляют не внутри функции )
(но тут конечно не имеет значения потому что тут только одна функция, main)

Проще и понятнее просто сделать константу в самом начале.

const int n = 5;

Или в данном случае какой-нибудь MAX_SIZE, а для текущего размера массива завести другую переменную.

Лучше всегда ставить { } в циклах/if, даже если там одна инструкция внутри, а то вызывает дискомфорт, ну и ошибиться проще при дописывании кода.

Лучше в циклах их объявлять, чтобы уменьшить риск ошибок и путаницы. for (int i =
А в цикле с удалением например n-- когда удалили.

По-моему в VS 2019 нет смысла это делать, по умолчанию консоль и так не закрывается сразу.

Так название из двух слов не ввести.
Надо getline.

2 лайка

Можете ли помочь в решение следующих вопросов?)

  1. Структура должна содержать поля разного типа, поэтому либо добавляем еще поле другого типа в структуру, либо меняем одно из…
    struct library
    {
    char author[30];
    char book[30];
    } p[5];
  2. Что обозначает переменная?
    int n = sizeof ( p ) / sizeof(library);

И в чем вопрос?

Так прочитайте эту строку по-английски )

Вычисление количества элементов (5) с помощью всего размера массива в байтах и размера структуры (один элемент).

ну и

1 лайк

я просто не совсем понимаю, что сделать.Да, я туп, извините(

Так там ж написано

Например, если число, то год издания или количество страниц.

1 лайк

2 сообщения было перенесено в новую тему: Почему у меня не получается нормальный ввод, когда я добавил cin >> … (вместе с gets_s)