Форум: Форум C++Разное
Новые темы: 00
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужны комментарии к программе учёта книг
 
 автор: Depp   (09.11.2007 в 13:26)   письмо автору
 
 

Помогите прокомментировать код программы! В особенности, что такое в кое 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;
}

  Ответить  
 
 автор: cheops   (09.11.2007 в 13:59)   письмо автору
 
   для: Depp   (09.11.2007 в 13:26)
 

Программа позволяет сохранять и извлекать список книг и их авторов (количеством не более 100 штук) из файла base.txt. Для хранения автора книги и её названия используется массив Library структур book. Структура book имеет три поля:
Autor - имя автора
Book_Name - название книги
Off - логический флаг, равенства true которого говорит о том, что это конечный элемент списка и дальше идут пустые записи.
Переменная k насколько я понял хранит номер текущей записи, с которой мы в настоящий момент работаем.

PS Однако, как я понял, программа не работосопособна и придраться тут есть к чему.

  Ответить  
 
 автор: Depp   (09.11.2007 в 14:13)   письмо автору
 
   для: cheops   (09.11.2007 в 13:59)
 

Спасибо! Буду пытаться дальше мучать!
Я только начал изучать С++, если не сложно прокомментируй строчки программы!
P.S. Я не наглею просто некуда податься :(

  Ответить  
 
 автор: cheops   (09.11.2007 в 14:46)   письмо автору
 
   для: 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;
}

  Ответить  
 
 автор: Depp   (09.11.2007 в 15:00)   письмо автору
 
   для: cheops   (09.11.2007 в 14:46)
 

Спасибо! Век не забуду! :)

  Ответить  
 
 автор: oradev   (10.11.2007 в 14:15)   письмо автору
 
   для: Depp   (09.11.2007 в 15:00)
 

Depp, а почему не динамически создается массив структур ?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования