;

Welcome, Guest. Please login or register.
Did you miss your activation email?

Username: Password:
Pages: 1 [2] 3   Go Down

Author Topic: [Programming] Menghitung Kemunculan Karakter  (Read 6069 times)

fang_mei

  • Senior Sailor
  • ******
  • Keong: 0
  • Offline Offline
  • Posts: 13.472
  • Mana sapu kesayangan gue??? Oh, ada di gudang deng
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #10 on: January 05, 2008, 09:20:28 pm »

mas, ini apa ya? Baru tau gue
Code: [Select]
for (p++; *p && **p; )
BTW, ternyata mas teri pake cara cek mnrt Ascii  :)
Awalnya gue juga terpikir ke sana... tp itu pun kalo yg diketik si user emang cuma A-Z.... lah arie ga ngasih batasan kalo emang yg boleh diinput user cuma A-Z... makanya gue hindari Ascii (jd inget jebakan asdos gue)
Logged
Find me on FS : - J'ice - HaLF
    [im

mastery

  • Global Moderator
  • Senior Sailor
  • *****
  • Keong: 0
  • Offline Offline
  • Posts: 26.128
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #11 on: January 05, 2008, 11:24:38 pm »

kalau console tanpa ekstensi IME apa bisa input selain ASCII ama IBM Extended? ;)

yg versi 2 revisi 1 malah bisa output seluruh karakter dari 0 sampe 255, tinggal ngerubah batas printing aja :)

arie26

  • Senior Sailor
  • ******
  • Keong: 0
  • Offline Offline
  • Posts: 13.241
  • *No More Me*
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #12 on: January 06, 2008, 09:23:51 am »

ndak ada batasan, koq. Bwat gw kalo mriksa jawaban seh, yang penting kasi' asumsi di bawahnya dan selama ndak jauh melenceng dari soal aja ;) lah... koq jadi mbahas gw kalo ngajar, yak? ;D ;D
Logged
Guys, thanks for everything. Gw pamit... nice to know/meet you all

If you only knew.... those lyrics are 4 U....

mastery

  • Global Moderator
  • Senior Sailor
  • *****
  • Keong: 0
  • Offline Offline
  • Posts: 26.128
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #13 on: January 06, 2008, 10:48:30 am »

ndak ada batasan, koq. Bwat gw kalo mriksa jawaban seh, yang penting kasi' asumsi di bawahnya dan selama ndak jauh melenceng dari soal aja ;) lah... koq jadi mbahas gw kalo ngajar, yak? ;D ;D

bukan gitu Rie... trus terang, aku jadi mikir yg dimaksud fangmei dengan ASCII tuh yg gimana?

kan 0-127 itu 7-bit ASCII, tipe datanya char, (8-bit total: 7-bit data, 1 sign-bit)
0-255 itu ASCII Extended, tipe datanya unsigned char (8-bit kepakai semua)

di kodenya fangmei jelas² dia pakai tipe data char, so berarti juga berasumsi datanya ASCII kan? ;)
kalau berasumsi datanya ASCII Extended, mungkin fangmei akan memakai unsigned char :)
ditambah lagi, fangmei memakai fungsi² standar string yg 8-bit, i.e. strlen, strcmp
intinya, kode fangmei beroperasi pada data char yg adalah tipe data ASCII,

jadi mikir ama post fangmei "makanya gue hindari Ascii" wong jelas² dia memakai ascii :)

btw, kalau ingin menggunakan non-ascii ya pakai tipe-data wchar_t, trus dicompile dengan preprocessor UNICODE yg terdefinisi, untuk operasi stringnya kita pakai wstrlen, wstrcpy, wstrcat, wstrcmp, dll... nah, ini baru bisa menghandle karakter yg ada di code-page lain selain ASCII (misal, huruf² CJK, Thai, Vietnam, dll) ;)

fang_mei

  • Senior Sailor
  • ******
  • Keong: 0
  • Offline Offline
  • Posts: 13.472
  • Mana sapu kesayangan gue??? Oh, ada di gudang deng
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #14 on: January 06, 2008, 11:43:47 am »

ndak ada batasan, koq. Bwat gw kalo mriksa jawaban seh, yang penting kasi' asumsi di bawahnya dan selama ndak jauh melenceng dari soal aja ;) lah... koq jadi mbahas gw kalo ngajar, yak? ;D ;D

bukan gitu Rie... trus terang, aku jadi mikir yg dimaksud fangmei dengan ASCII tuh yg gimana?

kan 0-127 itu 7-bit ASCII, tipe datanya char, (8-bit total: 7-bit data, 1 sign-bit)
0-255 itu ASCII Extended, tipe datanya unsigned char (8-bit kepakai semua)

di kodenya fangmei jelas² dia pakai tipe data char, so berarti juga berasumsi datanya ASCII kan? ;)
kalau berasumsi datanya ASCII Extended, mungkin fangmei akan memakai unsigned char :)
ditambah lagi, fangmei memakai fungsi² standar string yg 8-bit, i.e. strlen, strcmp
intinya, kode fangmei beroperasi pada data char yg adalah tipe data ASCII,

jadi mikir ama post fangmei "makanya gue hindari Ascii" wong jelas² dia memakai ascii :)

btw, kalau ingin menggunakan non-ascii ya pakai tipe-data wchar_t, trus dicompile dengan preprocessor UNICODE yg terdefinisi, untuk operasi stringnya kita pakai wstrlen, wstrcpy, wstrcat, wstrcmp, dll... nah, ini baru bisa menghandle karakter yg ada di code-page lain selain ASCII (misal, huruf² CJK, Thai, Vietnam, dll) ;)
Bukan maksud gue.... kalo yg mas bikin khan karakternya ditentuin sndiri "A-Z"... kalo mo ngecek yg lbh dr "A-Z" kyk "a-z, 0-9" ato karakter lainnya khan berarti kudu diperlebar rangenya di kodingan mas... Nah itu berarti ga terlalu "pleksipel" lah kodingannya kalo mnrt gaya ngasih soal asdos gue misalnya pake contoh soal versi 1 arie. Dulu gue pernah dikasih soal mirip yg arie kasih, cuma dikasih input-output, ga ada syarat/batasan apa2... trus lgs kodingan gue dikasih 5 (ongkos absensi), coz gue cuma ngecek kalo inputan gue cuma "a-z", yg "A-Z, 0-9" ama karakter tanda baca dkk ga diikutkan. Jd gue dulu wkt AP1 ama AP2 dpt asdos macam begituan, kudu teliti buangeeet (ga cuma "banget") ama soal yg dikasih
Logged
Find me on FS : - J'ice - HaLF
    [im

fang_mei

  • Senior Sailor
  • ******
  • Keong: 0
  • Offline Offline
  • Posts: 13.472
  • Mana sapu kesayangan gue??? Oh, ada di gudang deng
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #15 on: January 06, 2008, 11:49:06 am »

BTW, ini apaan ya?

for (p++; *p && **p; )
Logged
Find me on FS : - J'ice - HaLF
    [im

mastery

  • Global Moderator
  • Senior Sailor
  • *****
  • Keong: 0
  • Offline Offline
  • Posts: 26.128
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #16 on: January 08, 2008, 03:30:43 am »

ndak ada batasan, koq. Bwat gw kalo mriksa jawaban seh, yang penting kasi' asumsi di bawahnya dan selama ndak jauh melenceng dari soal aja ;) lah... koq jadi mbahas gw kalo ngajar, yak? ;D ;D

bukan gitu Rie... trus terang, aku jadi mikir yg dimaksud fangmei dengan ASCII tuh yg gimana?

kan 0-127 itu 7-bit ASCII, tipe datanya char, (8-bit total: 7-bit data, 1 sign-bit)
0-255 itu ASCII Extended, tipe datanya unsigned char (8-bit kepakai semua)

di kodenya fangmei jelas² dia pakai tipe data char, so berarti juga berasumsi datanya ASCII kan? ;)
kalau berasumsi datanya ASCII Extended, mungkin fangmei akan memakai unsigned char :)
ditambah lagi, fangmei memakai fungsi² standar string yg 8-bit, i.e. strlen, strcmp
intinya, kode fangmei beroperasi pada data char yg adalah tipe data ASCII,

jadi mikir ama post fangmei "makanya gue hindari Ascii" wong jelas² dia memakai ascii :)

btw, kalau ingin menggunakan non-ascii ya pakai tipe-data wchar_t, trus dicompile dengan preprocessor UNICODE yg terdefinisi, untuk operasi stringnya kita pakai wstrlen, wstrcpy, wstrcat, wstrcmp, dll... nah, ini baru bisa menghandle karakter yg ada di code-page lain selain ASCII (misal, huruf² CJK, Thai, Vietnam, dll) ;)
Bukan maksud gue.... kalo yg mas bikin khan karakternya ditentuin sndiri "A-Z"... kalo mo ngecek yg lbh dr "A-Z" kyk "a-z, 0-9" ato karakter lainnya khan berarti kudu diperlebar rangenya di kodingan mas... Nah itu berarti ga terlalu "pleksipel" lah kodingannya kalo mnrt gaya ngasih soal asdos gue misalnya pake contoh soal versi 1 arie. Dulu gue pernah dikasih soal mirip yg arie kasih, cuma dikasih input-output, ga ada syarat/batasan apa2... trus lgs kodingan gue dikasih 5 (ongkos absensi), coz gue cuma ngecek kalo inputan gue cuma "a-z", yg "A-Z, 0-9" ama karakter tanda baca dkk ga diikutkan. Jd gue dulu wkt AP1 ama AP2 dpt asdos macam begituan, kudu teliti buangeeet (ga cuma "banget") ama soal yg dikasih

woo... alphabet maksudnya toh, bukan ascii atuh mei ;)

well, seperti kubilang sebelumnya, tinggal ngerubah batas printingnya aja,
karena yg dibatasi oleh kode program di atas hanya saat printing output, sedangkan untuk input, program ini akan 'menelan' segalanya asal bukan nol (string terminator)


kalau console tanpa ekstensi IME apa bisa input selain ASCII ama IBM Extended? ;)

yg versi 2 revisi 1 malah bisa output seluruh karakter dari 0 sampe 255, tinggal ngerubah batas printing aja :)

btw, tanpa batasan macam² seperti harus alphabet, numerik, bukan tanda baca, bukan formatting, dll... maka kode programnya bahkan bisa dibuat lebih ringkas, sbb:



#include <stdio.h>
#include <stdlib.h>

int main(int i, char **p)
{
   int *c = calloc(0xff, sizeof(int));
   
   /* pass 1 */
   for (p++; *p && **p; )
      c[*(*p)++]++;
   
   /* pass 2 */
   for (i = 0; i < 0xff; i++)
      c[i]?c[i]>1?printf("%d%c",c[i],i):printf("%c",i):0;
   
   free(c);
   
   return 0;
}



keren kan? ;)

 8)

mastery

  • Global Moderator
  • Senior Sailor
  • *****
  • Keong: 0
  • Offline Offline
  • Posts: 26.128
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #17 on: January 08, 2008, 03:51:46 am »

BTW, ini apaan ya?

for (p++; *p && **p; )


wah... masa ngga terbaca mie? itu kan singkat - padat - jelas ;)
sesingkat, sepadat dan sejelas baris di bawahnya -> c[*(*p)++]++; :)

ayo, bapak dosen Arie harap kasih pencerahan... maksud baris kode program di bawah ini apa? ;)

   /* pass 1 */
   for (p++; *p && **p; )
      c[*(*p)++]++;


dan baris kode program di bawah ini apa? :)

   /* pass 2 */
   for (i = 0; i < 0xff; i++)
      c[i]?c[i]>1?printf("%d%c",c[i],i):printf("%c",i):0;


hayooo... :D

arie26

  • Senior Sailor
  • ******
  • Keong: 0
  • Offline Offline
  • Posts: 13.241
  • *No More Me*
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #18 on: January 09, 2008, 09:02:36 am »

hmmm... ntar... nginget² sintaks bahasa C dulu ;D

hehehe... tricky ;)
mengisikan c (dialokasikan sebesar/sebanyak FFh) dengan banyaknya kemunculan karakter (pass 1). trus 'index' alokasi memory pada c merupakan kode ascii yang nantinya dicetak jika kemunculannya minimal 1 (pass 2). CMIIW
nyadarnya setelah mbaca bagian :
Code: [Select]
printf("%d%c",c[i],i):printf("%c",i):0; (yang sebelomnya ndak gw perhatiin) ;D ;D manteb, deh ;)
« Last Edit: January 09, 2008, 11:35:40 am by arie26 »
Logged
Guys, thanks for everything. Gw pamit... nice to know/meet you all

If you only knew.... those lyrics are 4 U....

mastery

  • Global Moderator
  • Senior Sailor
  • *****
  • Keong: 0
  • Offline Offline
  • Posts: 26.128
Re: belajar pemrograman dengan c (lanjutan:D)
« Reply #19 on: January 12, 2008, 10:07:20 am »

hmmm... ntar... nginget² sintaks bahasa C dulu ;D

hehehe... tricky ;)
mengisikan c (dialokasikan sebesar/sebanyak FFh) dengan banyaknya kemunculan karakter (pass 1). trus 'index' alokasi memory pada c merupakan kode ascii yang nantinya dicetak jika kemunculannya minimal 1 (pass 2). CMIIW
nyadarnya setelah mbaca bagian :
Code: [Select]
printf("%d%c",c[i],i):printf("%c",i):0; (yang sebelomnya ndak gw perhatiin) ;D ;D manteb, deh ;)

yg ditanyain pangmi tuh algoritma dari masing² statement dalam kode itu kayaknya :)
kalau apa yg dilakukan blok kode kan udah ada dalam komentar masing² pass ;)

komentar dari kode program sebelumnya:

/* pass 1: hitung kemunculan character */

/* pass 2: cetak karakter jika muncul minimal sekali */


di mana dalam kode program selanjutnya hanya disebutkan sebagai pass 1 & 2 :)



#include <stdio.h>
#include <stdlib.h>

int main(int i, char **p)
{
   int *c = calloc(0xff, sizeof(int));
   
   /* pass 1 */
   for (p++; *p && **p; )
      c[*(*p)++]++;
   
   /* pass 2 */
   for (i = 0; i < 0xff; i++)
      c[i]?c[i]>1?printf("%d%c",c[i],i):printf("%c",i):0;
   
   free(c);
   
   return 0;
}



sekarang, bagaimana arti masing² symbol, identifier, statement, dll dalam kode program di atas? ;)
Pages: 1 [2] 3   Go Up