Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
e_kate_rina7
0 / 0 / 1
Регистрация: 05.04.2015
Сообщений: 66
1

Не заполняется название книги

09.05.2015, 20:02. Просмотров 215. Ответов 1
Метки нет (Все метки)

Создала список. Заполняю элементы. Первый полностью заполняется, все хорошо. А вот дальше. Идет какой-то сбой. Не заполняется название книги. Сразу выдается заполнять автора. И так в каждом элементе после первого. Помогите.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
struct Book
{
    char* name = new char[50];
    char* athor = new char[50];
    char* country= new char[50];
    int price;
    int year;
    Book *next; //указатель на следующий элемент списка 
};
 
void main()
{
    setlocale(LC_ALL, "Russian");
    Book *ukazatel_na_tek, *first; //указатель на текущий элемент и указатель на 1й элемент списка 
    int i, n = 5;
 
    ukazatel_na_tek = new Book; //выделили память под 1й элемент типа Book
    first = ukazatel_na_tek; //отдельно сохранили адрес первого элемента, чтобы иметь возможность к нему обращаться 
 
    //--Заполняем 1й элемент--// 
    cout << "Название книги: "; cin.getline((*ukazatel_na_tek).name, 50);
    cout << "Автор: "; cin.getline(ukazatel_na_tek->athor, 50);
    cout << "Страна издания: "; cin.getline(ukazatel_na_tek->country, 50);
    cout << "Цена: "; cin >> ukazatel_na_tek->price;
    cout << "Год: "; cin >> ukazatel_na_tek->year;
    //--Конец заполнения 1го элемента--// 
 
    for (i = 1; i<n; i++)
    {
        ukazatel_na_tek->next=new Book; //выделили память под i-й элемент типа monitor и сохранили его адрес в i-1 элементе 
        ukazatel_na_tek=ukazatel_na_tek->next; //перешли от i-1 элемента к i-му 
 
        //--Заполняем i-й элемент--// 
        cout << "Название книги: "; cin.getline((*ukazatel_na_tek).name, 60);
        cout << "Автор: "; cin.getline(ukazatel_na_tek->athor, 50);
        cout << "Страна издания: "; cin.getline(ukazatel_na_tek->country, 50);
        cout << "Цена: "; cin >> ukazatel_na_tek->price;
        cout << "Год: "; cin >> ukazatel_na_tek->year;
        //--Конец заполнения i-го элемента--// 
    }
    ukazatel_na_tek->next = 0; //у последнего элемента сделали указатель на следующий - 0, чтобы было понятно, что это конец списка 
 
    //--Вывод списка--// 
    ukazatel_na_tek = first; //перешли к 1му элементу 
    i = 0;
    while (ukazatel_na_tek) //пока указатель на текущий элемент не станет равным 0, будет работать цикл (т.е. пока не дойдем до последнего элемента) 
    {
        i++;
        cout << "Книга №" << i << "\t" << ukazatel_na_tek->name << '\t' << ukazatel_na_tek->athor << '\t' << ukazatel_na_tek->country << '\t' << ukazatel_na_tek->price << '\t' << ukazatel_na_tek-> year;
        ukazatel_na_tek = ukazatel_na_tek->next; //переходим к следующему элементу 
    }
    //--Конец вывода списка--// 
}
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2015, 20:02
Ответы с готовыми решениями:

Описать структуру Bibliotec, содержащую следующие поля: автор книги, инвентарный номер книги, название книги
Описать структуру BIBLIOTEC содержащий следующие поля: автор книги , инвентарный номер книги ,...

Подскажите название книги
Не подскажите название книги по c++: у нёё было два автора, к ней прилагался cd, в начале не...

Забыл название одной очень хорошей книги
Книга была не про C++, а про компьютеры, как они работают и т.п. В самом начале говорилось о двух...

Структура содержит название книги, автора, год издания. Удалить издания с годом меньше заданного
Структура содержит название книги, автора, год издания. Удалить издания с годом меньше заданного.

Из структуры, содержащей название книги, автора, год издания, удалить издания с годом меньше заданного.
Задание: Структура содержит название книги, автора, год издания. Удалить издания с годом меньше...

1
zss
Модератор
Эксперт С++
8496 / 7494 / 4638
Регистрация: 18.12.2011
Сообщений: 19,824
Завершенные тесты: 1
09.05.2015, 20:40 2
1. Настоятельно не советую в таких случаях использовать new
C++
1
2
3
4
5
6
7
8
9
struct Book
{
    char name[50];
    char athor[50];
    char country[50];
    int price;
    int year;
    Book *next; //указатель на следующий элемент списка 
};
Цитата Сообщение от e_kate_rina7 Посмотреть сообщение
cout << "Год: "; cin >> ukazatel_na_tek->year;
см распространенную ошибку
Распространенные ошибки
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.05.2015, 20:40

Построить запрос, выводящий для каждой книги название первого по алфавиту автора и общее количество авторов книги
Товарищи, хэлп. Есть одно задание составить запрос, но что-то не клеится. Формулировка задания:...

Разработать базу данных «Научно-техническая библиотека» (фамилия, имя, отечество, автор книги, название книги, город и издательство, год выпуска, тема
что то никак понять не могу(( Разработать базу данных «Научно-техническая библиотека» (фамилия,...

В библиотеке для каждого заказывающего книгу читателя заполняется карточка:фамилия, дата заказа, дата выдачи книги.
В библиотеке для каждого заказывающего книгу читателя заполняется карточка:фамилия, дата заказа,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru