Through trial and error, I came to the fact that cin somehow does not close the stream, or that it also immediately fills "\ n" the next field of the dynamic array. Whether prompt I think and as for example for me to make reading before switch that the field with a surname could be filled. 42 -44 line there I have written more comments. Thank you
#include<iostream> #include<windows.h> using namespace std; class Sponsor { public: char name[32]; char surname[32]; double sum; Sponsor (){ cout << "cr"<<endl; } ~Sponsor (){ cout << "del"<<endl; } }; Sponsor* AddStruct(Sponsor* Obj, const int amount); void setData(Sponsor* Obj, const int amount); void showData(const Sponsor* Obj, const int amount); void menu(const int amount); void editData(Sponsor* Obj){ cout << "ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ" << endl; int amount, YesOrNot; cin >> amount; cout << "Π Π΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΠΈ β" << amount << endl; setData(Obj, amount - 1); cout << "ΠΠ°ΠΏΠΈΡΡ ΠΎΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½Π°" << endl; } void loadData(const Sponsor* Obj, const int amount); int main() { setlocale(LC_ALL, "rus"); Sponsor* OurSponsors = 0; int sponsorAmount = 0; int YesOrNot = 0; // ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ
int rule = 9; //Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠΏΠΈΡΡΠ²Π°Ρ Π·Π΄Π΅ΡΡ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ 1 ΡΠΎ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²ΡΠ΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΡΠΈΡ Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ Π° ΠΏΠΎΡΠΎΠΌ ΡΠ°ΠΌΠΈΠ»ΠΈΡ while (rule != 0){ cin >> rule; // cin.get() ΡΠΎΡ ΠΆΠ΅ ΡΡΡΠ΅ΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π²ΠΎΠΎΠ΄ ΡΠ°ΠΌΠΈΠ»ΠΈΠΈ Π° ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΠΌΠ΅Π½ΠΈ switch (rule){ case 1://add { do { OurSponsors = AddStruct(OurSponsors, sponsorAmount); setData(OurSponsors, sponsorAmount); sponsorAmount++; cout << "ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½ΡΡ
(1 - Π΄Π°, 0 - Π½Π΅Ρ): "; cin >> YesOrNot; cin.get(); } while (YesOrNot != 0); break; } case 2://edit { editData(OurSponsors); break; } case 3://ΠΏΠΎΠΊΠ°Π·Π°ΡΡ { showData(OurSponsors, sponsorAmount); break; } case 4: //Π·Π°Π³ΡΡΠ·ΠΈΡΡ { break; } } } delete[] OurSponsors; return 0; } Sponsor* AddStruct(Sponsor* Obj, const int amount) { if (amount == 0) { Obj = new Sponsor[1]; // Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ } else { Sponsor* tempObj = new Sponsor[amount + 1]; for (int i = 0; i < amount; i++) { tempObj[i] = Obj[i]; // ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ } delete [] Obj; Obj = tempObj; } return Obj; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void setData(Sponsor* Obj, const int amount) { cout << "Π€Π°ΠΌΠΈΠ»ΠΈΡ: "; cin.getline(Obj[amount].surname, 32); cout << "ΠΠΌΡ: "; cin.getline(Obj[amount].name, 32); cout << "Π‘ΡΠΌΠΌΠ° ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ: "; cin >> Obj[amount].sum; cin.get(); cout << endl; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ void showData(const Sponsor* Obj, const int amount) { system("cls"); cout << "β " << "Π€Π°ΠΌΠΈΠ»ΠΈΡ\t" << "ΠΠΌΡ\t" << "Π‘ΡΠΌΠΌΠ°\t" << endl; cout << "========================================" << endl; for (int i = 0; i < amount; i++) { cout << i + 1 << " " << Obj[i].surname << '\t' << Obj[i].name << '\t' << Obj[i].sum << endl; } system("pause"); } 