Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[c++] Dane nie zapisują się do classy

Ostatnio zmodyfikowano 2018-04-10 23:18
Autor Wiadomość
Mks1948
Temat założony przez niniejszego użytkownika
[c++] Dane nie zapisują się do classy
» 2018-04-10 10:26:28
Witam mam problem, utworzyłem sobie 'system uczelniany' i mam problem chciałbym aby poprzez opcję 2 wpisac np 2 uczniów i żeby wyświetlić ich dane tj imie i nazwisko za pomocą funkcji nr 3, niestety nie wiem co jest grane , wszystkie dane sie wpisuja normalnie ale nie chca się wyświetlić.
C/C++
#include "stdafx.h"
#include <iostream>
#include<string>

using namespace std;



struct Oceny {
    int oceny;
    string NazwiskoWykladowcy[ 10 ];
    string Opis;
};
class Student {
public:
   
    Oceny ocenki;
    string imie[ 5 ];
    string nazwisko[ 5 ];
   
    void listaStudentow()
    {
       
        cout << imie << " " << nazwisko << endl;
       
       
    }
    void dodajPesel()
    {
       
        cin >> pesel;
    }
    void wyswietlPesel()
    {
        cout << pesel << endl;;
    }
private:
    long long pesel;
   
   
};
class Grupa {
public:
    Student studencik;
    string NazwaGrupy;
    string RokStudiow;
    string iloscStudentow;
    void dane() {
        cout << NazwaGrupy << "  " << RokStudiow << " " << iloscStudentow << "  " << studencik.imie << "  " << studencik.nazwisko;
    }
};

class Uczelnia {
public:
   
    string nazwa;
    string adres;
    int liczbaStudentow;
   
    void zmienNazwe( string NowaNazwa )
    {
        nazwa = NowaNazwa;
    }
    void edytujDane( string Nowanazwa, string NowyAdres, int NewliczbaStudentow )
    {
        nazwa = Nowanazwa;
        adres = NowyAdres;
        liczbaStudentow = NewliczbaStudentow;
    }
    void wyswietl()
    {
        cout << "Nazwa uczelni : " << nazwa << " adres : " << adres << " liczba studentow: " << liczbaStudentow << endl;
    }
};

int main()
{
   
   
    Grupa IIinf[ 20 ];
   
   
   
   
   
   
    int x;
    cout << "\tWitaj w systemie uczelnianym \t" << endl;
    cout << "\tCo chcesz zrobic?\t " << endl;
    cout << "\t1.DODAC UCZELNIE \t " << endl;
    cout << "\t2.DODAC STUDENTA\t " << endl;
    cout << "\t3.WYSWIETL LISTE STUDENTOW\t " << endl;
    cout << "\t4.DODAC OCENE\t " << endl;
    cin >> x;
   
    /*cout << "Wyczyscic ekran? t/n: ";
    char decyzja;
    cin >> decyzja;
    if (decyzja == 't' || decyzja == 'T' || decyzja == 'y' || decyzja == 'Y')
    {
    system("cls");
   
    }*/
   
    Student studenciaki[ 5 ];
    Uczelnia dodaj[ 5 ];
   
    switch( x )
    {
    case 1:
        {
            cout << "ILE UCZELNI CHCESZ DODAC " << endl;
            int a;
            cin >> a;
           
            for( int i = 0; i < a; i++ )
            {
               
                cout << "\t PODAJ NAZWE " << endl;
                cin >> dodaj[ i ].nazwa;
                cout << "\t PODAJ ADRES " << endl;
                cin >> dodaj[ i ].adres;
                cout << "\t PODAJ LICZBE STUDENTOW " << endl;
                cin >> dodaj[ i ].liczbaStudentow;
               
            }
            main();
        }
    case 2:
        {
            cout << "ILE STUDENTOW CHCESZ DODAC " << endl;
            int a;
           
            cin >> a;
           
            string imie, nazwa;
           
            for( int i = 0; i < a; i++ )
            {
               
                cout << "\t PODAJ IMIE " << endl;
                cin >> studenciaki[ i ].imie[ i ];
                cout << "\t PODAJ NAZWISKO " << endl;
                cin >> studenciaki[ i ].nazwisko[ i ];
                cout << "\t PODAJ PESEL " << endl;
                studenciaki[ i ].dodajPesel();
               
            }
            /*cout << "Lista studentow : " << endl;;
            for (int j = 0; j < a; j++)
            {
            cout << "Student nr. " << j << "." <<
           
            }*/
            main();
        }
    case 3:
        {
           
           
            for( int j = 0; j < 3; j++ )
            {
                cout << "Student nr. " << j << "." << endl;
               
                studenciaki[ j ].imie;
            }
           
            main();
        }
        default:
        cout << "WYBIERZ PONOWNIE " << endl;
        main();
    }
   
   
   
    getchar();
    return 0;
}
P-170593
pekfos
» 2018-04-10 10:52:06
Kod obiektowy powinien oddawać w pewnym stopniu to, jak się rzeczy mają w rzeczywistości. U ciebie oceny to jedna ocena i 10 nazwisk wykładowców, student ma jedną ocenę, ale za to 5 imion i 5 nazwisk, a grupa to cały 1 student. Twój program nie ma sensu już na poziomie koncepcji. Nie ma w tym programie ani jednej tablicy, która by była zastosowana z sensem.

C/C++
main();
Realizowanie pętli rekurencją nie ma sensu, a w przypadku main jest również błędne.

niestety nie wiem co jest grane , wszystkie dane sie wpisuja normalnie ale nie chca się wyświetlić.
"Nie chcą" się wyświetlić, bo ich nie wyświetlasz.

P-170594
darko202
» 2018-04-10 11:09:07
1.
narysuj sobie diagram użytych klas realizowanego modelu

coś takiego jak
https://obrazki.elektroda.pl​/5654211500_1452592444.jpg
http://3.bp.blogspot.com​/-0NCGdhWblvw/UECunD9ljFI​/AAAAAAAAAVE/u__pEJfmuxw/s640​/diagram-oceny.png

mając to zrealizuj oczekiwaną funkcjonalność według tego modelu



P-170596
Mks1948
Temat założony przez niniejszego użytkownika
» 2018-04-10 11:12:57
Wiem że to może jeszcze nie ma ładu i składu ale cały czas coś ulepszam,poprawiam i ucze się na błędach.
P-170597
latajacaryba
» 2018-04-10 23:18:13
może pomyliłeś
char imie[ 5 ]
 z
std::string imie
?
char[] to tablica char, możesz w niej przechować pojedyncze znaki albo cstringa, czyli ciąg znaków zakończony znakiem null. Determinuje on koniec cstringa.
std::string to typ pozwalający przechowywać Ci cstringi nie martwiąc się o to, czy masz wystarczająco miejsca.
Także zapis
std::string imie[ 5 ]
To nie "tablica znaków o rozmiarze 5", tylko "tablica ciągów znaków (tablica stringów)"

Natomiast ocen moze być kilka, więc tu trzeba użyć tablicy lub (lepiej) wektora.
P-170609
« 1 »
  Strona 1 z 1