Minggu, 13 Desember 2015

CONTOH PENYELESAIAN STRUKTUR DATA

CONTOH PENYELESAIAN STRUKTUR DATA
Nomer 1
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int i, N, a [50];
printf("masukkan jumlah deret :");
scanf("%d", &N);
for (i=0; i<N; i++){
if(i<2)
a[i]=i;
else
a[i]=a[i-2]+a[i-1];
}
printf("\n menampilkan deret fibonachi %d suku pertama\n", N);
for (i=0; i<N; i++){
printf("%d\t",a[i]);
}
return 0;

}

Nomer 2
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
int n,x,cek,i;
cout<<"Ketikkan nilai n= ";
cin>>n;
cout<<"Deret Bilangan Primanya " << n <<" adalah :"<<endl<<endl;
for(x=2;x<=n;x++){
cek=0;
for(i=2;i<x;i++)
{
if(x%i==0){
cek=1;

   }
   }
   if(cek==0) {
  cout<<x<<",";
}
}
return 0;
}


Nomer 3
#include <iostream>

using namespace std;
int main(int argc, char** argv) {
int x[12]={80,84,100,24,79,85,91,65,17,1,3,21};
int i;
int maks=-1000;
int min=1000;
for(i=0;i<12;i++){
if(x[i]>maks){
maks=x[i];
}
if(x[i]<min){
min=x[i];
}
}
cout<<"nilai maksimum:"<<maks<<endl;
cout<<"nilai minimum:"<<min<<endl;
return 0;
}

Nomer 4
#include <iostream>
using namespace std;

int main(int argc, char** argv) {
float volume,luas,jari_jari,tinggi;
cout<<"masukan jari_jari: ";
cin>>jari_jari;
cout<<"masukkan tinggi:";
cin>>tinggi;
volume=3.14*jari_jari*tinggi;
luas=2*3.14*jari_jari*jari_jari*tinggi;
cout<<"volume tabung:"<<volume<<endl;
cout<<"luas tabung:"<<luas<<endl;

return 0;
}


Nomer 5
#include <iostream>
using namespace std;
int main(int argc, char** argv) {
float r, tinggi, volume ;
cout <<"====Program volume bola====\n";
cout <<"input r = ";
cin >> r;
cout <<"input tinggi = ";
cin >> tinggi;
volume = 4*1/3*3.14*r*r*tinggi;
cout <<"volume bola adalah = "<<volume <<endl<<endl;
return 0;
}


Nomer 6
#include <iostream>

using namespace std;
int main(int argc, char** argv) {
int n;
cout<<"n=";
cin>>n;
for(int a=1; a<=n; a++){
int b= a-1;
for(int c=1; c<=b; c++){
cout<<"";
}
b= (2*n)- (2*a-1);
for(int c=1; c<=b; c++){
cout<<"*";
}
cout<<endl;
}
return 0;
}


Nomer 7
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) {
int i,j,n;
cout<<"Masukkan nilai n=";
cin>>n;
for(i=1;i<=n;i++){
for (j=i; j<=n; j++){
cout<<".";
}
for (j=1; j<=i; j++){
cout<<"*";
}
cout<<endl;
}

return 0;
}


Nomer 8
#include <iostream>
using namespace std;
int main (int argc, char** argv) {
int nilai;
cout<<"masukan nilai mahasiswa=";
cin>>nilai;
if(nilai>=85) {
cout<<"nilai anda=A";
}
else
if(nilai>=80 and nilai <84)
{
cout<<"nilai anda=A-";
}
else
if(nilai>=75 and nilai <79)
{
cout<<"nilai anda=B+";
}
else
if(nilai>=70 and nilai <74)
{
cout<<"nilai anda=B-";
}
else
if(nilai>=65 and nilai <69)
{
cout<<"nilai anda=C";
}
else
if(nilai>=55 and nilai <64)
{
cout<<"nilai anda=D";
}
else
{
cout<<"nilai anda=E";
}



PENGERTIAN POINTER

PENGERTIAN POINTER

BAB III
POINTER

PENGERTIAN POINTER
        Pointer adalah variable yang berisi alamat memory sebagai nilainya dan berbeda dengan variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai tertentu.

Dengan demikian, ada variabel yang secara langsung menunjuk ke suatu nilai tertentu, dan variabel yang secara tidak langsung menunjuk ke nilai.
Adapun bentuk umum dari pernyataan variabel pointer dalam C++ adalah :

Type *variabel-name

Dengan :
Type adalah tipe dasar pointer
Variabel name adalah nama variabel pointer
* adalah variabel pada alamatnya yang ditentukan oleh operand.

Contoh :
          Int *int_pointer;          // pointer to integer
          Float *float_pointer;    // pointer to float

Contoh :

//Program : pointer.cpp                  
#include <stdio.h>

main()
{
            int a, *b;
            a=20;
            b=&a;
                        printf (" Pointer b menunjukkan alamat =%p\n",b);
                        printf (" Alamat tersebut berisi nilai :%d\n",*b);
 }

//Program : pointer1.cpp
#include <iostream .h>

// cetak p dan *p
void main(void)
{
int v = 7, *p;
p = &v;
cout << " Nilai v = " << v << " dan *p = " << *p
<< "\nAlamatnya = " << p << '\n';
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
          Nilai v = 7 dan *p = 7
          Alamatnya = efffb24




//Program:pointer2.cpp
#include <iostream.h>

int main ()
{
int value1 = 5, value2 = 15;
int * mypointer;

mypointer = &value1;
*mypointer = 10;
mypointer = &value2;
*mypointer = 20;
cout << "value1==" << value1 << "/ value2==" << value2;
return 0;
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
          “value1==” 10 << “/ value2==20


OPERATOR POINTER

Ada beberapa operator yang bisa digunakan dalam pointer. Operator tersebut adalah operator alamat (yang dilambangkan dengan simbol &) dan operator unary yang mengembalikan alamat dari operandnya.

Sebagai contoh, diasumsikan deklarasi sebagai berikut :
          Int y = 5;
          Int *yPtr;

Maka pernyataan :
          YPtr = &y;

Pernyataan ini mengandung arti bahwa alamat dari variabel y ditujukan kepada variabel pointer yPtr.

Contoh lain :
          Int balance, value;
          Int *balptr;
          Balance = 3200;      // step 1
          Balptr=&balance;    // step 2
          Value=*balptr;        // step 3

Contoh diagram :

Step 1 Step 2 Step 3

12 Balptr 12 100 Balptr 12 100 Balptr

100 3200 Balance 100 3200 Balance 100 3200 Balance

130 value 130 value 130 3200 value




Contoh :

//Program:pointer3.cpp
#include <iostream.h>

int main()
{
int *ptr, num;              // Step 1
ptr = &num;                // Step 2
*ptr = 100;                  // Step 3
cout << num << " ";
(*ptr)++;                      // Step 4
cout << num << " ";
(*ptr)*=2;                    // Step 5
cout << num << "\n";
return 0;
}

Bila program dijalankan :
          100  101  202

Contoh diagram :

Step 1 Step 2 Step 3 Step 4 Step 5

12 *int Ptr 12 50 Ptr 12 50 Ptr 12 50 Ptr 12 50 Ptr

50 int num 50 int num 50 100 num 50 101 num 50 202 num

... ... ... ... ...




EKSPRESI POINTER

Pointer Aritmatika

Hanya 4 operator aritmatik dapat digunakan pada pointer ++, = =, +, dan -. Asumsi integer 32 bit.

Contoh :
          Int *p1;
          p1++;
          p1--;

Contoh :

//Program:pointer4.cpp
#include <iostream.h>

int main()
{
int i[10], *i_ptr;
double f[10], *f_ptr;
int x;
i_ptr = i; // i_ptr points to first element of i
f_ptr = f; // f_ptr points to first element of f
for(x=0; x<10; x++)
cout << i_ptr+x << " " << f_ptr+x << "\n";
return 0;
}

Bila program dijalankan :
          0xeffffd9c     0xeffffd48
          0xeffffda0     0xeffffd50
          0xeffffda4     0xeffffd58
0xeffffda8     0xeffffd60
...                ...

Pointer Perbandingan

Pointer dapat dibandingkan dengan menggunakan operator hubungan, seperti !=, ==, <, dan >.

Contoh :

//Program:pointer5.cpp
#include <iostream.h>

int main()
{
int num[10];
int *start, *end;
start = num;
end = &num[9];
while(start != end) {
cout << "Masukkan bilangan sebanyak 9 data : ";
cin >> *start;
start++;
}
return 0;
}

Data yang akan dimasukkan sebanyak 9 buah data dan program tidak akan berhenti apabila belum sampai 9 buah data.

POINTER VERSUS ARRAY

Array dan pointer adalah dua struktur data yang saling berkaitan satu dengan yang lain dalam C, dan dapat saling dipertukarkan penggunaannya. Karena array dapat didefinisikan sebagai pointer.

Contoh :
          int *bPtr, b[5];

Dapat dibuat menjadi :
          bPtr = b;
          bPtr = &b[0];

Berarti bPtr ditugaskan untuk menunjukkan ke alamat elemen pertama dari array b atau b[0].
Elemen array b[3] dapat ditulis :
          * (bPtr + 3)
Alamat &b[3] dapat ditulis :
          bPtr +3
Deklarasi suatu variabel array x[] yang berisi nilai int dapat ditulis :
          int *x;
Variabel array ganda dapat ditulis :
          int y [ ] [ ];
          int *y [ ];
          int *( *y);
Penggunaan pointer dan array untuk deklarasi variabel array ganda untuk menyimpan empat buah elemen yang masing-masing bertipe string (array dari karakter).
          char *suit [4] = { “Hearts”, “Diamonds”, “Clubs”, “Spades” };

Contoh :

//Program:pointer6.cpp
#include <iostream.h>
#include <stdio.h>

int main()
{
char str[80];
char token[80];
char *str_ptr, *tk_ptr;
cout << "Masukkan sebuah kalimat : ";
gets(str);
str_ptr = str;

while(*str_ptr) {
tk_ptr = token;

while( *str_ptr != ' ' && *str_ptr ) {
*tk_ptr = *str_ptr;
tk_ptr++;
str_ptr++;
}
if(*str_ptr) str_ptr++;
*tk_ptr = '\0';
cout << token << endl;
}
return 0; }

//Program:pointer7.cpp
#include <iostream.h>
#include <stdio.h>

int main()
{
char str[80];
char token[80];
int i, j;
cout << "Masukkan sebuah kalimat: ";
gets(str);

for(i=0; ; i++) {
for(j=0; str[i] != ' ' && str[i]; j++, i++)
token[j] = str[i];
token[j] = '\0';
cout << token << '\n';
if(!str[i]) break;
}
return 0;
}

Pada contoh program pointer 6 adalah program dengan pointer, sedangkan contoh program pointer 7 dengan menggunakan array. Hasil dari kedua program tersebut sama.

POINTER INDEX

Pointer tidak hanya dapat digunakan untuk mengakses elemen array, tetapi pointer juga dapat diindex seperti pada array.

Contoh :

//Program:pointer8.cpp
#include <iostream.h>
#include <ctype.h>

int main()
{
char str[20] = "hello tom";
char *p;
int i;
p = str;
for(i=0; p[i]; i++)
p[i] = toupper(p[i]);
cout << p;
return 0;
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
HELLO TOM

Proses pengindexan pointer dapat dilihat pada variabel p yang menunjuk pada variabel str yang berisi data nama dengan panjang 20. Fungsi toupper memperjelas proses pengindexan.

KONSTANTA STRING DAN POINTER

Konstanta string terlihat dalam program teks dan disimpan dalam tabel string serta setiap entry dalam tabel string, pointer string dibangkitkan.

Contoh :

//Program:pointer9.cpp
#include <iostream.h>
int main()
{
char *s;
s = "Pointers are fun to use.\n";
cout << s;
return 0;
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
          Pointers are fun to use.

ARRAY POINTER

Pointer dapat diarraykan seperti tipe data yang lain dalam C++. Untuk menyatakan sebuah array pi dari pointer sebanyak 10 buah data yang bertipe 10 integer, dapat ditulis :
          int *pi [10];
Untuk menentukan alamat dari variabel integer disebut var ke elemen ketiga dari pointer array, dapat ditulis :
          int var;
          pi [2] = &var

Contoh :

//Program:point10.cpp
#include <iostream.h>

int main ()
{
int numbers[5];
int *p;
p = numbers;  *p = 10;
p++;  *p = 20;
p = &numbers[2];  *p = 30;
p = numbers + 3;  *p = 40;
p = numbers;  *(p+4) = 50;
for (int n=0; n<5; n++)
cout << numbers[n] << ", ";
return 0;
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
          10, 20, 30, 40, 50,

POINTER DALAM POINTER

C++ memperbolehkan penggunaan pointer dalam pointer yang berisi data yang sama atau berbeda. Dalam kondisi pointer biasa atau pointer tunggal, diagramnya adalah :

                Pointer                    Variabel


value

address





Untuk pointer dalam pointer, diagramnya adalah :

value

                Pointer                    Pointer                    Variabel
address




address





Contoh :
          char a;
          char *b;
          char **c;
          a = ‘z’;
          b = &a;
          c = &b;

Dengan misal data acak pada memori 7230, 8092, dan 10502, maka diagramnya adalah :

8092

                     a                             b                             c
7230




‘z’




                  7230                         8092                        10502

Dari diagram dapat disimpulkan :
•         c adalah sebuah variabel dengan tipe (char**) yang berisi 8092
•         *c adalah sebuah variabel dengan tipe (char*) yang berisi 7230
•         **c adalah sebuah variabel dengan tipe (char) yang berisi ‘z’

Contoh :

//Program:point12.cpp
#include <iostream.h>
#include <stdio.h>
#include <string.h>

int main()
{
int x, *p, **q;
x = 10;
p = &x;
q = &p;
cout << **q; // prints the value of x
return 0;
}

Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut :
          10