Mam prośbę, prosiłbym o ocenę i poradę , czy ten schemat rezerwacji dynamicznej struktury tablic jest poprawnie napisanym kawałkiem kodu czy zawiera gdzieś rażące błędy. Chodzi mi o sposób rezerwacji pamięci dla tablicy struktur ,a nie o same dane czy nazywanie zmiennych. Dzięki za poświęcony czas .

#include <iostream>
struct nazwa_typu_struktury
{
std::string name;
int age;
double average;
};
int main()
{
int ile = 2;
nazwa_typu_struktury *wskaznik = new nazwa_typu_struktury [ile];
const nazwa_typu_struktury *adres_poczatkowy = (nazwa_typu_struktury *)wskaznik;
//zapis danych do pol dynamicznej struktury
int i = 1;
while(i <= ile){
std::cout << "Wprowadz Imie nr."<< i << " :" ;
std::cin >> wskaznik->name; //Metoda 1 dostepu do pola dynamicznej struktury
std::cout << "Wprowadz Wiek :" ;
std::cin >> wskaznik->age;
std::cout << "Wprowadz Srednia :" ;
std::cin >> wskaznik->average;
std::cout << std::endl;
i++;
wskaznik++;
}
wskaznik = (nazwa_typu_struktury *)adres_poczatkowy;
//odczyt danych z pol dynamicznej struktury
i = 1;
while(i <= ile){
std::cout << "Imie nr."<< i << " == " << (*wskaznik).name << std::endl; //Metoda 2 dostepu do pola dynamicznej struktury
std::cout << "Wiek " << " == " << (*wskaznik).age << std::endl;
std::cout << "Srednia " << " == " << (*wskaznik).average << std::endl;
std::cout << std::endl;
i++;
wskaznik++;
}
delete wskaznik;
return 0;
}
Prośba o ponowną ocenę 

KOD PO POPRAWIE :
#include <iostream>
#include <string>
struct type_name
{
std::string name;
int age;
double average;
};
int main(void)
{
int items = 2;
type_name *dynamic_pointer = new type_name [items];
const type_name *address_beginning = dynamic_pointer;
//zapis danych do pol dynamicznej struktury
for(int i = 1; i <= items; ++i){
std::cout << "Wprowadz Imie nr."<< i << " :" ;
std::cin >> dynamic_pointer->name; //Metoda 1 dostepu do pola dynamicznej struktury
std::cout << "Wprowadz Wiek :" ;
std::cin >> dynamic_pointer->age;
std::cout << "Wprowadz Srednia :" ;
std::cin >> dynamic_pointer->average;
std::cout << std::endl;
dynamic_pointer++;
}
dynamic_pointer = (type_name *)address_beginning;
//odczyt danych z pol dynamicznej struktury
for(int i = 1; i <= items; ++i){
std::cout << "Imie nr."<< i << " == " << (*dynamic_pointer).name << std::endl; //Metoda 2 dostepu do pola dynamicznej struktury
std::cout << "Wiek " << " == " << (*dynamic_pointer).age << std::endl;
std::cout << "Srednia " << " == " << (*dynamic_pointer).average << std::endl;
std::cout << std::endl;
dynamic_pointer++;
}
delete [] address_beginning;
return 0;
}
/** TEST
std::cout << "adres dynamic_pointer ==> " << dynamic_pointer << std::endl;
std::cout << "adres address_beginning ==> " << address_beginning << std::endl;
*/
Po dogłębnej analizie ponowna edycja kodu chyba najlepsza wersja prosiłbym o zerknięcie na kod i o ocenę :))
#include <iostream>
#include <string>
#include <cstddef>
struct users
{
std::string name;
unsigned int age;
double average;
};
int main()
{
users *dynamic_pointer = new users [3];
for(std::size_t i = 0; i < 3; ++i){
std::cout << "Insert name nr."<< i + 1 << " :";
std::cin >> dynamic_pointer[i].name;
std::cout << "Insert age :";
std::cin >> dynamic_pointer[i].age;
std::cout << "Insert average :";
std::cin >> dynamic_pointer[i].average;
system("cls");
}
for(std::size_t j = 0; j < 3; ++j){
std::cout << "Name nr." << j + 1 << " :" << dynamic_pointer[j].name << '\n'
<< "age :" << dynamic_pointer[j].age << '\n'
<< "average :" << dynamic_pointer[j].average << '\n' << '\n';
}
delete [] dynamic_pointer;
}