помогите пожалуйста исправить ошибку в коде задачи

  • Автор темы ilya1989
  • Дата начала
I

ilya1989

Гость
#1
Здравствуйте,уважаемые программисты форума!
Бьюсь над следующей ситуацией:
Вот код,который я сам попробовал написать для задачи,иллюстрирующей картотеку книг.Сразу оговорюсь,что по условиям задачи программа должна не только сохранять информацию в файл,но так же и считывать информацию из файла....но,меня пока что интересует запись в файл.
код:
C++:
#include <iostream.h>
#include <fstream.h>
#include <conio.h>
#define A 1
class Book
{
char name[80];
char FIO[80];
int page;
char publishing_office[80];
char publication_date[10];
public:
void create_new_entry();
void view_all_entryes();
};
void create_fail(Book);
void Book::create_new_entry()
{
ofstream record("Books.txt");
cout<<"Vvedite nazvaniye knigi :";
cin.getline(name,80);
record<<name<<endl;
cout<<"Vvedite FIO autora :";
cin.getline(FIO,80);
record<<FIO<<endl;
cout<<"Vvedite collichestvo stranits :";
cin>>page;
cin.ignore();
record<<page<<endl;
cout<<"Vvedite naimenovaniye izdatel`stva :";
cin.getline(publishing_office,80);
record<<publishing_office<<endl;
cout<<"Vvedite date publicatsii(data.mesyats.god): ";
cin.getline(publication_date,80);
record<<publication_date<<endl;
record.close();
}




//vvod v fail

void create_fail(Book kniga[A])
{
for(int b=1;b<=A;b++)
{
cout<<"Kniga N"<<b<<endl;
cout<<"------------------------------"<<endl;
kniga[b].create_new_entry();
}
}



void main()
{
Book knigs[A];
create_fail(knigs);
}
компилируется,но при вводе колличества страниц выдается неизвестная для меня ошибка...

помогите пожалуйста с исправлением.Заранее благодарю!
 

Вложения

lazybiz

Well-Known Member
03.11.2010
1 339
0
#2
cin.getline(publication_date,80); --- размер 80

char publication_date[10]; --- размер 10
 
I

ilya1989

Гость
#3
cin.getline(publication_date,80); --- размер 80

char publication_date[10]; --- размер 10
Спасибо огромное за помощь!

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

lazybiz

Well-Known Member
03.11.2010
1 339
0
#4
Блин. Так у тебя запись в несуществующий элемент массива происходит:
C++:
void create_fail(Book kniga[A])
{
for(int b=1;b<=A;b++)
{
cout<<"Kniga N"<<b<<endl;
cout<<"------------------------------"<<endl;
kniga[b].create_new_entry(); <--- при первой итерации b == 1 !!!! а должно быть 0 !!
}
}
Переделай цикл вот так:
C++:
for ( int b = 0; b < A; b++ )