Program działa jednak nie tak jak powinien:
getinfo() ma za zadanie pobierać i zapisywać dane. Wprowadzenie danych kończy się, gdy tablica jest pełna. Funkcja zwraca liczbę studentów wpisanych do tablicy.
display1() pobiera parametr struktury student i pokazuje jej zawartość.
display2() pobiera jako parametr adres struktury student i pokazuje jej zawartość tej struktury.
display3() pobiera jako parametr adres pierwszego elementu tablicy ze strukturami student oraz liczbę elementów tablicy, po czym wyświetla zawartość wskazanych struktur
Oto kod:
#include <iostream>
const int SLEN = 30;
struct student
{
char fullname[SLEN];
char hobby[SLEN];
int ooplevel;
};
int getinfo (student pa[], int n);
void display1 (student st);
void display2 (const student *ps);
void display3 (const student pa[], int n);
int main()
{
std::cout << "Podaj wielkosc grupy: ";
int class_size;
std::cin >> class_size;
while(std::cin.get() != '\n')
continue;
student * ptr_stu = new student[class_size];
int entered = getinfo(ptr_stu, class_size);
for(int i=0; i < entered; i++)
{
display1(ptr_stu[i]);
display2(&ptr_stu[i]);
}
display3(ptr_stu, entered);
delete [] ptr_stu;
std::cout << "\n\nGotowe\n";
return 0;
}
int getinfo (student pa[], int n)
{
for(int i=0; i < n; i++)
{
std::cout << "Podaj nazwisko studenta: ";
std::cin.get(pa[i].fullname, SLEN);
/*if(!(std::cin.get(pa[i].fullname, SLEN)))
{
std::cout << "Blad! Ponow probe: ";
std::cin.get(pa[i].fullname, SLEN);
}
else
{*/
std::cout << "Podaj hobby student: ";
std::cin.get(pa[i].hobby, SLEN);
/*}
if(!(std::cin.get(pa[i].hobby, SLEN)))
{
std::cout << "Blad! Ponow probe: ";
std::cin.get(pa[i].hobby, SLEN);
}
else
{*/
std::cout << "Rok studiow: ";
std::cin >> pa[i].ooplevel;
//}
}
std::cout << std::endl;
return n;
}
void display1 (student st)
{
std::cout << "\tWartosc\n" << st.fullname[SLEN] << "\n" << st.hobby[SLEN
] << "\n" << st.ooplevel << "\n";
}
void display2 (const student * ps)
{
std::cout << "\tAdresy\n" << &ps->fullname[SLEN] << "\n" << &ps->hobby[S
LEN] << "\n" << &ps->ooplevel << "\n\n";
}
void display3 (const student pa[], int n)
{
std::cout << "Adresy pierwszych elementow struktury\n" << &pa[0].fullnam
e[SLEN] << "\n" << &pa[0].hobby[SLEN] << "\n" << &pa[0].ooplevel;
}
Problem jej w tym, że:
1. Nie można wpisać więcej niż jedną literę, chociaż jest std::cin.get().
2. Nie wyświetla dwóch pierwszy wartości i adresów.