Mun koodi
unknown
c_cpp
3 years ago
2.2 kB
5
Indexable
#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; }
Editor is loading...