[c++] Dane nie zapisują się do classy
Ostatnio zmodyfikowano 2018-04-10 23:18
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ć. #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; 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(); } 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; }
|
|
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. 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. |
|
darko202 |
» 2018-04-10 11:09:07 |
|
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. |
|
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. |
|
« 1 » |