Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Малко помощ с една програмка на C++

Featured Replies

Здравейте, имам една курсова работа за предаване и от няколко дни съм забил на нея и така и не мога да разбера защо резултатът от последния case не излиза. Накратко това е условието: 

До участие в национална олимпиада по програмиране се допускат студенти (име, ЕГН, университет, факултет, специалност, събрани точки) и ученици (име, ЕГН, училище, клас, събрани точки). Данните за всички участници се съхраняват в един масив.
Да се състави програма, която изпълнява от меню следните операции:
- добавя към масива данните на пореден участник;
- извежда всички въведени данни;
- извежда данните на студентите мъже над 20 г. от зададен университет;

Първите две тирета съм ги изпълнил, но на последното не ми извежда данните на студентите мъже над 20 г. и не мога да разбера защо. Извежда ми "Задайте университет" и аз му задавам такъв, какъвто съм задал за студент(мъж над 20г) преди това, но данните за този студент не се извеждат, а директно ме връща в менюто за избиране на операции. Ще се радвам, ако ми подскажете къде греша. Това е кодът:

#include <iostream>
#include <string>
using namespace std;

class CPerson {
private:
	string name;
	char EGN[11];
public:
	virtual void getData();
	virtual void display();
	int getGender() { /* Инициализиране на член-функцията getGender за установяване на пола на студентите в зависимост от
	предпоследната цифра от ЕГН-то им (четна-мъж, нечетна-жена) */
		char b[2];
		strncpy_s(b, EGN + 8, 1); b[1] = '\0';
		return atoi(b) % 2;
	}
};

class CCollegian : virtual public CPerson {
private:
	char university[50];
	string faculty;
	string speciality;
	int totalPointsCollegian;
	int age;
public:
	void getData();
	void display();
	void male20Collegian(int numCollegians, CCollegian group[]) { // Член-функция(с два аргумента) за студентите от мъжки пол над 20 г.
		char currUniversity[50];
		cin.ignore();
		cout << "Задайте университет: "; cin.getline(currUniversity, 50);
		for (int i = 0; i < numCollegians; i++)
			if (group[i].getGender() == 0 && group[i].age > 20 && currUniversity == university) {
				group[i].display();
			}
	}
};

class CStudent : virtual public CPerson {
private:
	string populatedPlace;
	string school;
	int grade;
	int totalPointsStudent;
public:
	void getData();
	void display();
};

void CPerson::getData() {   
	cin.ignore();
	cout << "Въведете име: "; getline(cin, name);
	cout << "Въведете ЕГН: "; cin.getline(EGN, 11);
}

void CPerson::display() {
	cout << "Име: " << name << endl;
	cout << "ЕГН: " << EGN << endl;
}

void CCollegian::getData() {
	CPerson::getData();
	cout << "Въведете университет: "; cin.getline(university, 50);
	cout << "Въведете факултет: "; getline(cin, faculty);
	cout << "Въведете специалност: "; getline(cin, speciality);
	cout << "Въведете броя събрани точки от студента: "; cin >> totalPointsCollegian;
	cout << "Въведете годините на студента: "; cin >> age;
	cin.ignore();
}

void CCollegian::display() {
	cout << "---Студент---" << endl;
	CPerson::display();
	cout << "Университет: " << university << endl;
	cout << "Факултет: " << faculty << endl;
	cout << "Специалност: " << speciality << endl;
	cout << "Брой събрани точки от студента: " << totalPointsCollegian << endl;
	cout << "Години на студента: " << age << endl;
	cout << endl;
}

void CStudent::getData() {
	CPerson::getData();
	cout << "Въведете населено място: "; getline(cin, populatedPlace);
	cout << "Въведете училище: "; getline(cin, school);
	cout << "Въведете клас: "; cin >> grade;
	cout << "Въведете броя събрани точки от ученика: "; cin >> totalPointsStudent;
	cin.ignore();
}

void CStudent::display() {
	cout << "---Ученик---" << endl;
	CPerson::display();
	cout << "Населено място: " << populatedPlace << endl;
	cout << "Училище: " << school << endl;
	cout << "Клас: " << grade << endl;
	cout << "Брой събрани точки от ученика: " << totalPointsStudent << endl;
	cout << endl;
}

int main() {
	system("chcp 1251");
	CPerson* P[30];
	int N = 0; 
	int operation;
	CCollegian m;
	int numCollegians = 0; CCollegian group[10]; 
	do {
		cout << "\nМЕНЮ НА ИЗПЪЛНЯВАНИТЕ ОПЕРАЦИИ:\n";
		cout << "[1] - добавя към масива данните на пореден студент\n";
		cout << "[2] - добавя към масива данните за пореден ученик\n";
		cout << "[3] - извежда всички въведени данни\n";
		cout << "[4] - извежда данните на студентите мъже над 20 г. от зададен университет\n";
		cout << "[5] - създава масив с данните на всички ученици от зададено училище\n";
		cout << "Посочете операция или 0 за край: "; cin >> operation; cout << endl;
		switch (operation) {
		case 1:
			cout << "Въведете данните на студента: " << endl;
			P[N] = new CCollegian();
			P[N] -> getData();
			N++;
			break;
		case 2:
			cout << "Въведете данните на ученика: " << endl;
			P[N] = new CStudent();
			P[N] -> getData();
			N++;
			break;
		case 3:
			cout << "Всички студенти и ученици: " << endl;
			cout << endl;
			for (int i = 0; i < N; i++) {
				P[i] -> display();
			}
			break;
		case 4:
			cout << "Данните на студентите мъже над 20 г. от зададен университет: ";
			cout << endl;
				m.male20Collegian(numCollegians, group); break;
		}
	} while (operation != 0);

	for (int i = 0; i < N; i++) {
		delete P[i];
	}

	return 0;
}

 

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.