Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50

Курсовая: Домашняя библиотека

09.05.2013, 11:51. Показов 7122. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день участники форума! На этом форуме видел программу к этому задание, но оно не удовлетворяет требованию курсовой, и хочу сам разобраться и написать) Напомню задание:

Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным количеством книг, поиска книги по какой-либо признаки (например, по автору или по году издания), добавления книг библиотеку, удаления книг из нее, сортировки книг по различным полей. Написать программу, демонстрирующую работу с этим классом. Программа должна содержать меню, позволяющее осуществить проверку всех методов класса.
ТРЕБОВАНИЯ К ПРОГРАММЕ
Программа должна отвечать следующим требованиям:
1. Количество классов не менее 6.
2. Наличие связей между классами, в том числе отношений наследования глубиной не менее 3.
3. Для инициализации объектов должны использоваться конструкторы разных видов.
4. В программе должны использоваться виртуальные функции.
5. Должен использоваться механизм перегрузки функций и операторов.
6. Используйте абстрактные классы.
7. В классах должны использоваться различные виды доступа к полям и методам (public, private, protected).

У меня вопрос : Наличие связей между классами, в том числе отношений наследования глубиной не менее 3 - это приблизительно так

C++
1
2
3
4
5
Class A {
};
class B{
};
Class C : public A, public B {};
то есть есть ли здесь наследование ни меньше 3?? Заранее спасибо, за ответы!!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.05.2013, 11:51
Ответы с готовыми решениями:

Описать класс «домашняя библиотека»
Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку...

Описать класс «домашняя библиотека»
вот задание Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по...

Описать класс «домашняя библиотека»
Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги по какому-либо признаку...

21
503 / 352 / 94
Регистрация: 22.03.2011
Сообщений: 1,112
09.05.2013, 14:20
C++
1
2
3
class A {};
class B : public A{};
class C : public B {};
1
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
10.05.2013, 22:37  [ТС]
Начал писать программу,и в самом начале пошли ошибки. Подскажите пожалуйста что не правильно и как можно лучше сделать?
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
 
class Book {
private:
    Book* Obj_Book;
    char *name;
    char *auzer;
    char *tupe;
    int god_v;
    int col_str;
public:
 
    Book ( char* , char* , char* , int& , int& ); // конструктор инициализации
    Book ();
    char *fname () { return name ; }
    char *fauzer () { return auzer ; }
    char *ftupe () { return tupe ; }
    int & fgod_v () { return god_v ; }
    int & fcol_str () { return col_str ; }
};
 
Book::Book (char* na, char* au, char* ty, int& god , int& col) {  // описания конструктора инициализации
    name = na;
    auzer = au;
    tupe = ty;
    god_v = god;
    col_str = col;
}
 
 
class Zapolnenie_Dan : public Book {
private:
 char *name, *auzer, *tupe, *fantastich, *naychnioe, *psihologicheskie, *dif_tupe, *prom ;
 int god_v , col_str, w;
public:
    
    void manu (){
    cout << "\nВведите название книги: " ;
    cin >> name;
    cout << "\nВведите автора: " ;
    cin >> auzer;
    cout << "\nБыберите тип книги: " ;
    cout << "\n 1 Фантастика \n 2 Научные \n 3 Психологические \n 4 Другой тип" ;
    cin >> w;
    switch (w) {
    case 1 : { fantastich = "Фантастика";
             prom = fantastich; }
    case 2 : { naychnioe = "Научные" ; 
             prom = naychnioe;
             }
    case 3 : { psihologicheskie = "Психологические";
             prom = psihologicheskie;
             }
    case 4 : { cin >> dif_tupe;  
             prom = dif_tupe;
             }
    default: { cout << "Введите правельный знак операции!!";  exit(0);  }
    }
    cout << "\nВведите год издания книги: ";
    cin >> god_v;
    cout << "\nВведите колличество страниц книги: ";
    cin >> col_str;
    Book::Book ( name, auzer, prom, god_v, col_str );
 
    }
};
 
 
 
int _tmain(int argc, _TCHAR* argv[])
{ setlocale (LC_ALL, "rus");
     Zapolnenie_Dan Ob_Zap;
      cout << "   Меню" << endl;
      cout << "1 Добавления" << endl;
      cout << "2 Просмотр библиотеки" << endl;
      cout << "3 Удаление книг" << endl;
      cout << "4 Сортировка книг" << endl;
      cout << "5 Выход" << endl;
     int t;
     cin >> t;
      switch (t){
      case 1: {
              Ob_Zap.manu();
              }
      }
    system ("pause");
    return 0;
}
Добавлено через 1 час 17 минут
Очень нужна помощь!
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
11.05.2013, 01:09
Цитата Сообщение от Sniti01 Посмотреть сообщение
отношений наследования глубиной не менее 3
Аж три уровнял глубины... Это, на минуточку, очень дофига. Будет чертовски сложно придумать, куда-б прикрутить такое.

STL использовать можно? Не хотелось бы велосипедить -- в разы увеличится сложность и без того непростого задания.
Хотя бы std::string, что-ли.
2
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
11.05.2013, 02:38
Цитата Сообщение от Sniti01 Посмотреть сообщение
Описать класс «домашняя библиотека».
Цитата Сообщение от Sniti01 Посмотреть сообщение
1. Количество классов не менее 6.
Для класса "домашняя библиотека" достаточно одного дополнительного класса (или структуры): "книга".
Ещё "книжный шкаф", что-ли, придумать?

Добавлено через 5 минут
Класс Zapolnenie_Dan тут не к месту. Достаточно метода добавления книги в классе "домашняя библиотека".
1
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
11.05.2013, 09:31  [ТС]
STL использовать можно? Не хотелось бы велосипедить -- в разы увеличится сложность и без того непростого задания.
Хотя бы std::string, что-ли.
STL использовать можно, главно что бы требования к программе выполнить.

Цитата Сообщение от alsav22 Посмотреть сообщение
Для класса "домашняя библиотека" достаточно одного дополнительного класса (или структуры): "книга".
Ещё "книжный шкаф", что-ли, придумать?
буду рад любой помощи! Даже просто на словах, как создать три наследования в моём случае.
0
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
13.05.2013, 22:59  [ТС]
немного изменил, но не пойму что не так ,при провке компилятор пишет что ошибки нет . Когда я откомрилирую программу появляеся консоль ,после я выбираю скалько книг добавить в библиотеку., а после у меня на экране появляется crtexe.c ? это ведать какоето исключение если программа не правильно работает?? И Что не так с программой :
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "stdafx.h"
#include <iostream>
#include <string.h>
using namespace std;
 
class Book {
private:
 
    char *name;
    char *auzer;
    char *tupe;
    int god_v;
    int col_str;
public:
    // ***** действия над книгами
void menu (int); //перегруженая функция добавления 
void menu (int , int); //перегруженая функция  сортировки
void menu (); //перегруженая функция  удаления 
Book (){};
    Book ( char* , char* , char* , int& , int& );// конструктор инициализации
    
    char *fname () { return name ; }
    char *fauzer () { return auzer ; }
    char *ftupe () { return tupe ; }
    int & fgod_v () { return god_v ; }
    int & fcol_str () { return col_str ; }
};
 
Book::Book (char* na, char* au, char* ty, int& god , int& col) {  // описания конструктора инициализации
    name = na;
    auzer = au;
    tupe = ty;
    god_v = god;
    col_str = col;
}
 
void Book::menu(int kolich_knig ){
    char *f, *st2, *st3;
    int ch = 0, ch1 = 0;
    for (int i = 0; i < kolich_knig; i++ ){
 cout << "\nВведите название книги: ";
 cin >> f;
 cout << "\nВведите автора книги: ";
 cin >> st2 ;
 cout << "\nВведите тип книги";
 cin >> st3;
 cout << "\nВведите год издания";
 cin >> ch;
 cout << "\nВведите количество страниц";
 cin >> ch1;
 cout << endl;
}
    Book(f, st2, st3, ch, ch1);
}
 
 
 
int main()
{ setlocale (LC_ALL, "rus");
      
      Book Objec;
      cout << "   Меню" << endl;
      cout << "1 Добавления" << endl;
      cout << "2 Просмотр библиотеки" << endl;
      cout << "3 Удаление книг" << endl;
      cout << "4 Сортировка книг" << endl;
      cout << "5 Выход" << endl;
      cout << "   Ваш выбор: ";
     int t;
     cin >> t;
      switch (t){
      case 1: {
          cout << " Введите сколько книг будет добавлно:";
          int k;
          cin >> k;
          Objec.menu(k);
              }
      }
    system ("pause");
    return 0;
}
Добавлено через 4 минуты
Подскажите пожалуйста, если не трудно!
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
13.05.2013, 23:25
Тут всё неправильно. Используйте не указатели на char, а объекты класса string. Создайте класс Book, с данными о книге, и с методами получения и установки этих данных. Создайте класс Библиотека, который будет представлять из себя массив объектов класса Book. В качестве такого массива используйте vector <Book>. В нём реализуйте методы добавления книг, сортировки, поиска и пр.
1
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
27.05.2013, 09:50  [ТС]
Подскажите пожалуйста почему я не могу создать объект на класс Bibl, ведь я переопределил чистую виртуальную функцию в абстрактном кдассе Abstr
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
 
class Abstr {
public:
    virtual void print (int) = 0;
  void input () ;
};
 
class Book {
public:
 string name;
 string auzer;
 string tupe;
 string god_v;
string col_str;
public:
Book (){}; // конструктор по умочанию  
};
 
class Bibl: public Book, public Abstr {  
public:
vector <string> bibl_book;
void input (int);
void print ();
void menu (int); //перегруженая функция добавления добавление
void menu (int , int); //перегруженая функция  сортировка
void menu (); //перегруженая функция  удаление 
 
};
 
void Bibl::input(int knig){
    string nol = " ";
    for (int i = 0; i < knig; i++){
    cout << "Введите название книги: ";
    cin >> name;
    cout << "Введите автора книги: ";
    cin >> auzer;
    cout << "Введите тип книги: ";
    cin >> tupe;
    cout << "Введите год издания: ";
    cin >> god_v;
    cout << "Введите количество страниц: ";
    cin >> col_str;
    cout << endl;
    
    // dobavlenie v vector
 
    bibl_book.push_back(name);
    bibl_book.push_back(auzer);
    bibl_book.push_back(tupe);
    bibl_book.push_back(god_v);
    bibl_book.push_back(col_str);
    }
}
 
 void Bibl::print () {
    
}
 
int main()
{ setlocale (LC_ALL, "rus");
     Bibl Objec;
    cout << "   Выберрите действие!"<< endl;
    cout << "   Меню" << endl;
    cout << "1 Добавления" << endl;
    cout << "2 Просмотр библиотеки" << endl;
    cout << "3 Удаление книг" << endl;
    cout << "4 Сортировка книг" << endl;
    cout << "5 Выход" << endl;
    cout << "   Ваш выбор: ";
     int t;
     cin >> t;
      switch (t){
      case 1: {
          cout << " Введите сколько книг будет добавлно:";
          int k;
          cin >> k;
          Objec.menu(k);
              }
      }
    system ("pause");
    return 0;
}
l

Добавлено через 10 минут
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
27.05.2013, 10:26
А зачем вы наследуете класс библиотеки от класса книги?
Библиотека не является и не ведет себя как книга. Наследование неуместно.

У вас разное объявление функции print в классе abstr и в классе bibl. Это значит, что для компилятора это две абсолютно разные функции.
2
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
27.05.2013, 11:13
Цитата Сообщение от Sniti01 Посмотреть сообщение
Подскажите пожалуйста почему я не могу создать объект на класс Bib
В Bibl нужно перегрузить чисто виртуальную функцию.
0
 Аватар для pizurok
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810
27.05.2013, 11:31
Цитата Сообщение от alsav22 Посмотреть сообщение
В Bibl нужно перегрузить чисто виртуальную функцию.
Предлагаю сделать так.
1. Создаём класс Library, который моделирует библиотеку, хранит список объектов книг-журналов, вообще говоря предметов библиотеки и реализует операции добавления, удаления, поиска и т.д.
2. Создаём абстрактный класс Item, моделирующий предмет библиотеки. Вот тут то и будут виртуальные методы.
3. Создаём класс Book, наследник Item, который моделирует книгу и переопределяет виртуальные методы Item
4. Создаём класс Magazine, наследник Item, который моделирует журнал и тоже переопределяет.

Тут мы получим и инкапсуляцию, и наследование, и полиморфизм.

Откуда взять ещё два класса, ума не приложу. Придумать ещё одну сущность-наследник Item только если. Например газету, но газета суть тот же журнал
2
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
27.05.2013, 11:39
Может как-нибудь так.
У книги может быть несколько жанров и несколько авторов...
Пять классов достаточно. Наследование запихать вообще некуда.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <iostream>
#include <string>
#include <vector>
 
class Author {
 public:
  Author() {}
  Author(const std::string &name) : name(name) {}
  const std::string &getName() const { return name; }
 private:
  std::string name;
};
 
class Genre {
 public:
  Genre() {}
  Genre(const std::string &name) : name(name) {}
  const std::string &getName() const { return name; }
 private:
  std::string name;
};
 
class Book {
 public:
  Book() {}
  Book(const std::string &name, std::vector<Author> &authors,
    std::vector<Genre> &genres) : name(name), authors(authors),
    genres(genres) {}
  const std::string &getName() const { return name; }
  const std::vector<Author> &getAuthors() const { return authors; }
  const std::vector<Genre> &getGenres() const { return genres; }
 private:
  std::string name;
  std::vector<Author> authors;
  std::vector<Genre> genres;
};
 
class BookBuilder {
 public:
  BookBuilder() {}
  BookBuilder(const std::string &name) : name(name) {}
  BookBuilder &setName(const std::string &name) {
    this->name = name;
    return *this;
  }
  BookBuilder &addAuthor(const Author &author) {
    authors.push_back(author);
    return *this;
  }
  BookBuilder &addGenre(const Genre &genre) {
    genres.push_back(genre);
    return *this;
  }
  Book getBook() {
    return Book(name, authors, genres);
  }
 private:
  std::string name;
  std::vector<Author> authors;
  std::vector<Genre> genres;
};
 
class Library {
 public:
  typedef std::vector<Book>::iterator Iterator;
  typedef std::vector<Book>::const_iterator ConstIterator;  
  void addBook(const Book &book) {
    books.push_back(book);
  }
  void removeBook(Iterator position) {
    books.erase(position);
  }
  size_t getSize() const { return books.size(); }
  Iterator firstBook() { return books.begin(); }
  Iterator lastBook() { return books.end(); }
  ConstIterator firstBook() const { return books.begin(); }
  ConstIterator lastBook() const { return books.end(); }
 private:
  std::vector<Book> books;
};
 
 
// операторы вывода на экран вместо методов,
// потому что это не то, что делает объект, а то, что делают
// с объектом
std::ostream &operator<<(std::ostream &stream, const Book &book) {
  stream << "Book{" <<
    "name='" << book.getName() << "', " <<
    "authors=[";
  for (size_t i = 0; i < book.getAuthors().size(); ++i) {
    stream << "'" << book.getAuthors()[i].getName() << "'";
    if (i != book.getAuthors().size() - 1) {
      stream << ", ";
    }
  }
  stream << "], genres=[";
  for (size_t i = 0; i < book.getGenres().size(); ++i) {
    stream << "'" << book.getGenres()[i].getName() << "'";
    if (i != book.getGenres().size() - 1) {
      stream << ", ";
    }
  }
  stream << "]}";  
  return stream;
}
 
std::ostream &operator<<(std::ostream &stream, const Library &l) {
  stream << "Library{[";
  for (Library::ConstIterator i = l.firstBook(); i != l.lastBook(); ++i) {
    stream << *i;
    if (i + 1 != l.lastBook()) {
      stream << ", ";
    }
  }
  return stream << "]}";
}
 
int main(int, char**) {
  
  
  Library library;
  library.addBook(BookBuilder()
    .setName("Physics, 9 grade")
    .addAuthor(Author("A.Ya.Kleshnya"))
    .addAuthor(Author("I.Ya.Kleshnya"))
    .addGenre(Genre("Education"))
    .addGenre(Genre("Physics"))
    .getBook());
  library.addBook(BookBuilder()
    .setName("Bible")
    .addAuthor(Author("Nevi'im Rishonim"))
    .addAuthor(Author("Joshua"))
    .addAuthor(Author("Samuel"))
    .addAuthor(Author("Jeremiah"))
    .addAuthor(Author("Isaiah"))
    .addAuthor(Author("Ezekiel"))
    .addAuthor(Author("others"))
    .addGenre(Genre("Pentateuch"))
    .addGenre(Genre("Historical narrative/epic"))
    .addGenre(Genre("The Law"))
    .addGenre(Genre("Wisdom"))
    .addGenre(Genre("Psalms"))
    .addGenre(Genre("Prophecy"))
    .addGenre(Genre("Apocalyptic"))
    .addGenre(Genre("Gospel"))
    .addGenre(Genre("Epistle (letter)"))
    .getBook());
 
  std::cout << library << std::endl;
  
  return 0;
}
1
 Аватар для pizurok
77 / 69 / 20
Регистрация: 05.05.2013
Сообщений: 3,810
27.05.2013, 12:17
Цитата Сообщение от lemegeton Посмотреть сообщение
Может как-нибудь так.
У книги может быть несколько жанров и несколько авторов...
Пять классов достаточно. Наследование запихать вообще некуда.
Мне кажется этот подход не пойдет. Фактически классы жанров и авторов это обертки стринг-ов. Да и наследования нет
1
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
27.05.2013, 12:56  [ТС]
Спасибо всем за помощь и за идеи!! Буду пытаться сейчас реализовать

Добавлено через 6 минут
Только мне обязательно необходимо наследование!
0
 Аватар для lemegeton
4903 / 2696 / 921
Регистрация: 29.11.2010
Сообщений: 5,783
27.05.2013, 13:17
Цитата Сообщение от pizurok Посмотреть сообщение
Фактически классы жанров и авторов это обертки стринг-ов.
Это же пример. У автора, например, может быть еще год рождения, год смерти, у жанра может быть еще что-нибудь, типа поджанра.

Цитата Сообщение от Sniti01 Посмотреть сообщение
Только мне обязательно необходимо наследование!
Для решения поставленной задачи наследование избыточно.
Придется что-то искусственно придумывать.
1
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
31.05.2013, 16:15  [ТС]
Задание немного изменилось) Теперь я записываю всё информацию в файл, считываю из файла. вывожу всю информацию, добавляю, удаляю, сортирую и всё в фале. Добавление и считывание из файла у меня вышло сделать, но не выходит удаление и сортировка.
На счёт этого я загуглил и понял что для удаления мне надо считать всю информацию из файла, изменить и перезаписать заново, но у меня не выходит создать поиск по файлу. Подскажите пожалуйста, как сделать поис и удаление! Очень нужна помощь!
Желательно к этому коду который я написал:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
class Book {
 
public:
string Auzer;
string name;
string tupe;
string number;
int year;
int str;
};
 
 
class Librari: public Book {
private:
 vector <string> bibl_book;
public:
 void add (int);
 void prosmotr();
 void sort (int, int);
 void udalenie ();
};
 
 
void Librari::add (int kol){
      string end_str = "end_str";
        for (int i = 0; i < kol; i++){
    cout << "Введите номер книги: ";
    cin >> number;      
    cout << " Введите Автора: " ;
    cin >> Auzer ;
    cout << " Введите название книги: ";
    cin >> name;
    cout << " Введите год издания: ";
    cin >> year;
    cout << " Введите количество страниц: ";
    cin >> str;
    cout << endl;
        //      ******запишем данные в файл*******
    ofstream bibl (" book.txt ", ios_base::app);
    
    if (!bibl.is_open()) // если файл не был открыт
    {
     cout << "Файл не может быть открыт или создан\n"; // напечатать соответствующее сообщение
    }
    else{
    bibl << number << " ";
    bibl << Auzer  << " ";
    bibl << name << " ";
    bibl << year << " ";
    bibl << str << " ";
    bibl << "\n";
    }
  }
}
 
void Librari::prosmotr (){
    char buf[1000];
    ifstream bibl (" book.txt ", ios_base::in ); // открываем файл только для чтения
    if (!bibl.is_open()) // если файл небыл открыт
    {
     cout << "Файл не может быть открыт или создан\n"; // напечатать соответствующее сообщение
    }
    else{
            cout << "    Домашняя библиотека!!! " << endl;
        while (!bibl.eof() ){
        bibl.getline(buf,1000);
        cout << buf << endl;
        }
    }   
}
 
    
void Librari::udalenie( ){
 
    char stroka [5000];
    char s [50];
    int i = 0;
    string noll = " ";
    ifstream bibl (" book.txt ", ios_base::app);
    if (!bibl.is_open()) // если файл небыл открыт
    {
     cout << "Файл не может быть открыт или создан\n"; // напечатать соответствующее сообщение
    }
/*
    string del_book;
 cout << "Введите номер книги которую хотите удалить: ";
 cin >> del_book;*/
 
    bibl.getline(stroka,5000);
 
 }
 
 
 
int _tmain(int argc, _TCHAR* argv[]){
 
 setlocale(LC_CTYPE, "rus");
Librari Object;
                    //      ***********меню программы***********
    while (true){
      cout << "        MENU" << endl;
      cout << "1 - Для добавления книг в библиотеку: " << endl;
      cout << "2 - Для просмотра книг в библиотеке: " << endl;
      cout << "3 - Для сортировки книг в библиотеке: " << endl;
      cout << "4 - Для удаления книг в библиотеке: " << endl;
      cout << "5 - Взять книгу в библиотеке: " << endl;
      cout << "6 - Выйти из программы: " << endl;
      int d;
      cin >> d;
 
      switch(d){
      case 1 : {
          cout << "Введите сколько книг будуть занесены в библиотеку :";
            int kol; 
              cin >> kol;
                Object.add (kol);
                  break;
               }
      case 2 : { Object.prosmotr();
                  break;
               }
      case 3 : {
         /*cout << "Введите адрес 1 книги:";
           int adr_1, adr_2;
            cin >> adr_1;
             cout << "Введите адрес 2 книги:";
              cin >> adr_2;
               Object.sort(adr_1, adr_2);
                  break;*/
               }
       case 4 : {
    /*  cout << "Введите адрес книги которую хотите удалить (от 1 - n)";
           int r;
            cin >> r;*/
                Object.udalenie();
          break;
               }
       case 5: {
              //
               }
       case 6: {return 0; }
          
   default: 
       cout << "Ошибка! Введите правельный знак операции!" << endl;
      }
    }
    system("pause");
    return 0;
}
Добавлено через 17 часов 38 минут
Уже второй день мучаюсь, но не могу найти как удалить строку из файла. Помогите кому не трудно!
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.05.2013, 16:29
Цитата Сообщение от Sniti01 Посмотреть сообщение
Уже второй день мучаюсь
И где результат мучений?

Добавлено через 4 минуты
Считали структуры из файла в массив структур (можно сначала посчитать количество строк в файле и создать динамический массив под это количество структур). Перебираете массив, ищете нужную. Если нашли, то запомнили индекс этой структуры в массиве. Открыли файл для записи и записали в файл массив, кроме структуры с найденным индексом.
1
0 / 0 / 1
Регистрация: 25.10.2012
Сообщений: 50
31.05.2013, 16:50  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
И где результат мучений?
Результаты мучений - это сделанный мною корявый-неробочий код удаления строки из файла, который я просто удалил.
Как мне записать строку из файла в определенный элемент массива строк?
Я только знаю как одно слово считать в один элемент массива строк. А с помощью getliane() не выходит.
C++
1
2
3
ifstream bibl("имя файла", ios_base::app)
string h[100];
bibl >> h[0];
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
31.05.2013, 17:09
Цитата Сообщение от Sniti01 Посмотреть сообщение
Как мне записать строку из файла в определенный элемент массива строк?
Я же написал:
Цитата Сообщение от alsav22 Посмотреть сообщение
Считали структуры из файла в массив структур
При чём здесь массив строк? А в поля элемента такого массива читайте из файла через >>.

Добавлено через 7 минут
Массив Book создайте. Потом в поля каждого элемента массива читайте из файла:
C++
1
2
3
4
5
6
7
...
Book arr[100];
...
fin >> arr[i].Auzer;
if (fin.eof()) break;
fin >> arr[i].name;
...
и т.д. Расписывать детали времени нет.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.05.2013, 17:09
Помогаю со студенческими работами здесь

Написать структуру «Домашняя библиотека»
Написать структуру «Домашняя библиотека». Структура должна содержать не менее 5 полей (автор, название, жанр, издательство, год выпуска,...

Описать класс «Домашняя библиотека»; реализовать поиск книги по заданному признаку
Помогите решить програму: Описать класс «домашняя библиотека». предусмотреть возможность работы с произвольным числом книг, поиска...

Описать класс «домашняя библиотека». Предусмотреть возможность работы с произвольным числом книг, поиска книги
Друзья, не работает функция add. Программа крашится. Я понимаю, что он как бы пытается записать в то же место, но не знаю как, исправить....

Домашняя библиотека
Программный продукт должен обеспечить возможность вводить, редактировать и удалить элементы хранимые в библиотеке. необходимые элементы ...

домашняя библиотека
помогите сосзать в дэлфи домашнюю библиотеку


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru