Pagini: [1]   În jos
  Imprimă  
Ajutor Subiect: clase  (Citit de 1119 ori)
0 Utilizatori şi 1 Vizitator pe acest subiect.
stelian_2681
Strain


Karma: 0
Deconectat Deconectat

Mesaje: 15



Vezi Profilul
« : Iulie 08, 2014, 19:20:01 »

In codul de mai jos sunt citite de la tastatura informatiile specifice cartilor dintr-o librarie: denumire carte, autorul principal, al doilea autor, numarul de pagini si pretul.
Prin intermediul unei clase, carte, care descrie datele despre o carte, proprietatile (denumire carte, autorul principal, al doilea autor, numarul de pagini si pretul) si metodele de prelucrare (initializarea si afisarea unei carti) sa se afiseze pe ecran informatiile despre orice carte tratata.

Codul ruleaza bine o singura data, adica daca sunt introduse informatiile de la tastatura pentru o singura carte.
Daca vreau sa continui cu informatiile pentru o a doua carte codul sare peste linia de cod "denumirea cartii: " si imi cere "primul autor"
Daca continui cu introducerea informatiilor acestea nu sunt afisate.
Mentionez ca am incercat si cu gets() dar tot nu am reusit.
Va multumesc !

Cod:
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std;

class carte
{
    public:
        char nume[40];
        char autor1[40];
        char autor2[40];
        int nr_pag;
        double pret;
        void citeste_carte(char *nume_carte, char *autor_carte1, char *autor_carte2, int *np, double *p);
        void afiseaza_carte();
};

// descrirea functiei de citire carte
void carte::citeste_carte(char *nume_carte, char *nume_autor1, char *nume_autor2, int *np, double *p)
{
    strcpy(nume, nume_carte);
    strcpy(autor1, nume_autor1);
    strcpy(autor2, nume_autor2);
    nr_pag = *np;
    pret = *p;
}

void carte::afiseaza_carte()
{
    int i;
    cout << "\n cartea nr. " << i << ": " << nume << endl;
    cout << "\n primul autor : " << autor1 << endl;
    cout << "\n al doilea autor : " << autor2 << endl;
    cout << "\n nr pagini : " << nr_pag << endl;
    cout << "\n pretul : " << pret << endl;
}

int i=0;

int main()
{
    carte cartea_citita;
    char mnume[40], mautor1[40], mautor2[40];
    int mnr_pag;
    double mpret;
    char r = 'd';
    while (r == 'd')
    {
        cout << "\n denumirea cartii : ";
        cin.getline(mnume, 40);
        // gets(mnume);
        cout << "\n primul autor : ";
        cin.getline(mautor1, 40);
        // gets(mautor1);
        cout << "\n al doilea autor : ";
        cin.getline(mautor2, 40);
        // gets(mautor2);
        cout << "\n nr. pagini : ";
        cin >>mnr_pag;
        cout << "\n pret : ";
        cin >>mpret;
        cartea_citita.citeste_carte(mnume, mautor1, mautor2, &mnr_pag, &mpret);
        cartea_citita.afiseaza_carte();
        cout << "\n Vreti sa continuati ? (d/n) : ";
        cin >>r;
    }
    return 0;
}
Memorat
Pagini: [1]   În sus
  Imprimă  
 
Schimbă forumul:  

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