akuBest 0 Report post Posted September 1, 2004 a'kum. camni, aku ada problem sket. andaikan ada 5 no integer. pastu, aku nak cari bil no yang sama dalam array tu. contoh aku ada 1,1,1,2,2. so kat situ no1 ada 3 dan no 2 ada dua kan? kalo string senang nak wat. tapik yg ni dah puah buat, takleh gak. ni program yg aku dah wat, ada betul sket, tapi nak mintak pandangan ler.... hehehehe #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<alloc.h> int main(void) { int *pelajar, *sama; int i, j, bil, tinggi; clrscr(); printf("Masukkan bilangan pelajar : "); scanf("%d", &bil); if(bil<1) { printf("Bilangan data <1 "); exit(1); } pelajar = (int *) malloc(bil * sizeof(int)); sama = (int *) malloc(bil * sizeof(int)); if(pelajar == NULL) { printf("Ralat peruntukan ruang"); exit(1); } printf("Masukkan data\n"); for(i=0; i<bil; i++) { scanf("%d", &pelajar[i]); sama[i] = 1; } for(i=0; i<bil; i++) { tinggi = pelajar[i]; for(j=1; j<bil; j++) { if(pelajar[j] == tinggi) { sama[i]++; } } printf("%d\t%d\n", tinggi, sama[i]); } free(pelajar); } aturcara tu aku wat peruntukan ruang secara dinamik sbb jumlah bil no yang user nak bergantung pada depa. bila aku run aturcara tu, aku masuk input 5, then aku masukkan 1 1 1 2 1 sbg input. dia leh detect 1 ada 4, tapi berulang sbb outputnya aku wat dlm gelung for. yg 2 tu dia kata 2 sbb initial value tu aku wat=1. so, ader tak cara lagik simple? aku tgh godek2 lagik ni..... Quote Share this post Link to post Share on other sites
raihan 0 Report post Posted September 2, 2004 (edited) i rasa u kena guna data structure, betul ke??tak kira u kalau u nak dia style camner, it'sdepend to you. ni kalau u nak secara pro,ni kalau orang tu input ikut berapa banyak yangdia suka.. psal... kita tak tahu berapa banyak bilanganunik data yg user input...so struct dia lebih kurang camni...typedef int typedata; struct examplestat { typedata data; int number; // struct examplestat *prev; struct examplestat *next; } *head, *tail; .... tapi kalau u memang nak user tu input ada lima je, so, baik sediakan variable stack[5] je kan.. satu yang akan simpan unik data, satu lagi dia akan simpan bilangan data. typedata data[5]; int number[5]; Edited September 2, 2004 by raihan Quote Share this post Link to post Share on other sites
akuBest 0 Report post Posted September 2, 2004 a'kum. ermmm... mmg input tu tak terhad, sbb bergantung pada user. sebab tu aku pakai malloc. malloc tu fungsi sediakan ruang secara dinamik. maksudnya dia create berapa banyak ruang berdasarkan kehendak user. contoh kalo user masok 5, so, dia akan create 5 ruang, kalo user masukkan 10, dia akan sediakan 10 ruang, mengikut jenis data user. so aku rasa benda ni lebih kurang jer kot ngan struct tu walaupon struct tu lebih elok kot. ???? yg jadik masalahnya skang, aku takleh wat lagik nak tentukan berapa bilangan satu-satu no dalam tatasusunan yang user masukkan. tgh mencuba lagik..... Quote Share this post Link to post Share on other sites
raihan 0 Report post Posted September 2, 2004 (edited) ops, cara u pun betul jugak...pening pening sikit ni ~~~jap ek, masalah yg u proses utk statistik,ikut pendapat i..i edit lagi, psal ada kesilapan nih, lepas kurang sibuk sikit ~// declaration int *input; int index = 0; // input input = (int *)malloc(bil * sizeof(int)); /*******/ for(i=0;i<bil;i++) scanf("%d",&input[i]); // proses for(i=0; i<bil; i++) { for(j=0;j<index;j++) { if(pelajar[j]==input[i]) { sama[j]++; break; } } if(j>=index) { pelajar[j] = input[i]; sama[j] = 1; } } // output for(i=0;i<=index;i++) printf("%d:%d\n",pelajar[i],sama[i]);test la, eh.. kalau ada error tu fixkan lagi.. bz sikit ni, sorri Edited September 3, 2004 by raihan Quote Share this post Link to post Share on other sites
akuBest 0 Report post Posted September 2, 2004 bengang tul la.... server down jer...... (oppss tak masuk topik nih) aku dah try , tapi tak betul. aku dah betulkan aturcara aku yg 1st ari tu. dah leh jalan, tapi ada sket bug kat paparan output. #include<stdio.h> #include<alloc.h> #include<stdlib.h> #include<conio.h> int main(void) { int *pelajar; int i, j, bil, sama; clrscr(); printf("Masukkan bilangan pelajar : "); scanf("%d", &bil); pelajar = (int *)malloc(bil * sizeof(int)); if(pelajar == NULL) { printf("Ralat peruntukan ruang\n"); exit(1); } printf("Masukkan data : \n"); for(i=0; i<bil; i++) scanf("%d", &pelajar[i]); printf("\nTinggi\tBilangan\n"); for(i=0; i<bil; i++) { sama = 0; for(j=0; j<bil; j++) { if(pelajar[j] == pelajar[i]) sama++; else continue; } printf("%4d\t%4d\n", pelajar[i], sama); } free(pelajar); getch(); return 0; } contoh interaksi diaMasukkan bilangan pelajar : 5Masukkan data :11232Tinggi Bilangan 1 2 1 2 2 2 2 2 3 1dia dah bleh detect bil nombor tu, tapik, camner aku nak buat dia tak berulang camtu? kalo aku tak bubuh dlm gelung, dia takleh kuar output lak. ada cadangan???? Quote Share this post Link to post Share on other sites
raihan 0 Report post Posted September 2, 2004 (edited) ye~ adeh~u punya masalah adalah kerana u gabungblok proses data dengan blok output@paparandalam satu blok gelung, adeh~jadi ke~pengumpulan maklumat jenis u punya problem nitak boleh dibuat dalam satu gelung je bersama paparanoutput ... cuba u fikirsehabis mungkin perjalanan proses dalam kotak kepala ubasic problem solving nih, adeh la~so, wat la cam biasa,input => proses => output Edited September 2, 2004 by raihan Quote Share this post Link to post Share on other sites
mykk 0 Report post Posted September 2, 2004 #include <stdio.h> #define bil 5 int main(void) { int Pelajar[bil] = {1,1,2,3,2}; int Bilangan[bil] = {0}; int i = 0; int j = 0; int temp; for (i = bil - 1; i > 0; i--) { for (j = 0; j < i; j++) { if (Pelajar[j] > Pelajar[j + 1]) { temp = Pelajar[j]; Pelajar[j] = Pelajar[j + 1]; Pelajar[j + 1] = temp; } } } for(i = 0, j = 0; i < bil;) { temp = Pelajar[i]; while (temp == Pelajar[i] && i < bil) { Bilangan[j]++; i++; } j = i; } printf("\nTinggi\tBilangan\n"); for(i = 0; i < bil; i++) { if (Bilangan[i] != 0) printf("%d\t%d\n", Pelajar[i], Bilangan[i]); } } Quote Share this post Link to post Share on other sites
raihan 0 Report post Posted September 2, 2004 hehe~ i nampak u ada wat swap variable..kalau i kan, takyah tambah satu lagi variable temp'so, it'll be camni.. guna teknik XORPelajar[j] = Pelajar[j] ^ Pelajar[j + 1]; Pelajar[j + 1] = Pelajar[j] ^ Pelajar[j + 1]; Pelajar[j] = Pelajar[j] ^ Pelajar[j + 1];anyway.. mykk, member ni tanya soklan yg gunadynamic variable la ~ hehe~ Quote Share this post Link to post Share on other sites
mykk 0 Report post Posted September 3, 2004 anyway.. mykk, member ni tanya soklan yg gunadynamic variable la ~ hehe~ Itu hanya untuk beri idea secara umum.Kalau untuk aplikasi sebenar guna binary tree not array(either dynamic or static) Quote Share this post Link to post Share on other sites
akuBest 0 Report post Posted September 3, 2004 A'kum... tima kasih bebanyak kengkawan semua. aku dah dpt buat. aku guna idea mykk tu. knp la aku tak terpikir suma tu..... tima kasih..... aku ubah sket jer.. #include<stdio.h> #include<conio.h> #include<stdlib.h> #include<alloc.h> int main(void) { int *pelajar, *sama; int i, j, bil, tinggi; clrscr(); printf("Masukkan bilangan pelajar : "); scanf("%d", &bil); if(bil<1) { printf("Bilangan data <1 "); exit(1); } pelajar = (int *) malloc(bil * sizeof(int)); // ingatan dinamik sama = (int *) malloc(bil * sizeof(int)); if(pelajar == NULL) { printf("Ralat peruntukan ruang"); exit(1); } printf("Masukkan data\n"); for(i=0; i<bil; i++) { scanf("%d", &pelajar[i]); sama[i] = 0; } for (i = bil - 1; i > 0; i--) //mykk punya kod utk swap { for (j = 0; j < i; j++) { if (pelajar[j] > pelajar[j + 1]) { tinggi = pelajar[j]; pelajar[j] = pelajar[j + 1]; pelajar[j + 1] = tinggi; } } } for(i=0; i<bil;) // ni lbh krg jer ngan cara mykk { j = i; tinggi = pelajar[i]; while(tinggi == pelajar[i] && i < bil) // mykk punya { sama[j]++; i++; } j = i; } printf("\nTinggi\tBilangan\n"); // mykk punya for(i=0; i<bil; i++) { if(sama[i] != 0) printf("%4d\t%4d\n",pelajar[i],sama[i]); } free(pelajar); free(sama); getch(); } tima kasih suma.... Quote Share this post Link to post Share on other sites
raihan 0 Report post Posted September 3, 2004 wow~ u ada cara binary tree for this problem solving.leh la terangkan kat sini, camner u punya cara..i ingat yg binary tree ni, leh la gak utk ai based solving,tapi tak pernah cuba utk kekerapan nye problem lagi...kiter share share kat sini ek ~~akubestada cara lagi tu, usha lagi camner cara utk mantapkanart of programming code u tu~ ek. Quote Share this post Link to post Share on other sites
mykk 0 Report post Posted September 3, 2004 #include <stdio.h> #include <stdlib.h> struct Pelajar { int Nombor; int Bilangan; struct Pelajar *kiri; struct Pelajar *kanan; }; typedef struct Pelajar *PELAJAR; PELAJAR Insert(PELAJAR P, int num) { if (P == NULL) { P = malloc(sizeof (*P)); if(P == NULL) { printf("\nInsufficient Memory\n"); exit(1); } P->Nombor = num; P->Bilangan = 1; P->kiri = NULL; P->kanan = NULL; } else if(num < P->Nombor) P->kiri = Insert(P->kiri, num); else if(num > P->Nombor) P->kanan = Insert(P->kanan, num); else P->Bilangan++; return P; } void Print(PELAJAR P) { if(P != NULL) { Print(P->kiri); printf("%d%\t%d\n", P->Nombor, P->Bilangan); Print(P->kanan); } } void Destroy(PELAJAR P) { if(P != NULL) { Destroy(P->kiri); Destroy(P->kanan); free(P); } } int main(void) { const int bil = 5; PELAJAR P; int temp; int i; P = NULL; for(i = 0; i < bil; i++) { scanf("%d", &temp); P = Insert(P,temp); } printf("\nTinggi\tBilangan\n"); Print(P); Destroy(P); } takada error checking Quote Share this post Link to post Share on other sites
raihan 0 Report post Posted September 3, 2004 (edited) aa~ ye ~ ye ~tak terfikir lak, setiap entitinya leh tersusun dengancara binary tree, dua kerja leh wat dalam satu fungsi,best ar ko~tapi kan, error handling u dah ada, cuma ada sikit tertinggal,struct PELAJAR { int Nombor; int Bilangan; struct Pelajar *kiri; struct Pelajar *kanan; } *parent; /*****************/ . if(P == NULL) { printf("\nInsufficient Memory\n"); Destroy(parent); exit(1); } . /*****************/ .main Insert(parent,temp); . u punya PELAJAR P; patut tukar ke PELAJAR *P; sebenarnya.bukan dengan P = NULL; yg selambe deh,# NULL is 4 bytes (32bits)so, bila P = NULL; // sama denganP.Nombor = NULL; // kena faham konsep pointer nihadeh la~ salam ceria Edited September 3, 2004 by raihan Quote Share this post Link to post Share on other sites
Ancient One 3 Report post Posted September 4, 2004 mykk says struct Pelajar { int Nombor; int Bilangan; struct Pelajar *kiri; struct Pelajar *kanan; }; typedef struct Pelajar *PELAJAR; not struct PELAJAR Quote Share this post Link to post Share on other sites
raihan 0 Report post Posted September 4, 2004 hihi~ sorry.. tak perasan la ~i just want to share knowledge ek, jangan marah ~jahat tul saya ni.. tahu nak kritik je kan.. ~# lama tak pegang c la, byk careless. tinggal teori je adeh la ~ Quote Share this post Link to post Share on other sites
akuBest 0 Report post Posted September 6, 2004 A'kum... wah terrer arr korang, ni nak lajor lagik nih.... tima kasih sumaaa.......akubestada cara lagi tu, usha lagi camner cara utk mantapkanart of programming code u tu~ ek. okiess.... tqaku ada terbaca pasal binary tree nak solve kan problem nih, tapi memandangkan dia cuma nak selesaikan problem ni guna cam yg aku buat tu jer, aku tak go through sgt pasal tu... mmmm.. tu dlm data structure kan? anyway, bnyk lagi aku kena lajor.. Quote Share this post Link to post Share on other sites