abel_nightroad 0 Report post Posted August 19, 2006 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.... Quote Share this post Link to post Share on other sites
encik pot pet 0 Report post Posted August 29, 2006 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 Quote Share this post Link to post Share on other sites
abel_nightroad 0 Report post Posted September 2, 2006 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.. Quote Share this post Link to post Share on other sites