Mun koodi

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
2.2 kB
2
Indexable
Never
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 30

typedef struct Henkilo
{
    char etunimi[MAX];
    int ika;
} HENKILO;

void vertaileTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko2);
void kopioiTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko3);
HENKILO *varaaMuisti(HENKILO *pTaulukko);

int main(void)
{
    HENKILO hlot1, hlot2, hlot3;
    HENKILO *pHlot1 = &hlot1, *pHlot2 = &hlot2, *pHlot3 = &hlot3;

    // Ensimmäisen henkilön tiedot
    printf("Anna ensimmäisen henkilön etunimi: ");
    scanf("%s", pHlot1->etunimi);
    getchar();
    printf("Anna ensimmäisen henkilön ikä: ");
    scanf("%d", &pHlot1->ika);
    getchar();

    // Toisen henkilön tiedot
    printf("Anna toisen henkilön etunimi: ");
    scanf("%s", pHlot2->etunimi);
    getchar();
    printf("Anna toisen henkilön ikä: ");
    scanf("%d", &pHlot2->ika);
    getchar();

    vertaileTietueet(pHlot1, pHlot2);
    pHlot3 = varaaMuisti(pHlot3);

    kopioiTietueet(pHlot1, pHlot3);
    free(pTaulukko);
    printf("Muisti vapautettu.\n");

    printf("Kiitos ohjelman käytöstä.\n");
    return 0;
}

void vertaileTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko2)
{

    if (strcmp(pTaulukko1->etunimi, pTaulukko2->etunimi) == 0 && pTaulukko1->ika == pTaulukko2->ika)
    {
        printf("Annetut tiedot ovat samat.\n");
    }
    else
    {
        printf("Annetut tiedot eivät ole samoja.\n");
    }
    return;
}

void kopioiTietueet(HENKILO *pTaulukko1, HENKILO *pTaulukko3)
{

    strcpy(pTaulukko1->etunimi, pTaulukko3->etunimi);
    pTaulukko3->ika = pTaulukko1->ika;
    if (strcmp(pTaulukko1->etunimi, pTaulukko3->etunimi) == 0 && pTaulukko1->ika == pTaulukko3->ika)
    {
        printf("Kopioinnin jälkeen tietueiden tiedot ovat samoja.\n");
    }
    if (pTaulukko1 != pTaulukko3)
    {
        printf("Kopioinnin jälkeen tietueiden osoitteet eivät ole samoja.\n");
    }

    return;
}

HENKILO *varaaMuisti(HENKILO *pTaulukko)
{
    if ((pTaulukko = (HENKILO *)malloc(sizeof(HENKILO))) == NULL)
    {
        perror("Muistin varaus epäonnistui.\n");
        exit(0);
    }
    return pTaulukko;
}