Jump to content
Sign in to follow this  
abel_nightroad

Soalan Mengenai Data Struct

Recommended Posts

askum n samlam sejahtera kepada korang sume...aku nak mintak tolong korang untuk solve kan masalah aku ni...aku dah hampir siap nak meng"complete"kan program aku ni...masalahnya...aku kene tambah beberapa elemen agi....n aku tak reti nak wat cmne dah...bleh tolong tak....

//ni keje aku,cume nak tambah... Count Records In The List

Find The Biggest Number In The List

Find The Smallest Number In The List

Find The Sum In The List

Find the averange in the list //

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

typedef struct nod {

int noPekerja;

char nama[10];

float gaji;

struct nod *next;

} NOD;

NOD *senarai, *locPtr, *preNod;

void ciptaSenarai(), tambahRekod(int nomPek, char namaPek[], float gajiPek), hapusRekod(), inputMaklumat(), paparRekod();

int gelintarRekod(int nPekerja), senaraiKosong(), inputNoPekerja();

char namaPekerja[10];

float gajiPekerja;

main()

{

int pilih, nomborPekerja;

ciptaSenarai();

do {

clrscr();

printf("\n[1] Tambah Rekod");

printf("\n[2] Hapus Rekod");

printf("\n[3] Gelintar Rekod");

printf("\n[4] Papar Semua Rekod");

printf("\n[5] Keluar Sistem");

printf("\n\nMasukkan pilihan anda : ");

scanf("%d",&pilih);

switch (pilih) {

case 1: nomborPekerja = inputNoPekerja();

if (gelintarRekod(nomborPekerja)) {

printf("\nRekod telah wujud ... Tekan [ENTER]");

getche();

}

else {

printf("\nNama : ");

scanf("%s",namaPekerja);

printf("\nGaji : ");

scanf("%f",&gajiPekerja);

tambahRekod(nomborPekerja, namaPekerja, gajiPekerja);

}

break;

case 2: nomborPekerja = inputNoPekerja();

if (!gelintarRekod(nomborPekerja)) {

printf("\nRekod tiada ... Tekan [ENTER]");

getche();

}

else {

hapusRekod();

printf("\nNama : %s", namaPekerja);

printf("\nGaji : %.2f", gajiPekerja);

printf("\n\nRekod di atas telah dihapus ... Tekan [ENTER]");

getche();

}

break;

case 3: nomborPekerja = inputNoPekerja();

if (gelintarRekod(nomborPekerja)) {

printf("\nNama : %s", locPtr->nama);

printf("\nGaji : %.2f", locPtr->gaji);

printf("\n\nTekan kunci [ENTER]");

getche();

}

else {

printf("\nRekod tidak wujud ... Tekan [ENTER]");

getche();

}

break;

case 4: if (senaraiKosong()) {

printf("\nSenarai kosong ... Tekan [ENTER]");

getche();

}

else {

paparRekod();

printf("\n\nTekan kunci [ENTER]");

getche();

}

break;

case 5: exit(1);

}

} while (pilih != 5);

return(0);

}

void ciptaSenarai()

{

senarai = NULL;

}

int senaraiKosong()

{

if (senarai == NULL)

return(1);

else

return(0);

}

int gelintarRekod(int nPekerja)

{

int jumpa = 0;

locPtr = senarai;

preNod = NULL;

if (senaraiKosong())

return(jumpa);

else

while ((locPtr != NULL) && (!jumpa))

if (locPtr->noPekerja == nPekerja)

jumpa = 1;

else { // baca nod seterusnya

preNod = locPtr;

locPtr = locPtr->next;

}

return(jumpa);

}

int inputNoPekerja()

{

int nom;

printf("\nNombor : ");

scanf("%d",&nom);

return(nom);

}

void tambahRekod(int nomPek, char namaPek[], float gajiPek)

{

NOD *nodBaru;

nodBaru = (NOD*) malloc (sizeof(NOD));

nodBaru->noPekerja = nomPek;

strcpy(nodBaru->nama,namaPek);

nodBaru->gaji = gajiPek;

nodBaru->next = NULL;

if (senaraiKosong()) // jika senarai kosong tambah pada awal senarai

senarai = nodBaru;

else // tambah pada belakang senarai

preNod->next = nodBaru;

}

void hapusRekod()

{

strcpy(namaPekerja,locPtr->nama);

gajiPekerja = locPtr->gaji;

if (preNod == NULL) // jika senarai hanya ada satu item maka setkan senarai kosong

senarai = NULL;

else // alih pautan antara nod

preNod->next = locPtr->next;

free(locPtr);

}

void paparRekod()

{

NOD *papar;

papar = senarai;

while (papar != NULL) {

printf("\n%d %s %.2f",papar->noPekerja,papar->nama,papar->gaji);

papar = papar->next;

}

}

pertolongan anda amat dialu-alukan..please help me....

Share this post


Link to post
Share on other sites

sebegini punya kompleks punya coding tak nampak ke kat mana nak kira jumlah yg direkodkan. mcm tidak percaya pulak hamba.

utk yg kira list. functionnya dah ada kat atas.. ambik skit dan modify jer pada perasaan saya.

void paparRekod()
{
NOD *papar;

papar = senarai;
while (papar != NULL) {
printf("\n%d %s %.2f",papar->noPekerja,papar->nama,papar->gaji);
papar = papar->next;
}
}
tukar jadi
int kiraRekod()
{
    NOD *papar;
    int jumlah =0;
    papar = senarai;
    while (papar != NULL) 
    {
        jumlah++;
        papar = papar->next;
    }
    return jumlah;

}

satu lagi pesanan yg sangat berguna, sila gunakan [ code ] utk paste coding anda di kemudian hari. indentation penting sangat utk baca code.

p/s: kod yg kompleks tak semestinya good designed ;)

Share this post


Link to post
Share on other sites

sebegini punya kompleks punya coding tak nampak ke kat mana nak kira jumlah yg direkodkan. mcm tidak percaya pulak hamba.

utk yg kira list. functionnya dah ada kat atas.. ambik skit dan modify jer pada perasaan saya.

void paparRekod()
{
NOD *papar;

papar = senarai;
while (papar != NULL) {
printf("\n%d %s %.2f",papar->noPekerja,papar->nama,papar->gaji);
papar = papar->next;
}
}
tukar jadi
int kiraRekod()
{
    NOD *papar;
    int jumlah =0;
    papar = senarai;
    while (papar != NULL) 
    {
        jumlah++;
        papar = papar->next;
    }
    return jumlah;

}

satu lagi pesanan yg sangat berguna, sila gunakan [ code ] utk paste coding anda di kemudian hari. indentation penting sangat utk baca code.

p/s: kod yg kompleks tak semestinya good designed ;)

terima kasih zeph...sy dah siap dah keje ni...thanks a lot...bye2..:)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...