Berikut code untuk menginput 1 baris kalimat yang dipisah dengan spasi ke dalam suatu variabel.
#include<stdio.h>
int main ()
{
char string1[100];
// Input
scanf("%[^\n]s", string1);
// Output
printf("%s", string1);
}
Contoh input:
symbol 123456 abcde !@#$%^
Contoh output:
symbol 123456 abcde !@#$%^
Wednesday, December 9, 2015
Strcpy
Strcpy adalah salah satu perintah dalam library string.h untuk
menyalin suatu string ke variabel lain dan menambah karakter '\0' ke akhir kalimat.
strcpy(string1, string2);
string1: variabel tujuan penyalinan
string2: string yang akan disalin
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
// Input
scanf("%[^\n]s", string2); getchar();
// Output
strcpy(string1, string2);
printf("%s", string1);
}
Contoh input:
teknik informatika
Contoh output:
teknik informatika
strcpy(string1, string2);
string1: variabel tujuan penyalinan
string2: string yang akan disalin
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
// Input
scanf("%[^\n]s", string2); getchar();
// Output
strcpy(string1, string2);
printf("%s", string1);
}
Contoh input:
teknik informatika
Contoh output:
teknik informatika
Strncpy
Strncpy adalah salah satu perintah dalam library string.h untuk menyalin suatu string ke variabel lain. Bedanya dengan Strcpy adalah Strncpy menyalin string berdasarkan panjang tertentu dan tidak menambahkan karakter '\0' ke akhir kalimat.
strncpy(string1, string2, panjang);
string1: variabel tujuan penyalinan
string2: string yang akan disalin
panjang: panjang string2 yang akan disalin. Dihitung dari awal
Hati-hati!
Perintah strncpy tidak menambahkan karakter '\0' ke akhir kalimat. Akibatnya, string dalam variabel string1 akan terus berlanjut hingga karakter yang tidak dapat ditentukan sesuai nilai yang ada dalam urutan memori RAM.
Solusinya adalah menambah baris berikut setelah fungsi strncpy dipanggil.
string1[strlen(string2)] = "\0";
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
int panjang;
// Input
scanf("%[^\n]s", string2); getchar();
scanf("%d", &panjang);
// Output
strncpy(string1, string2, panjang);
printf("%s", string1);
}
Contoh input:
teknik informatika
10
Contoh output:
teknik inf??????
strncpy(string1, string2, panjang);
string1: variabel tujuan penyalinan
string2: string yang akan disalin
panjang: panjang string2 yang akan disalin. Dihitung dari awal
Hati-hati!
Perintah strncpy tidak menambahkan karakter '\0' ke akhir kalimat. Akibatnya, string dalam variabel string1 akan terus berlanjut hingga karakter yang tidak dapat ditentukan sesuai nilai yang ada dalam urutan memori RAM.
Solusinya adalah menambah baris berikut setelah fungsi strncpy dipanggil.
string1[strlen(string2)] = "\0";
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
int panjang;
// Input
scanf("%[^\n]s", string2); getchar();
scanf("%d", &panjang);
// Output
strncpy(string1, string2, panjang);
printf("%s", string1);
}
Contoh input:
teknik informatika
10
Contoh output:
teknik inf??????
Strcat
Strcat adalah salah satu perintah dalam library string.h untuk
menyambung string2 ke belakang string1 dan menambah karakter '\0' di akhir kalimat.
strcat(string1, string2);
string1: string utama yang akan disambung dengan string2
Return value: string1 yang sudah tersambung dengan string2.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main(){
char string1[50], string2[50];
// Input
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2); getchar();
// Output
strcat(string1, string2);
printf("%s", string1);
/* Perintah di bawah ini menghasilkan output yang sama */
/* printf("%s", strcat(string1, string2)); */
}
Contoh input:
teknik
informatika
Contoh output:
teknik informatika
strcat(string1, string2);
string1: string utama yang akan disambung dengan string2
Return value: string1 yang sudah tersambung dengan string2.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main(){
char string1[50], string2[50];
// Input
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2); getchar();
// Output
strcat(string1, string2);
printf("%s", string1);
/* Perintah di bawah ini menghasilkan output yang sama */
/* printf("%s", strcat(string1, string2)); */
}
Contoh input:
teknik
informatika
Contoh output:
teknik informatika
Strncat
Strncat adalah salah satu perintah dalam library string.h untuk menyambung string2 ke belakang string1 dan menambah karakter '\0' di akhir kalimat jika perlu. Bedanya dengan Strcat adalah Strncat menyambung string2 sebanyak panjang karakter tertentu dari awal.
strncat(string1, string2, panjang);
string1: string utama yang akan disambung dengan string2
panjang: panjang string2 yang akan disambung. Penghitungannya dari awal
Return value: string1 yang sudah tersambung dengan string2.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main(){
char string1[50], string2[50];
int panjang;
// Input
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2); getchar();
scanf("%d", &panjang);
// Output
strncat(string1, string2, panjang);
printf("%s", string1);
/* Perintah di bawah ini menghasilkan output yang sama */
/* printf("%s", strncat(string1, string2, panjang)); */
}
Contoh input:
teknik
informatika
4
Contoh output:
teknik inf
strncat(string1, string2, panjang);
string1: string utama yang akan disambung dengan string2
panjang: panjang string2 yang akan disambung. Penghitungannya dari awal
Return value: string1 yang sudah tersambung dengan string2.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main(){
char string1[50], string2[50];
int panjang;
// Input
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2); getchar();
scanf("%d", &panjang);
// Output
strncat(string1, string2, panjang);
printf("%s", string1);
/* Perintah di bawah ini menghasilkan output yang sama */
/* printf("%s", strncat(string1, string2, panjang)); */
}
Contoh input:
teknik
informatika
4
Contoh output:
teknik inf
Tuesday, December 1, 2015
Strcmp
Strncmp adalah salah satu perintah dalam library string.h untuk
membandingkan 2 buah string.
strcmp(string1, string2);
string1 dan string2: string yang akan dibandingkan.
Return value: negatif (< 0), 0, atau positif (> 0)
< 0 : string1 lebih pendek atau nilai karakter pertama yang berbeda lebih kecil dalam urutan kode ASCII
0 : string1 = string2
> 0 : string1 lebih panjang atau nilai karakter pertama yang berbeda lebih besar dalam urutan kode ASCII
Hati-hati!
Jika return valuenya tidak 0, maka return valuenya tidak tepat -1 atau 1 walaupun hasil perintah printf menampilkan nilai -1 atau 1.
Jadi, gunakan kode ini
if(strcmp(string1, string2) > 0)
atau
if(strcmp(string1, string2) < 0)
daripada
if(strcmp(string1, string2) == 1)
atau
if(strcmp(string1, string2) == -1)
Berikut implemetasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2);
printf("%d", strcmp(string1, string2));
}
Contoh input 1:
teknik informatika
teknik informatika
Contoh output 1:
0
Contoh input 2:
teknik informatika
teknik industri
Contoh output 2:
1
strcmp(string1, string2);
string1 dan string2: string yang akan dibandingkan.
Return value: negatif (< 0), 0, atau positif (> 0)
< 0 : string1 lebih pendek atau nilai karakter pertama yang berbeda lebih kecil dalam urutan kode ASCII
0 : string1 = string2
> 0 : string1 lebih panjang atau nilai karakter pertama yang berbeda lebih besar dalam urutan kode ASCII
Hati-hati!
Jika return valuenya tidak 0, maka return valuenya tidak tepat -1 atau 1 walaupun hasil perintah printf menampilkan nilai -1 atau 1.
Jadi, gunakan kode ini
if(strcmp(string1, string2) > 0)
atau
if(strcmp(string1, string2) < 0)
daripada
if(strcmp(string1, string2) == 1)
atau
if(strcmp(string1, string2) == -1)
Berikut implemetasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2);
printf("%d", strcmp(string1, string2));
}
Contoh input 1:
teknik informatika
teknik informatika
Contoh output 1:
0
Contoh input 2:
teknik informatika
teknik industri
Contoh output 2:
1
Strncmp
Strncmp adalah salah satu perintah dalam library string.h untuk membandingkan 2 buah string. Bedanya dengan Strcmp adalah Strncmp membandingkan string berdasarkan panjang string tertentu yang dihitung dari awal.
strncmp(string1, string2, len);
string1 dan string2: string yang akan dibandingkan.
len: panjang string yang akan dibandingkan (dihitung dari awal).
Return value: negatif (< 0), 0, atau positif (> 0)
< 0 : string1 lebih pendek atau nilai karakter pertama yang berbeda lebih kecil dalam urutan kode ASCII
0 : string1 = string2
> 0 : string1 lebih panjang atau nilai karakter pertama yang berbeda lebih besar dalam urutan kode ASCII
Hati-hati!
Jika return valuenya tidak 0, maka return valuenya tidak tepat -1 atau 1 walaupun hasil perintah printf menampilkan nilai -1 atau 1.
Jadi, gunakan kode ini
if(strncmp(string1, string2, panjang) > 0)
atau
if(strncmp(string1, string2, panjang) < 0)
daripada
if(strncmp(string1, string2, panjang) == 1)
atau
if(strncmp(string1, string2, panjang) == -1)
Berikut implemetasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
int panjang;
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2); getchar();
scanf("%d", &panjang);
printf("%d", strncmp(string1, string2, panjang));
}
Contoh input 1:
teknik informatika
teknik industri
9
Contoh output 1:
0
Contoh input 2:
teknik informatika
teknik industri
10
Contoh output 2:
1
strncmp(string1, string2, len);
string1 dan string2: string yang akan dibandingkan.
len: panjang string yang akan dibandingkan (dihitung dari awal).
Return value: negatif (< 0), 0, atau positif (> 0)
< 0 : string1 lebih pendek atau nilai karakter pertama yang berbeda lebih kecil dalam urutan kode ASCII
0 : string1 = string2
> 0 : string1 lebih panjang atau nilai karakter pertama yang berbeda lebih besar dalam urutan kode ASCII
Hati-hati!
Jika return valuenya tidak 0, maka return valuenya tidak tepat -1 atau 1 walaupun hasil perintah printf menampilkan nilai -1 atau 1.
Jadi, gunakan kode ini
if(strncmp(string1, string2, panjang) > 0)
atau
if(strncmp(string1, string2, panjang) < 0)
daripada
if(strncmp(string1, string2, panjang) == 1)
atau
if(strncmp(string1, string2, panjang) == -1)
Berikut implemetasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char string1[50], string2[50];
int panjang;
scanf("%[^\n]s", string1); getchar();
scanf("%[^\n]s", string2); getchar();
scanf("%d", &panjang);
printf("%d", strncmp(string1, string2, panjang));
}
Contoh input 1:
teknik informatika
teknik industri
9
Contoh output 1:
0
Contoh input 2:
teknik informatika
teknik industri
10
Contoh output 2:
1
Sunday, November 29, 2015
Strlen
Strlen adalah salah satu perintah dalam library string.h yang berfungsi untuk menghitung panjang suatu string.
strlen(string1);
string1: string yang panjangnya akan dihitung
Return value: panjang karakter dalam bentuk integer (int)
Hati-hati!
Apabila panjang stringnya 10, maka proses penghitungannya akan dilakukan 10 kali.
Apabila panjang stringnya 100 ribu, maka proses penghitungannya akan dilakukan 100 ribu kali.
Jadi, perintah ini kurang efektif untuk beberapa case terutama di looping (contoh case di bawah).
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char str1[50];
scanf("%[^\n]s", str1);
printf("%d", strlen(str1));
}
Contoh input:
pohon saya
Contoh output:
10
Contoh potongan kode yang tidak efektif:
int i;
for(i = 0; i < strlen(string1); i++)
{...}
Kode tersebut bisa diubah menjadi efektif:
int i, panjang = strlen(string1);
for(i = 0; i < panjang ; i++)
{...}
strlen(string1);
string1: string yang panjangnya akan dihitung
Return value: panjang karakter dalam bentuk integer (int)
Hati-hati!
Apabila panjang stringnya 10, maka proses penghitungannya akan dilakukan 10 kali.
Apabila panjang stringnya 100 ribu, maka proses penghitungannya akan dilakukan 100 ribu kali.
Jadi, perintah ini kurang efektif untuk beberapa case terutama di looping (contoh case di bawah).
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
int main()
{
char str1[50];
scanf("%[^\n]s", str1);
printf("%d", strlen(str1));
}
Contoh input:
pohon saya
Contoh output:
10
Contoh potongan kode yang tidak efektif:
int i;
for(i = 0; i < strlen(string1); i++)
{...}
Kode tersebut bisa diubah menjadi efektif:
int i, panjang = strlen(string1);
for(i = 0; i < panjang ; i++)
{...}
Strtok
Strtok adalah salah satu perintah dalam library string.h yang berfungsi untuk memisahkan string dari karakter (huruf) tertentu.
strtok(string1, string2);
string1: berisi string asal yang akan dipisah.
string2: berisi karakter-karakter dalam bentuk string yang digunakan sebagai titik pemisahan.
Return value: string1 yang sudah dipisah dari string2 (disimpan dalam variabel pointer char/char *pch)
Variabel 'string1' diisi 'NULL' untuk pemanggilan selanjutnya.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
void main(){
char a[50], b[50];
char *pch;
scanf("%[^\n]s", a); getchar();
scanf("%[^\n]s", b);
pch = strtok(a, b);
while(pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, b);
}
}
Contoh test case:
.saya .!mahasiswa! angkatan.!.2014
. !
Contoh output:
saya
mahasiswa
angkatan
2014
strtok(string1, string2);
string1: berisi string asal yang akan dipisah.
string2: berisi karakter-karakter dalam bentuk string yang digunakan sebagai titik pemisahan.
Return value: string1 yang sudah dipisah dari string2 (disimpan dalam variabel pointer char/char *pch)
Variabel 'string1' diisi 'NULL' untuk pemanggilan selanjutnya.
Berikut implementasinya dalam bahasa pemrograman C.
#include<stdio.h>
#include<string.h>
void main(){
char a[50], b[50];
char *pch;
scanf("%[^\n]s", a); getchar();
scanf("%[^\n]s", b);
pch = strtok(a, b);
while(pch != NULL)
{
printf("%s\n", pch);
pch = strtok(NULL, b);
}
}
Contoh test case:
.saya .!mahasiswa! angkatan.!.2014
. !
Contoh output:
saya
mahasiswa
angkatan
2014
Bubble Sort
Bubble Sort adalah salah satu teknik mengurutkan data.
Kelebihan: Algoritmanya paling sederhana
Kekurangan: Proses pengurutannya lambat
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Bubble_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ // Input jumlah test case
int N; scanf("%d", &N);
// Input Data
int arr[N], i;
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
// Bubble Sort
int j, tmp, fl;
for(i = 0;i < N;i++)
{
fl = 1;
for(j = N-1;j >= i;j--)
if(arr[j - 1] > arr[j])
{
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
fl = 0;
}
if(fl == 1) break;
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Kelebihan: Algoritmanya paling sederhana
Kekurangan: Proses pengurutannya lambat
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Bubble_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ // Input jumlah test case
int N; scanf("%d", &N);
// Input Data
int arr[N], i;
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
// Bubble Sort
int j, tmp, fl;
for(i = 0;i < N;i++)
{
fl = 1;
for(j = N-1;j >= i;j--)
if(arr[j - 1] > arr[j])
{
tmp = arr[j];
arr[j] = arr[j - 1];
arr[j - 1] = tmp;
fl = 0;
}
if(fl == 1) break;
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Selection Sort
Selection Sort adalah salah satu teknik mengurutkan data.
Kelebihan: Algoritmanya cukup sederhana dan mudah diimplementasikan
Kekurangan: Tidak efektif jika mengurutkan data yang banyak
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Selection_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int arr[N];
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
//Selection Sort
int j, akhir = N-1, indeks, tmp;
for(i = 0;i < akhir;i++)
{
indeks = i;
for(j = i+1;j < N;j++)
if(arr[indeks] > arr[j])
indeks = j;
if(indeks != i) // Switch data
{
tmp = arr[i];
arr[i] = arr[indeks];
arr[indeks] = tmp;
}
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Kelebihan: Algoritmanya cukup sederhana dan mudah diimplementasikan
Kekurangan: Tidak efektif jika mengurutkan data yang banyak
Kompleksitas: O(n^2)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Selection_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int arr[N];
for(i = 0;i < N;i++)
scanf("%d", &arr[i]);
//Selection Sort
int j, akhir = N-1, indeks, tmp;
for(i = 0;i < akhir;i++)
{
indeks = i;
for(j = i+1;j < N;j++)
if(arr[indeks] > arr[j])
indeks = j;
if(indeks != i) // Switch data
{
tmp = arr[i];
arr[i] = arr[indeks];
arr[indeks] = tmp;
}
}
// Output
printf("%d", arr[0]);
for(i = 1;i < N;i++)
printf(" %d", arr[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Insertion Sort
Insertion Sort adalah salah satu teknik mengurutkan data.
Kelebihan: Cepat pada data yang sebagian besar sudah terurut, codenya cukup singkat, dan stabil
Kekurangan: Tidak efektif (lambat) jika datanya banyak dan terurut secara terbalik (worst case)
Kompleksitas
Worst case/Average: O(n^2)
Best case (data sudah terurut): O(n)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Insertion_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int ar[N];
for(i = 0;i < N;i++)
scanf("%d", &ar[i]);
//Insertion Sort
int tmp, j;
for(i = 1;i < N;i++)
{
tmp = ar[i];
j = i - 1;
while((ar[j] > tmp) && (j > -1))
{
ar[j + 1] = ar[j];
j--;
}
ar[j + 1] = tmp;
}
// Output
printf("%d", ar[0]);
for(i = 1;i < N;i++)
printf(" %d", ar[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Kelebihan: Cepat pada data yang sebagian besar sudah terurut, codenya cukup singkat, dan stabil
Kekurangan: Tidak efektif (lambat) jika datanya banyak dan terurut secara terbalik (worst case)
Kompleksitas
Worst case/Average: O(n^2)
Best case (data sudah terurut): O(n)
Animasi visualnya dapat dilihat di visualgo.net/sorting.html
Penjelasan lebih lanjut dapat dilihat di en.wikipedia.org/wiki/Insertion_sort
Berikut code dan implementasinya dalam bahasa pemrograman C.
#include <stdio.h>
int main()
{ int N, i;
// Input jumlah test case
scanf("%d", &N);
// Input Data
int ar[N];
for(i = 0;i < N;i++)
scanf("%d", &ar[i]);
//Insertion Sort
int tmp, j;
for(i = 1;i < N;i++)
{
tmp = ar[i];
j = i - 1;
while((ar[j] > tmp) && (j > -1))
{
ar[j + 1] = ar[j];
j--;
}
ar[j + 1] = tmp;
}
// Output
printf("%d", ar[0]);
for(i = 1;i < N;i++)
printf(" %d", ar[i]);
}
Contoh test case:
7
7 5 3 1 6 4 2
Contoh output:
1 2 3 4 5 6 7
Subscribe to:
Posts (Atom)