|
|
|
| Помогите прокомментировать код программы! В особенности, что такое в кое K?
И употребление bool значений!
P.S. Выручайте, иначе отчислят ….
//---------------------------------------------------------------------------
#include "stdafx.h"
//#pragma hdrstop
#include <iostream.h>
#include <fstream.h> #include <string.h>
//---------------------------------------------------------------------------
//====================My VALUES=========================================
struct book
{
char Autor[50];
char Book_Name[50];
bool Off;
};
//====================My VALUES=========================================
int Enter(book Library[])
{
ifstream Input("base.txt");
int i=0 ;
while(Input)
{
Input>>Library[i].Autor;
Input>>Library[i].Book_Name;
i++ ;
}
return i-1;
};
void Save(book Library[],int k)
{
ofstream Base("Base.txt") ;
for(int i=0;i<k;i++)
{
if(Library[i].Off==false)
{
Base<<Library[i].Autor<<'\n'
<<Library[i].Book_Name<<'\n';
}
}
};
void Delete(book Library[100],int k)
{
char Autor[50];
cout<<"Enter second name of autor"<<'\n';
cin>>Autor;
for(int i=0;i<k;i++)
{
if(strcmp(Library[i].Autor,Autor )==0)
{
Library[i].Off=true;
}
}
};
int Add(book Library[],int k)
{
k++;
cout<<"Enter second name of autor"<<'\n';
cin>>Library[k-1].Autor;
cout<<"Enter a name of book"<<'\n';
cin>>Library[k-1].Book_Name;
Library[k-1].Off=false;
return k;
};
//======================MAIN============================================
int main(int argc, char* argv[])
{
//========================Объявление переменных====
book Library[100] ;
book *Ukazatel ;
int j=5 ;
bool End=false ;
ifstream Input("base.txt") ;
int k=0 ;
for(int i=0;i<100;i++)
{
Library[i].Off=false;
}
//========================Объявление переменных===
k=Enter(Library);
while(!End)
{
if(j==5)
{
cout<<"For printing all array -1 "
<<'\n'
<<"For deleting from array -2 "
<<'\n'
<<"For add information to array -3 "
<<'\n'
<<"For exit -4 "
<<'\n';
}
cout<<"For drawing meny -5"<<'\n'<<'\n'<<'\n';
cin>>j;
//=============================Действия меню==============
if(j==4)
{
End=true;
};
if(j==3)
{
k=Add(Library,k);
//cout<<k;
};
if(j==1)
{
for(int i=0;i<k;i++)
{
if(Library[i].Off==false)
{
cout<<"Autor :"<<Library[i].Autor<<'\n'
<<"Book name :"<<Library[i].Book_Name<<'\n';
}
}
};
if(j==2)
{
Delete(Library,k);
};
//=================================Конец===========================
}
Save(Library, k) ;
return 0;
} | |
|
|
|
|
|
|
|
для: Depp
(09.11.2007 в 13:26)
| | Программа позволяет сохранять и извлекать список книг и их авторов (количеством не более 100 штук) из файла base.txt. Для хранения автора книги и её названия используется массив Library структур book. Структура book имеет три поля:
Autor - имя автора
Book_Name - название книги
Off - логический флаг, равенства true которого говорит о том, что это конечный элемент списка и дальше идут пустые записи.
Переменная k насколько я понял хранит номер текущей записи, с которой мы в настоящий момент работаем.
PS Однако, как я понял, программа не работосопособна и придраться тут есть к чему. | |
|
|
|
|
|
|
|
для: cheops
(09.11.2007 в 13:59)
| | Спасибо! Буду пытаться дальше мучать!
Я только начал изучать С++, если не сложно прокомментируй строчки программы!
P.S. Я не наглею просто некуда податься :( | |
|
|
|
|
|
|
|
для: Depp
(09.11.2007 в 13:26)
| | Как-то так...
//---------------------------------------------------------------------------
#include "stdafx.h"
//#pragma hdrstop
#include <iostream.h>
#include <fstream.h>
#include <string.h>
//---------------------------------------------------------------------------
//====================My VALUES=========================================
// Запись для хранения информации об
// названиях книг и авторах
struct book
{
// Автор
char Autor[50];
// Навзание книги
char Book_Name[50];
// Признак конца списка
bool Off;
};
//====================My VALUES=========================================
// Заполнение списка Library из текстового
// файла base.txt
int Enter(book Library[])
{
// Открываем поток для чтения из файла
ifstream Input("base.txt");
// В цикле заполняем список Library
// из открытого потока
int i=0 ;
while(Input)
{
Input>>Library[i].Autor;
Input>>Library[i].Book_Name;
i++ ;
}
// Возвращаем номер последней записи
// в списке Library
return i-1;
};
// Сохранение списка Library в текстовый
// файл base.txt
void Save(book Library[],int k)
{
// Открываем поток для записи в файл
ofstream Base("Base.txt") ;
// В цикле читаем из потока данные в
// в список Library
for(int i=0;i<k;i++)
{
if(Library[i].Off==false)
{
Base<<Library[i].Autor<<'\n'
<<Library[i].Book_Name<<'\n';
}
}
};
// Удаление записи из списка
void Delete(book Library[100],int k)
{
char Autor[50];
cout<<"Enter second name of autor"<<'\n';
cin>>Autor;
for(int i=0;i<k;i++)
{
if(strcmp(Library[i].Autor,Autor )==0)
{
Library[i].Off=true;
}
}
};
// Добавление записи в список Library
int Add(book Library[],int k)
{
k++;
cout<<"Enter second name of autor"<<'\n';
cin>>Library[k-1].Autor;
cout<<"Enter a name of book"<<'\n';
cin>>Library[k-1].Book_Name;
Library[k-1].Off=false;
return k;
};
//======================MAIN============================================
// Главная функция
int main(int argc, char* argv[])
{
// Объявляем массив из 100 элементов
// структуры book - будет служить списком
book Library[100] ;
book *Ukazatel ;
int j=5 ;
bool End=false ;
ifstream Input("base.txt") ;
int k=0 ;
// Инициируем массив Library
for(int i=0;i<100;i++)
{
Library[i].Off=false;
}
// Читаем данные из файла
k=Enter(Library);
// Объявляем бесконечный, который выводит меню
// и принимает от пользователя команды
while(!End)
{
// Вывести меню, если пользователь ввёл цифру 5
if(j==5)
{
cout<<"For printing all array -1 "
<<'\n'
<<"For deleting from array -2 "
<<'\n'
<<"For add information to array -3 "
<<'\n'
<<"For exit -4 "
<<'\n';
}
cout<<"For drawing meny -5"<<'\n'<<'\n'<<'\n';
cin>>j;
// Выйти из программы, если пользователь ввёл
// цифру 4
if(j==4)
{
End=true;
};
// Добавить запись в список Library
if(j==3)
{
k=Add(Library,k);
//cout<<k;
};
// Вывести все записи из списка Library
if(j==1)
{
for(int i=0;i<k;i++)
{
if(Library[i].Off==false)
{
cout<<"Autor :"<<Library[i].Autor<<'\n'
<<"Book name :"<<Library[i].Book_Name<<'\n';
}
}
};
// Удалить текущий элемент из списка Library
if(j==2)
{
Delete(Library,k);
};
}
// Сохранить результаты работы в текстовом файле
Save(Library, k) ;
return 0;
} |
| |
|
|
|
|
|
|
|
для: cheops
(09.11.2007 в 14:46)
| | Спасибо! Век не забуду! :) | |
|
|
|
|
|
|
|
для: Depp
(09.11.2007 в 15:00)
| | Depp, а почему не динамически создается массив структур ? | |
|
|
|