CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 12 of 12
  1. #1
    Join Date
    Feb 2018
    Posts
    6

    [RESOLVED] Dynamic arrays and pointers problem

    If it's not pointer overwriting, then sorry for the incorrect title, but I think it is the case. The thing is: I am working on an exam program in C++ which is based on dynamic arrays (the reason is: I want to be able to enter new questions and answers to them additionaly if I want to). The problem is the following: Let's say we use 2 students and we enter 2 questions and then we start with exam. First student does the exam and the second one also does the exam. Now occurs the problem -> Second student's answers overwrote the first student's answers, so when I try to output the results, it takes last student's results as any other student's.

    Code:
    #include <iostream>
    #include <iomanip>
    #include <assert.h>
    #include <fstream>
    #include <string>
    #include <conio.h>
    
    using namespace std;
    
    char crt[] = "\n----------------------------------------------\n";
    
    enum wayOf_Studying { REGULAR, DL };
    enum study_Year { FIRST = 1, SECOND, THIRD, FOURTH };
    enum answers { CORRECT, INCORRECT };
    
    struct Test {
    	string *_questions;
    	int _numberOfquestions;
    	answers *_correctAnswers;
    };
    
    struct Student {
    	char _nameSurname[30];
    	int _indexNumber;
    	bool _didTest = false;
    	int _username;
    	int _password;
    	bool _loginCreated = false;
    	wayOf_Studying _way;
    	study_Year _year;
    	answers *_answers;
    };
    
    void show_Menu(int&);
    void input_Students(Student &, Test &);
    void Search(Student *, int, Test, int);
    void Sort(Student *, int, Test, int);
    void run_Test(Student &, Test);
    int show_Students(Student *, int);
    int show_Results(Student, Test);
    void add_Questions(Test &, Student*, int);
    void admin_Menu(Test&, Student*, int);
    void create_Login(Student*, int);
    bool student_Login(Student *, int, int);
    int student_Recognize(Student *, int);
    
    int main() {
    
    	int max = 0;
    	cout << "Enter number of students: " << flush;
    	cin >> max;
    	while (!cin || max < 0) {
    		cout << "[!] Enter the whole number [!]: " << flush;
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cin >> max;
    	}
    
    	Test configuration;
    	configuration._numberOfquestions = 0;
    	configuration._questions = nullptr;
    	configuration._correctAnswers = nullptr;
    
    	Student * array = new Student[max];
    	for (int i = 0; i < max; i++)
    		input_Students(array[i], configuration);
    	system("CLS");
    
    	int choice = 0, student = 0, correct_Answers = 0;
    
    	do {
    		show_Menu(choice);
    		if (choice == 6)
    			break;
    		if (choice == 1) {
    			student = student_Recognize(array, max);
    			if (array[student]._didTest == true)
    				cerr << crt << "Student " << array[student]._nameSurname << " already took an exam!" << endl;
    			else if (array[student]._loginCreated == true) {
    				if ((student_Login(array, max, student)) == true) {
    					run_Test(array[student], configuration);
    				}
    				else
    					cout << crt << "Unsuccessful login!" << endl;
    			}
    			else if (array[student]._loginCreated == false)
    				cout << crt << "Student " << array[student]._nameSurname << " has no created login!" << endl;
    		}
    		else if (choice == 2) {
    			cout << crt << "\t\t:: LIST OF STUDENTS ::" << crt;
    			student = show_Students(array, max);
    			if (array[student]._didTest == false)
    				cerr << crt << "Student " << array[student]._nameSurname << " has not taken an exam yet!" << endl;
    			else {
    				correct_Answers = show_Results(array[student], configuration);
    				cout << crt << "Student " << array[student]._nameSurname << " has " << correct_Answers << "/" << flush;
    				cout << configuration._numberOfquestions << flush;
    				cout << "  ---->\t" << (correct_Answers * 100.) / configuration._numberOfquestions << "%" << crt;
    			}
    		}
    		else if (choice == 3)
    			Search(array, max, configuration, student);
    		else if (choice == 4)
    			admin_Menu(configuration, array, max);
    		else if (choice == 5)
    			create_Login(array, max);
    
    	} while (true);
    
    	delete[] array;
    	array = nullptr;
    
    	cout << crt << setw(33) << ":: Kraj programa :: " << crt << endl;
    	system("PAUSE > NULL");
    	return 0;
    }
    
    int student_Recognize(Student *obj, int max) {
    	system("CLS");
    	int student = 0, IndexNumber = 0;
    	cout << crt << "Enter index number: " << flush;
    	cin >> IndexNumber;
    	while (!cin) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << "[!] Enter index number [!]: " << flush;
    		cin >> IndexNumber;
    	}
    
    	for (int i = 0; i < max; i++)
    		if (obj[i]._indexNumber == IndexNumber)
    			student = i;
    	system("CLS");
    	return student;
    }
    
    bool student_Login(Student *obj, int max, int student) {
    	system("CLS");
    	cout << crt << "\t\t:: LOGIN :: " << crt;
    	int enteredUSERNAME;
    	cout << "Enter username: " << flush;
    	cin >> enteredUSERNAME;
    	while (!cin) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << "[!] Enter username [!]: " << flush;
    		cin >> enteredUSERNAME;
    	}
    
    	int enteredPASS;
    	cout << "Enter password: " << flush;
    	cin >> enteredPASS;
    	while (!cin) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << "[!] Enter password [!]: " << flush;
    		cin >> enteredPASS;
    	}
    
    	if (obj[student]._username == enteredUSERNAME && obj[student]._password == enteredPASS)
    		return true;
    	return false;
    }
    
    void create_Login(Student *obj, int max) {
    	system("CLS");
    	cout << crt << "\t\t:: CREATE LOGIN:: " << crt;
    	int IndexNumber;
    	cout << "Enter index number: " << flush;
    	cin >> IndexNumber;
    	int student;
    	for (int i = 0; i < max; i++) {
    		if (obj[i]._indexNumber == IndexNumber)
    			student = i;
    	}
    	int password = 0;
    	cout << crt << "Username: " << obj[student]._indexNumber << " (index number)" << endl;
    	obj[student]._username = obj[student]._indexNumber;
    	cout << "Enter 4-digit password: " << flush;
    	cin >> password;
    	while (!cin || password < 1000 || password > 9999) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << "[!] Enter 4-digit password[!]: " << flush;
    		cin >> password;
    	}
    	system("CLS");
    	obj[student]._password = password;
    	obj[student]._loginCreated = true;
    	cout << crt << "Successfully created login! " << endl;
    	cout << "Remember you login data: " << crt;
    	cout << "USERNAME: " << obj[student]._username << endl;
    	cout << "PASSWORD: " << obj[student]._password << crt;
    }
    
    
    void admin_Menu(Test& configuration, Student *obj, int max) {
    	system("CLS");
    	int choice = 0;
    	cout << crt << "\t\t:: ADMIN MENU ::" << crt;
    
    	cout << "\t1 - Add questions" << endl;
    	cout << "\t2 - Let student take exam again" << crt;
    	cout << "Choice: " << flush;
    	cin >> choice;
    	while (!cin || choice < 1 || choice > 2) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << crt << "[!] Enter valid choice [!]: " << flush;
    		cin >> choice;
    	}
    	system("CLS");
    
    	if (choice == 1) {
    		cout << crt;
    		add_Questions(configuration, obj, max);
    		cout << crt;
    	}
    	if (choice == 2)
    	{
    		int student = show_Students(obj, max);
    		obj[student]._didTest = false;
    		cout << crt << "Student " << obj[student]._nameSurname << " can take an exam again!" << crt;
    	}
    }
    
    void add_Questions(Test &configuration, Student* obj, int max) {
    	int number = 0;
    	cout << "How many questions are you going to enter: " << flush;
    	cin >> number;
    	while (!cin || number <= 0) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << crt << "[!] Enter valid number [!]: " << flush;
    		cin >> number;
    	}
    	cin.ignore();
    
    
    	int len = configuration._numberOfquestions + number;
    	string * temp_Questions = new string[len];
    	answers * temp_correct_Answers = new answers[len];
    	answers * temp_Answers = new answers[len];
    
    	for (int i = 0; i < configuration._numberOfquestions; i++) {
    		temp_Questions[i] = configuration._questions[i];
    		temp_correct_Answers[i] = configuration._correctAnswers[i];
    	}
    
    	for (int i = 0; i < max; i++)
    		obj[i]._answers = temp_Answers;
    
    	delete[] configuration._questions;
    	configuration._questions = temp_Questions;
    	delete[] configuration._correctAnswers;
    	configuration._correctAnswers = temp_correct_Answers;
    
    	int input = 0;
    	answers answer;
    	for (int i = configuration._numberOfquestions; i < len; i++) {
    		cout << crt << "Enter " << configuration._numberOfquestions + 1 << ". question: " << crt;
    		getline(cin, configuration._questions[i]);
    		configuration._numberOfquestions++;
    		do {
    			cout << crt << "Enter correct answer for question " << configuration._numberOfquestions << " (1 - CORRECT | 2 - INCORRECT): " << crt;
    			cout << "Answer: " << flush;
    			cin >> input;
    			cin.ignore();
    			answer = answers(--input);
    		} while (answer != CORRECT && answer != INCORRECT);
    		configuration._correctAnswers[i] = answer;
    	}
    	system("CLS");
    }
    
    int show_Results(Student obj, Test configuration) {
    	int correctAns = 0;
    	for (int i = 0; i < configuration._numberOfquestions; i++) {
    		if (obj._answers[i] == configuration._correctAnswers[i])
    			correctAns++;
    	}
    	return correctAns;
    }
    
    void run_Test(Student & obj, Test configuration) {
    	system("CLS");
    	cout << crt << " --- WELCOME TO THE EXAM ---" << crt;
    	answers answer;
    	int input;
    	for (int i = 0; i < configuration._numberOfquestions; i++) {
    		cout << crt << configuration._questions[i] << crt;
    		do {
    			cout << "1 - CORRECT | 2 - INCORRECT >> " << flush;
    			cin >> input;
    			answer = answers(--input);
    		} while (answer != CORRECT && answer != INCORRECT);
    		obj._answers[i] = answer;
    	}
    	system("CLS");
    	obj._didTest = true;
    }
    
    int show_Students(Student *pok, int max) {
    	system("CLS");
    	int choice = 0;
    	for (int i = 0; i < max; i++)
    		cout << i + 1 << " -> " << pok[i]._nameSurname << endl;
    	cout << crt;
    	cout << "Enter student's ordinal number: " << flush;
    	cin >> choice;
    	while (!cin || choice < 1 || choice > max) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << crt << "[!] Enter valid ordinal number [!]: " << flush;
    		cin >> choice;
    	}
    	system("CLS");
    	return --choice;
    }
    
    void input_Students(Student & pok, Test &configuration) {
    	int input = 0;
    	cin.ignore();
    	cout << crt << "\t\t:: STUDENT INPUT ::" << crt;
    	cout << "Name and surname: " << flush;
    	cin.getline(pok._nameSurname, 29);
    	cout << "Index number: " << flush;
    	cin >> pok._indexNumber;
    	pok._didTest = false;
    	do {
    		cout << "Way of studying (1 - regular | 2 - DL): " << flush;
    		cin >> input;
    	} while (input < 1 || input > 2);
    	pok._way = wayOf_Studying(--input);
    	do {
    		cout << "Study year (1 - first | 2 - second | 3 - third | 4 - fourth): " << flush;
    		cin >> input;
    	} while (input < 1 || input > 4);
    	pok._year = study_Year(input);
    
    	pok._answers = nullptr;
    
    }
    
    void Search(Student * array, int max, Test configuration, int student) {
    	int choice = 0, study_Year = 0, study_Way = 0;
    	system("CLS");
    	cout << crt << "\t\t:: SEARCH ::" << crt;
    	do
    	{
    		cout << "\t1 - study year" << endl;
    		cout << "\t2 - study way" << endl;
    		cout << "\t3 - exam results" << crt;
    		cin >> choice;
    		system("CLS");
    	} while (choice < 1 || choice > 3);
    
    	if (choice == 1) {
    		do {
    			cout << "Enter study year (1 - first | 2 - second | 3 - third | 4 - fourth): " << flush;
    			cin >> study_Year;
    		} while (study_Year < 1 || study_Year > 4);
    		cout << crt;
    		for (int i = 0; i < max; i++) {
    			if (array[i]._year == study_Year) {
    				cout << array[i]._indexNumber << " " << array[i]._nameSurname << endl;
    			}
    		}
    		cout << crt;
    	}
    
    	if (choice == 2) {
    		do {
    			cout << "Enter study way (1 - regular | 2 - DL): " << flush;
    			cin >> study_Way;
    		} while (study_Way < 1 || study_Way > 2);
    		cout << crt;
    		study_Way--;
    		for (int i = 0; i < max; i++) {
    			if (array[i]._way == study_Way) {
    				cout << array[i]._indexNumber << " " << array[i]._nameSurname << endl;
    			}
    		}
    		cout << crt;
    	}
    
    	if (choice == 3) {
    		cout << crt;
    		Sort(array, max, configuration, student);
    		cout << crt;
    	}
    
    }
    
    void Sort(Student *array, int max, Test configuration, int student) {
    	int numberOf_passes = max - 1;
    	bool change = true;
    	while (change) {
    		change = false;
    		for (int i = 0; i < numberOf_passes; i++) {
    			if (array[i]._didTest == false || array[i + 1]._didTest == false)
    				continue;
    			else if (show_Results(array[i], configuration) < show_Results(array[i + 1], configuration)) {
    				swap(array[i], array[i + 1]);
    				change = true;
    			}
    		}
    		numberOf_passes--;
    	}
    	int correctAns = 0;
    	for (int i = 0; i < max; i++) {
    		if (array[i]._didTest == false) {
    			cout << array[i]._indexNumber << " " << array[i]._nameSurname << "\t\tHAS NOT TAKEN AN EXAM" << endl;
    		}
    		else {
    			correctAns = show_Results(array[i], configuration);
    			cout << array[i]._indexNumber << " " << array[i]._nameSurname << flush;
    			cout << "  ---->\t" << (correctAns * 100.) / configuration._numberOfquestions << "%" << endl;
    		}
    	}
    }
    
    void show_Menu(int &choice) {
    	cout << crt << "\t\t:: MENU :: " << crt << endl;
    	cout << "\t1 - Run test" << endl;
    	cout << "\t2 - Show results" << endl;
    	cout << "\t3 - Search " << endl;
    	cout << "\t4 - ADMIN MENU " << endl;
    	cout << "\t5 - Create login" << endl;
    	cout << "\t6 - END" << crt;
    	cout << "Enter choice: " << flush;
    	cin >> choice;
    	while (!cin || choice < 1 || choice > 6) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << "[!] Enter valid choice [!]: " << flush;
    		cin >> choice;
    	}
    }

  2. #2
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,824

    Re: Dynamic arrays and pointers problem

    What debugging of the code have you done? Have you traced through the code using the debugger to see exactly what is happening and where the problem occurs? With this size of code, it's really the only way to determine what is happening and where the code is deviating from that expected.
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

  3. #3
    Join Date
    Feb 2018
    Posts
    6

    Re: Dynamic arrays and pointers problem

    Yes I did debug many times (especially functions add_Questions and run_Test), went F10 line by line and noticed the following : When one student enters his answers, they are applied to every other student (so I guess the bug should be in function run_Test?). I learned about pointers at Uni and I have not mastered them yet and this bug is driving me crazy 3rd day already ...

    If you plan on doing debug I suggest you also focus on debugging these two functions add_Questions and run_Test;

    Thanks anyway!

  4. #4
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,824

    Re: Dynamic arrays and pointers problem

    I'll try to have a look at it tomorrow am (GMT) if I have time.
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

  5. #5
    Join Date
    Feb 2018
    Posts
    6

    Re: Dynamic arrays and pointers problem

    I thing I may have found a bug but I have no idea at this particular moment how to fix it:
    - When I allocated memory in function add_Questions for objects's answers I did it the following way:

    for (int i = 0; i < max; i++)
    obj[i]._answers = temp_Answers;

    which apparently set every object's answers to the same memory location and that's the problem.

    I would appreciate any kind of help.

  6. #6
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,824

    Re: Dynamic arrays and pointers problem

    Yes, that would cause a problem! You need something like (and in other places this is done)

    Code:
    for (int i = 0; i < max; i++)
    		obj[i]._answers = new answers[len];
    and you need to make sure the allocated memory is deleted properly otherwise there is a memory leak. I'll look more closely tomorrow.
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

  7. #7
    Join Date
    Feb 2018
    Posts
    6

    Re: Dynamic arrays and pointers problem

    Oh thank you so much man

    You're a savior ^_^

  8. #8
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,824

    Re: Dynamic arrays and pointers problem

    A couple of issues

    student_Recognize() - what about if index number isn't found? You are returning 0 which is a valid value and there's no check in the calling function for invalid input.

    Code:
    	if (obj[student]._username == enteredUSERNAME && obj[student]._password == enteredPASS)
    		return true;
    
    	return false;
    can be reduced to
    Code:
    	return obj[student]._username == enteredUSERNAME && obj[student]._password == enteredPASS;
    Code:
    	int student;
    
    	for (int i = 0; i < max; i++) {
    		if (obj[i]._indexNumber == IndexNumber)
    			student = i;
    	}
    If the index isn't found then the value of student isn't defined as student doesn't have an initial value.

    Code:
    	cin >> number;
    
    	while (!cin || number <= 0) {
    		cin.clear();
    		cin.ignore(INT_MAX, '\n');
    		cout << crt << "[!] Enter valid number [!]: " << flush;
    		cin >> number;
    	}
    If a number has been entered - but isn't valid - then the input stream is not in a failed state and there are no invalid chars in the stream so you don't want to ignore. Consider

    Code:
    while (!(cin >> number) || number <= 0) {
        if (!cin) {
            cin.clear();
            cin.ignore(INT_MAX, '\n');
        }
    
        cout << crt << "[!] Enter valid number [!]: " << flush;
    }
    Note that

    Code:
    	delete[] array;
    doesn't delete the memory allocated to _answers. You are also not deleting the memory for configuration and its _questions and _correctanswers allocated memory.
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

  9. #9
    Join Date
    Feb 2018
    Posts
    6

    Re: Dynamic arrays and pointers problem

    Thanks so much again, I fixed those and it's running great now.

    Thanks man

  10. #10
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,824

    Re: [RESOLVED] Dynamic arrays and pointers problem

    I am working on an exam program in C++ which is based on dynamic arrays
    Just for info, I don't know how you are learning c++ or at what point you are in knowing c++, but this design/implementation isn't how it would be done using modern c++ design and techniques - and isn't what would be expected from a c++ programming interview.

    You might also find these sites useful. See post #10 of http://forums.codeguru.com/showthrea...-books-about-C
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

  11. #11
    Join Date
    Feb 2018
    Posts
    6

    Re: [RESOLVED] Dynamic arrays and pointers problem

    This is what we've learned at Uni ... And you are not the first one who tells me that I am not propery learning how to program in C++ since the way I am doing it looks so awful

    But I guess this is the only way I am going to pass the exam so I need to stick to it until I finish with Uni (?)
    Last edited by 2kaud; February 23rd, 2018 at 05:42 AM. Reason: Fixed emojis

  12. #12
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    7,824

    Re: [RESOLVED] Dynamic arrays and pointers problem

    so I need to stick to it until I finish with Uni (?)
    ... and then learn how to program with c++ properly!

    I don't how some of these 'professors' get and keep their jobs!
    Last edited by 2kaud; February 23rd, 2018 at 06:09 AM.
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++23 Compiler: Microsoft VS2022 (17.6.5)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured