Untitled
unknown
plain_text
2 years ago
3.4 kB
4
Indexable
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <time.h> int validareCNP(const char *cnp) { int lungimeCNP = strlen(cnp); if (lungimeCNP != 13) { return 0; } for (int i = 0; i < lungimeCNP; ++i) { if (!isdigit(cnp[i])) { return 0; } } return 1; } void afisareCNP(const char *cnp) { printf("CNP-ul este: %s\n", cnp); } void determinareSex(const char *cnp) { int sex = cnp[0] - '0'; if (sex == 1 || sex == 3 || sex == 5 || sex == 7) { printf("Persoana este de sex masculin.\n"); } else if (sex == 2 || sex == 4 || sex == 6 || sex == 8) { printf("Persoana este de sex feminin.\n"); } else { printf("Sexul nu este specificat corect.\n"); } } void afisareDataNasterii(const char *cnp) { char an[3], luna[3], zi[3]; strncpy(an, cnp + 1, 2); an[2] = '\0'; strncpy(luna, cnp + 3, 2); luna[2] = '\0'; strncpy(zi, cnp + 5, 2); zi[2] = '\0'; printf("Data de nastere este: %s.%s.19%s\n", zi, luna, an); } void calculVarsta(const char *cnp) { char an[3], luna[3], zi[3]; strncpy(an, cnp + 1, 2); an[2] = '\0'; strncpy(luna, cnp + 3, 2); luna[2] = '\0'; strncpy(zi, cnp + 5, 2); zi[2] = '\0'; int an_int = atoi(an); int luna_int = atoi(luna); int zi_int = atoi(zi); time_t t = time(NULL); struct tm *tm_curent = localtime(&t); int varsta = tm_curent->tm_year + 1900 - (1900 + an_int); if ((tm_curent->tm_mon + 1) < luna_int || ((tm_curent->tm_mon + 1) == luna_int && tm_curent->tm_mday < zi_int)) { varsta--; } if (varsta < 0 || varsta > 120) { printf("Varsta persoanei nu este realista.\n"); } else { printf("Varsta persoanei este: %d ani\n", varsta); } } void calculSumaCifrelor(const char *cnp) { int suma = 0; for (int i = 0; i < 12; ++i) { suma += cnp[i] - '0'; } printf("Suma cifrelor din CNP este: %d\n", suma); printf("Suma in baza 2: %o\n", suma); // Afisarea in baza 2 (octal) printf("Suma in baza 8: %o\n", suma); // Afisarea in baza 8 (octal) printf("Suma in baza 10: %d\n", suma); // Afisarea in baza 10 (zecimal) printf("Suma in baza 16: %X\n", suma); // Afisarea in baza 16 (hexazecimal) } int main() { char cnp[14]; int optiune; do { printf("\nAlegeti o optiune:\n"); printf("0. Iesire\n"); printf("1. Afisare CNP\n"); printf("2. Determinare sex\n"); printf("3. Afisare data de nastere\n"); printf("4. Calcul varsta\n"); printf("5. Calcul suma cifrelor din CNP\n"); printf("Optiune: "); scanf("%d", &optiune); switch (optiune) { case 0: printf("Iesire...\n"); break; case 1: printf("Introduceti CNP-ul: "); scanf("%s", cnp); if (validareCNP(cnp)) { afisareCNP(cnp); } else { printf("CNP-ul introdus nu este valid!\n"); } break; case 2: if (validareCNP(cnp)) { determinareSex(cnp); } else { printf("Nu s-a introdus inca un CNP valid!\n"); } break; case 3: if (validareCNP(cnp)) { afisareDataNasterii(cnp); } else { printf("Nu s-a introdus inca un CNP valid!\n"); } break; case 4: if (validareCNP(cnp)) { calculVarsta(cnp); } else { printf("Nu s-a introdus inca un CNP valid!\n"); } break; case 5: if (validareCNP(cnp)) { calculSumaCifrelor(cnp); } else { printf("Nu s-a introdus inca un CNP valid!\n"); } break; default: printf("Optiune invalida. Reincercati.\n"); } } while (optiune != 0); return 0; }
Editor is loading...
Leave a Comment