BG Development


  Reply to this topicStart new topicStart Poll

> C++ помощ
DeathHourbg
Публикувано на: 24-05-2022, 10:32
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 4
Регистриран на: 10.11.21



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

моят код:

CODE

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

class Employee {
private:
   string name;
   string EGN;
   float payment;
   int workingdays;
public:
   void setData();
   void display();
   string getName();
   float getpayment();
   int getWorkingdays();
   int getPol();
};


string Employee::getName() {
   return name;
}

float Employee::getpayment() {
   return payment;
}

int Employee::getWorkingdays() {
   return workingdays;
}

// Член - функция за намиране пола
int Employee::getPol() {
   char B[2];;
   strncpy(b, EGN + 8, 1); b[1] = '\0';
   return atoi(B) % 2;
}

void Employee::setData() {
   cin.ignore();
   cout << "Въведи име: "; getline(cin, name);
   cout << "Въведи ЕГН: "; getline(cin, EGN);
   cout << "Въведи дневно заплащане: "; cin >> payment;
   cout << "Въведи брой отработени дни през месеца: "; cin >> workingdays;
}

void Employee::display() {
   cout << "Име: " << name << endl;
   cout << "ЕГН: " << EGN << endl;
   cout << "Дневно заплащане: " << payment << endl;
   cout << "Брой отработени дни: " << workingdays << endl;
}

int main() {
   system("chcp 1251");
   Employee employees[20];
   int countST = 0;
   char codeOp;
   do {
       cout << "1 - добавя данни за нов работник " << endl;
       cout << "2 - извежда всички въведени данни " << endl;
       cout << "3 - извежда имената на мъжете с най-малко със заработка между 300 и 500 лв " << endl;
       cout << "4 - създава нов масив с имената и за жените със заработка над 300 лв, родени през посочен месец. " << endl;
       cout << "Посочете операция или 0 за край: " << endl;
       cin >> codeOp;
       switch (codeOp) {
       case'0':
           break;
       case'1': employees[countST++].setData();
           break;
       case'2':cout << "Списък на всички работници: " << endl;
           for (int i = 0; i < countST; i++) {
               employees[i].display();
           }
           break;
       case'3':
           break;
       default: cout << "Error! " << endl;
           break;
       }
   } while (codeOp != 0);
}


Как да намеря пола от ЕГН и да изведа имената на мъжете и отделно на жените?

Това мнение е било редактирано от SuN на 24-05-2022, 16:37
PMEmail Poster
Top
dvader
Публикувано на: 24-05-2022, 10:55
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 5003
Регистриран на: 12.07.05



Предпоследната цифра на ЕГН-то е четна за мъжете и нечетна за жените.


--------------------
I find your lack of faith disturbing
PM
Top
dedal
Публикувано на: 24-05-2022, 12:58
Quote Post



Име: Григор Колев
Група: Потребител
Ранг: Активен

Мнения: 164
Регистриран на: 17.11.10



QUOTE (DeathHourbg @ 24-05-2022, 10:32)
Да се състави програма за нуждите на производствена организация, която съхранява в масив следните данни за работниците:
-    име;
-    ЕГН;
-    размер на дневното заплащане;
-    брой на отработени дни през месеца;
и извършва следните операции, избирани от меню:
-    добавя към масива данните на нов работник;
-    извежда всички въведени данни;
-    извежда имената на мъжете с най-малко със заработка между 300 и 500 лв;
-    създава нов масив с имената и за жените със заработка над 300 лв, родени през посочен месец.

моят код:

#include <iostream>
#include <stdlib.h>
#include <string>
using namespace std;

class Employee {
private:
    string name;
    string EGN;
    float payment;
    int workingdays;
public:
    void setData();
    void display();
    string getName();
    float getpayment();
    int getWorkingdays();
    int getPol();
};


string Employee::getName() {
    return name;
}

float Employee::getpayment() {
    return payment;
}

int Employee::getWorkingdays() {
    return workingdays;
}

// Член - функция за намиране пола
int Employee::getPol() {
    char B[2];;
    strncpy(b, EGN + 8, 1); b[1] = '\0';
    return atoi(icon_cool.gif % 2;
}

void Employee::setData() {
    cin.ignore();
    cout << "Въведи име: "; getline(cin, name);
    cout << "Въведи ЕГН: "; getline(cin, EGN);
    cout << "Въведи дневно заплащане: "; cin >> payment;
    cout << "Въведи брой отработени дни през месеца: "; cin >> workingdays;
}

void Employee::display() {
    cout << "Име: " << name << endl;
    cout << "ЕГН: " << EGN << endl;
    cout << "Дневно заплащане: " << payment << endl;
    cout << "Брой отработени дни: " << workingdays << endl;
}

int main() {
    system("chcp 1251");
    Employee employees[20];
    int countST = 0;
    char codeOp;
    do {
        cout << "1 - добавя данни за нов работник " << endl;
        cout << "2 - извежда всички въведени данни " << endl;
        cout << "3 - извежда имената на мъжете с най-малко със заработка между 300 и 500 лв " << endl;
        cout << "4 - създава нов масив с имената и за жените със заработка над 300 лв, родени през посочен месец. " << endl;
        cout << "Посочете операция или 0 за край: " << endl;
        cin >> codeOp;
        switch (codeOp) {
        case'0':
            break;
        case'1': employees[countST++].setData();
            break;
        case'2':cout << "Списък на всички работници: " << endl;
            for (int i = 0; i < countST; i++) {
                employees[i].display();
            }
            break;
        case'3':
            break;
        default: cout << "Error! " << endl;
            break;
        }
    } while (codeOp != 0);
}

Как да намеря пола от ЕГН и да изведа имената на мъжете и отделно на жените?

От ЕГН можеш да намериш пол, дата на раждане, област на раждане и поредно бебе на деня като е добре и да чекнеш за да няма грешки.
Последната цифра е чек.


На C нямам идея как е, но на python e от сорта:

CODE

if egn[8] % 2 > 0:
   man = False
else:
   man = True

coef = [2,4,8,5,10,9,7,3,6]
sum = 0.0

for i in range(0, len(egn)):
   if i < 9:
       sum += egn[i] * coef[i]
sum = sum % 11
sum = int(sum)
if sum == 10:
   sum = 0
if sum != egn[9]:
   invalid = True
else:
   invalid = False


Това мнение е било редактирано от dedal на 24-05-2022, 13:01
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0