Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: Ajutor la program ce foloseste clase  (Citit de 1128 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
kalio
Strain


Karma: -2
Deconectat Deconectat

Mesaje: 1



Vezi Profilul
« : Ianuarie 20, 2010, 21:03:07 »

Am ceva nelamuriri...Neutral
Problema vrea sa simuleze o biblioteca.Aceasta este declarata ca vector cu elemente de tipul carte(o clasa).In program se va face cautare dupa titlu,autor si dupa an precum si adaugarea unei noi carti.
Problema este ca, clasa contine o functie ce afiseaza titlul/autorul/editura care trebuie sa returneze un string...nu reusesc cum sa ii dau de cap.
O alta chestie pe care va trebui sa o adaug este supradefinirea unui operator(ma gandeam sa "adun" titlul cu autorul) si sa construiesc o functie friend.
Asta e codul pe care am reusit sa il fac pana acum:
Cod:
//#include "stdafx.h"
#include <iostream.h>
#include <string.h>
#define IN 1
#define OUT 0

/*class biblioteca
{
int nr_carti;
    int * tab;
public:
  biblioteca(int=10);   
  ~biblioteca();
  void citire();
  void cautare();
}; */

class carte
{
      char autor[40];
      char titlu[40];
  char editura[30];
  int an;
      int stare;
      public:
carte();//constructor fara parametrii
~carte()
{
cout<<"Sa apelat destructorul"<<endl;
}
             //carte(char *n,char *t,char *e,int a,int s);
void ia_autor(char *n)
{
strcpy(autor,n);
}
void ia_titlu(char *t)
{
strcpy(titlu,t);
}
void ia_editura(char *e)
{
strcpy(editura,e);
}
void ia_an(int x)
{
an=x;
}
void ia_stare(int s) //functie inline
             {
                  stare=s;
             }
char da_autor()
{
return autor;
}
char da_titlu()
{
return titlu;
}
int da_an()
{
return an;
}
             int da_stare() //functie inline
             {
                 return stare;
             }
             void arata();
}
/*
biblioteca::biblioteca(int n)
{  nr_carti=n;
   tab=new int[nr_carti];
   for (int i=0; i<nr_carti; i++)
     tab[i]=0;
}

biblioteca::~biblioteca()
{
delete []tab;
}

void biblioteca::citire()
{
for(int i=0; i<nr_carti; i++)
    {      cout<<"tab["<<i<<"]=";
            cin>>tab[i];
    }
}
void biblioteca::afisare()

cout<<endl;
    for(int i=0; i<nr_carti; i++)
        cout<<"tab["<<i<<"]="<<tab[i]<<endl;
}
*/
/*carte::carte(char *n,char *t,char *e,int a,int s)
{
                  strcpy(autor,n);
                  strcpy(titlu,t);
  strcpy(editura,e);
  an=a;
                  stare=s;
}*/       
carte::carte()
{
strcpy(autor,"fara");
strcpy(titlu,"fara");
strcpy(editura,"fara");
an=0;
stare=OUT;
}
void carte::arata()
{
     cout<<titlu<<" de "<<autor<<" de la editura "<<editura;
     cout<<" este ";
     if(stare==IN)
     cout<<"aici.\n";
     else
     cout<<"data.\n";
}

void main()
{
int n,i,n_stare,n_an;
     carte *bib=new carte[n];
     char n_autor[40],n_titlu[40],n_editura[30],x,y,z,e;
    cout<<"1.Pentru introducere de date apasati i\n";
  cout<<"2.Pentru afisarea listei apasati a\n";
  cout<<"3.Pentru cautare dupa autor apasat c \n";
  cout<<"4.Pentru cautare dupa titlu apasati t\n";
  cout<<"5.Pentru cautare dupa an apasati n\n";
  cout<<"6.Pentru afisare apasati orice tasta\n";
  cin>>e;
  switch( e )
{
case 'i':
{
cout<<"Nr. de carti:"; cin>>n;
for(i=1;i<n;i++)
{
  cout<<"\nAutor:"; cin>>n_autor;
  bib[i].ia_autor(n_autor);
  cout<<"\nTitlu:"; cin>>n_titlu;
  bib[i].ia_titlu(n_titlu);
  cout<<"\nEditor:"; cin>>n_editura;
  bib[i].ia_editura(n_editura);
  cout<<"\nAn aparitie:"; cin>>n_an;
  bib[i].ia_an(n_an);
  cout<<"\nStare(IN/OUT):"; cin>>n_stare;
  bib[i].ia_stare(n_stare);
}
}
case 'a':
{
  //afisarea listei
  for(i=1;i<n;i++)
  {
  bib[i].arata();
  }
}
case 'c':
{
  //cautare dupa autor
  cout<<"Introduceti numele autorului:"<<endl; cin>>x;
  for(i=1;i<n;i++)
  {
  if(strcmp(bib[i].da_autor(),x)==0)
  bib[i].arata();
  }
}
case 't':
{
  //cautare dupa titlu
  cout<<"Introduceti titlul:"<<endl; cin>>y;
  for(i=1;i<n;i++)
  {
  if(strcmp(bib[i].da_titlu(),y)==0)
  bib[i].arata();
  }
}
case 'n':
{
  //cautare dupa an
  cout<<"Introduceti anul:"<<endl; cin>>z;
  for(i=1;i<n;i++)
  {
  if(bib[i].da_an()==z)
  bib[i].arata();
  }
}
default :break;
}
 
  delete []bib;
 


}
     
       


Astept indicatii Wink
Merci in prealabil
Memorat
chera_lary
De-al casei
***

Karma: -2
Deconectat Deconectat

Mesaje: 106



Vezi Profilul
« Răspunde #1 : Ianuarie 25, 2010, 14:27:30 »

Fii ceva mai clar! Cum adica clasa contine o functie ce afiseaza bla bla bla si trebuie sa returneze un string? Poate contine o functie ce returneaza ceea ce trebuie afisat! Very Happy
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines