Pemrograman C pada Pointer

Laporan Praktikum TMD02 Algoritma dan Struktur Data dengan C
NIM/ No. Reg.
:
49013004
Nama
:
Ahmad Ikhsan Ramadhan
email
:
ahmadikhsanramadhan@yahoo.com
Laporan
:
Tugas 6
Tugas Modul
Source Code: Latihan F
#include <stdio.h>
#include <stdlib.h>
void main()
{
            int i;
            char pelangi[7][7] = {{‘m’,‘e’,‘r’,‘a’,‘h’,},{‘j’,‘i’,‘n’,‘g’,‘g’,‘a’},
                                    {‘k’,‘u’,‘n’,‘i’,‘n’,‘g’},{‘h’,‘i’,‘j’,‘a’,‘u’},{‘b’,‘i’,‘r’,‘u’},{‘n’,‘i’,‘l’,‘a’},{‘u’,‘n’,‘g’,‘u’}};
            for (i=0;i<7;++i)
                        printf(“%sn”,pelangi[i]);
           
            system(“pause”);
}
Deskripsi singkat:
Pada program ini dideklarasikan variable pelangi sebanyak 7×7 aray. Jumlah [7] pertama merupakan banyaknya jumlah array, dan jumlah [7] yang ke 2 merupakan banyaknya jumlah karater dalam masing-masing blok pada array.
Lalu cetak array dilakukan pada deklarasi huruf i.


Tugas Modul
Source Code: Latihan Nomor 1
#include <stdio.h>
#include <stdlib.h>
int fungsi(int x)
{
            int y;
            y = 2*x-3;
            return y;
}
int main(){
            int n=0;
            int nilai[101][2];
            printf(“100 Titik Fungsi y=2x-3 n”);
            while(n<101){
                        nilai[n][0] = n;
                        nilai[n][1] = fungsi(n);
                        printf(“nilai y=2x-3 sebanyak 100 titik adalah =  %dn”,nilai[n][0],nilai[n][1]);
                        n++;
            }
            system(“pause”);
            return 0;
}
Deskripsi singkat:
Program yang di buat untuk menghitung kulasi fungsi dari y=2*x-3 kedalam aray 2 dimensi dan selanjutnya di cetak agar dapat dilihat hasil kalkulasi dari rumus y=2*x-3
Pada kode ini, int nilai[101][2]; saya mendeklarasikan untuk mencetak nilai sebanyak 101 baris, dan [2] berarti mendeklarasikan untuk memprint bilangan tadi dalam 2 aray berurut.


Tugas Modul
Source Code: Latihan i
#include <stdio.h>
#include <stdlib.h>
int main()
{
            int i=0;
            struct penilaian
            {
                        char nomor[10];
                        char nim[10];
                        char nama[30];
                        char nilai;
            };
           
            struct penilaian data_nilai[10];
            while(i<10){
                        printf(“—————————— n”);
                        printf(“Form Isi Nilai Mahasiswa ke %i”,i+1);
                        printf(“nMasukkan data Mahasiswa:n”);
                        printf(“nNomor : “);
                        scanf(“%s”,&data_nilai[i].nomor);
                        printf(“NIM : “);
                        scanf(“%s”,&data_nilai[i].nim);
                        printf(“Nama : “);
                        scanf(“%s”,&data_nilai[i].nama);
                        printf(“Nilai: “);
                        scanf(“%s”,&data_nilai[i].nilai);
                        i++;
            }i=0;
            printf(“nn”);
            while(i<10){
                        printf(“n=========Data Nilai %d=========”,i+1);
                        printf(“nn Nomor: %s”,data_nilai[i].nomor);
                        printf(“nNIM: %s”,data_nilai[i].nim);
                        printf(“nNama: %s”,data_nilai[i].nama);
                        printf(“nNilai: %c”,data_nilai[i].nilai);
                        i++;
            }system(“pause”);
            return 0;
}
Deskripsi singkat:
Analisanya adalah:
int i=0;
            struct penilaian
            {
                        char nomor[10];
                        char nim[10];
                        char nama[30];
                        char nilai;
            };
Ketika mendeklarasikan nomor,nim,nama dan nilai yang digunakan adalah char, sebab untuk meminimalisir kemungkinan eror saat penginputan nilai oleh mahasiswa, i adalah nilai pengulang yang nantinya akan sering di gunakan, selain itu di dalam soal juga tidak di instruksikan untuk melakukan operator aritmatika apapun,kemudian pada :
struct penilaian data_nilai[10];
            while(i<10){
                        printf(“—————————— n”);
                        printf(“Form Isi Nilai Mahasiswa ke %i”,i+1);
                        printf(“nMasukkan data Mahasiswa:n”);
                        printf(“nNomor : “);
                        scanf(“%s”,&data_nilai[i].nomor);
                        printf(“NIM : “);
                        scanf(“%s”,&data_nilai[i].nim);
                        printf(“Nama : “);
                        scanf(“%s”,&data_nilai[i].nama);
                        printf(“Nilai: “);
                        scanf(“%s”,&data_nilai[i].nilai);
                        i++;
ini merupakan baris pengulangan yang mengambil inputan dan kemudian di masukan kedalam variable penilaian menggunakan struct, struct berfungsi sebagai sebuah fungsi yang mengambil beberapa inpuntan kemudian menyimpannya di dalam satu variable, koding di atas juga melakukan perulangan untuk pengambilan 10 inputan data dari user.
Kemudian pada,
       i=0;
            printf(“nn”);
            while(i<10){
                        printf(“n=========Data Nilai %d=========”,i+1);
                        printf(“nn Nomor: %s”,data_nilai[i].nomor);
                        printf(“nNIM: %s”,data_nilai[i].nim);
                        printf(“nNama: %s”,data_nilai[i].nama);
                        printf(“nNilai: %c”,data_nilai[i].nilai);
                        i++;
ini adalah perintah untuk mencetak nilai yang di tampung pada nilai data_nilai  yang tadi nya di inputkan sebanyak 10 kali juga


Latihan
Source Code: Tugas 5
#include <stdio.h>
#include <stdlib.h>
float varA[2][2],varB[2][2],varC[2][2];
int a,b,c;
void menu(){
            printf(“n[1] Matriks penjumlahan”);
            printf(“n[2] Matriks pengurangan”);
            printf(“n[3] Matriks perkalian”);
            printf(“n[4] Matriks pembagian”);
            printf(“n[0] Matriks keluar”);
}
void masukkan()
{
            int i,j;
            printf(“—-Matriks A—-n”);
            for(i=0; i<2; i++)
            {
                        for(j=0; j<2; j++)
                        {
                                    printf(“Masukkan Matrix A[%d][%d] : “,i, j);
                                    scanf(“%f”,&varA[i][j]);
                        }
            }
            printf(“—-Matriks B—-n”);
            for(i=0; i<2; i++){
                        for(j=0; j<2; j++){
                                    printf(“Masukkan Matrix B[%d][%d] : “,i, j);
                                    scanf(“%f”,&varB[i][j]);
                        }
            }
}
void show(char opr){
            for(a=0; a<2; a++){
                        for(b=0; b<2; b++){
                        printf(“%2.0f “,varA[a][b]);
            }
            if(a==0)
                        printf(“t%ct”,opr);
            else printf(“t t”);
            for
                        (b=0; b<2; b++){
                                    printf(“%2.0f “,varB[a][b]);
            }
            printf(“n”);
            }
            }
void penjumlahan(){
            masukkan();
            show(‘+’);
            printf(“Hasil Penjumlahan:n”);
            for(a=0; a<2; a++)
            {
                        for(b=0; b<2; b++)
                        {
                                    printf(“%2.0f “,varA[a][b]+varB[a][b]);
            }
                        printf(“n”);
            }}void pengurangan(){
                        masukkan();
                        show(‘-‘);
                        printf(“Hasil Pengurangan:n”);
for(a=0; a<2; a++)
{
            for(b=0; b<2; b++)
            {
                        printf(“%2.0f “,varA[a][b]-varB[a][b]);
            }
            printf(“n”);
}
            }void perkalian(){
                        masukkan();
                        show(‘x’);
                        printf(“Hasil Perkalian:n”);
                        for(a=0; a<2; a++)
                        {
                                    for(b=0; b<2; b++){
                                                varC[a][b]=0;
                                                for(c=0; c<2; c++){
                                                            varC[a][b]+=varA[a][c]*varB[c][b];
                                                }printf(“%2.0f “,varC[a][b]);
                                    }printf(“n”);
                        }
            }void pembagian()
            {
                        float detB,temp,varBinvers[2][2];
                        masukkan();
                        show(‘:’);
                        detB = 1/((varB[0][0]*varB[1][1])-(varB[0][1]*varB[1][0]));
                        varBinvers[0][0] = detB*varB[1][1];
                        varBinvers[0][1] = detB*(-varB[0][1]);
                        varBinvers[1][0] = detB*(-varB[1][0]);
                        varBinvers[1][1] = detB*varB[0][0];
                        for(a=0; a<2; a++)
                        {
                                    for(b=0; b<2; b++)
                                    {
                                                printf(“%2.0f “,varA[a][b]);
                                    }if(a==0) printf(“txt”);
                                    else printf(“t t”);
                                    for(b=0; b<2; b++)
                                    {
                                                printf(“%6.2f “,varBinvers[a][b]);
                                    }
                        printf(“n”);
            }
                        printf(“Hasil Pembagian:n”);
                        for(a=0; a<2; a++)
                        {
                                    for(b=0; b<2; b++){
                                                varC[a][b]=0;for(c=0; c<2; c++){
                                                            varC[a][b]+=varA[a][c]*varBinvers[c][b];
                                                }
                                                printf(“%6.2f “,varC[a][b]);
                                    }printf(“n”);
                        }
            }
            int main(void){
            int selesai=1,pilih;
            printf(“********************************n”);
            printf(”     Program Hitung Matriksn”);
            printf(“********************************n”);
                        while(selesai==1){menu();
                                    printf(“nMasukkan pilihan > “);
                                    scanf(“%d”,&pilih);
                                    switch(pilih){
                                                case 0 : selesai=0; break;
                                                case 1 : penjumlahan(); break;
                                                case 2 : pengurangan(); break;
                                                case 3 : perkalian(); break;
                                                case 4 : pembagian(); break;
                                                default: printf(“Pilihan Salahn”);
                                                break;
}
            }system(“pause”);
            return 0;
            }
Deskripsi singkat:
Dimulai Dari
float varA[2][2],varB[2][2],varC[2][2];
Pertama mendeklarasikan varA,varB, dan varC yang masing-masing memiliki 2 aray, lalu saya mendeklarasikan sebuah fungsi yang bertujuan untuk melakukan pengulangan untuk mengambil masukan dari user seperti ini, void masukkan()
{
            int i,j;
            printf(“—-Matriks A—-n”);
            for(i=0; i<2; i++)
            {
                        for(j=0; j<2; j++)
                        {
                                    printf(“Masukkan Matrix A[%d][%d] : “,i, j);
                                    scanf(“%f”,&varA[i][j]);
                        }
            }
            printf(“—-Matriks B—-n”);
            for(i=0; i<2; i++){
                        for(j=0; j<2; j++){
                                    printf(“Masukkan Matrix B[%d][%d] : “,i, j);
                                    scanf(“%f”,&varB[i][j]);
                        }
            }
}
kode diatas bertujuan untuk mengambil inputan dari user, merubah nilai aray varA dan varB, fungsi for digunakan karena untuk masing-masing variable jika ingin tersimpan di dalam aray fungsi varA, dia harus mengambil dua kali inputan user.
Lalu fungsi untuk menampilkan sebagai berikut,
void show(char opr){
            for(a=0; a<2; a++){
                        for(b=0; b<2; b++){
                        printf(“%2.0f “,varA[a][b]);
            }
            if(a==0)
                        printf(“t%ct”,opr);
            else printf(“t t”);
            for
                        (b=0; b<2; b++){
                                    printf(“%2.0f “,varB[a][b]);
            }
            printf(“n”);
            }
untuk menampilkan kembali hasil kalkulasi 2 bilangan yang di masukan tadi, maka saya pun memerlukan fungsi yang melakukan 2 kali pengulangan pengambilan variable yang di cetak dua kali, secara garis besar konsep untuk meampilkan hasil kalkulasi operator antar matriks sama seperti fungsi deklarasi untuk melakukan pengambilan inputan yang di simpan oleh user,
kemudian operator aritmatika yang di gunakan adalah,
1.tambah
2.kurang
3. kali
4. pembagian
Di jabarkan dalam fungsi aritmatika seperti berikut :
void penjumlahan(){
            masukkan();
            show(‘+’);
            printf(“Hasil Penjumlahan:n”);
            for(a=0; a<2; a++)
            {
                        for(b=0; b<2; b++)
                        {
                                    printf(“%2.0f “,varA[a][b]+varB[a][b]);
            }
                        printf(“n”);
            }}void pengurangan(){
                        masukkan();
                        show(‘-‘);
                        printf(“Hasil Pengurangan:n”);
for(a=0; a<2; a++)
{
            for(b=0; b<2; b++)
            {
                        printf(“%2.0f “,varA[a][b]-varB[a][b]);
            }
            printf(“n”);
}
            }void perkalian(){
                        masukkan();
                        show(‘x’);
                        printf(“Hasil Perkalian:n”);
                        for(a=0; a<2; a++)
                        {
                                    for(b=0; b<2; b++){
                                                varC[a][b]=0;
                                                for(c=0; c<2; c++){
                                                            varC[a][b]+=varA[a][c]*varB[c][b];
                                                }printf(“%2.0f “,varC[a][b]);
                                    }printf(“n”);
                        }
Fungsi yang akan di ambil sebagai contoh adalah fungsi perkalian, dimana jika user menghendaki untuk melakukan proses perkalian aray, program akan meminta untuk memasukan dua kali inputan angka yang di simpan di dalam variable varA dan varC, untuk kemudian di kalkulasikan dan di tampilkan oleh varC yang sebelumnya sudah di deklarasikan pada variable global tadi.
Terdapat perlakuan khusus pada operator pembagian yaitu :
float detB,temp,varBinvers[2][2];
                        masukkan();
                        show(‘:’);
                        detB = 1/((varB[0][0]*varB[1][1])-(varB[0][1]*varB[1][0]));
                        varBinvers[0][0] = detB*varB[1][1];
                        varBinvers[0][1] = detB*(-varB[0][1]);
                        varBinvers[1][0] = detB*(-varB[1][0]);
                        varBinvers[1][1] = detB*varB[0][0];
Maksud diatas adalah untuk menjelaskan manakah bilangan yang harus di bagi terlebih dahulu, itulah fungsi di deklarasikannya variable baru yaitu varBinvers yang bertujuan untuk memberikan semacam index terhadap angka yang di masukan tadi, dan kemudian di simpan kedalam variable detB (determinant), lalu terakhir tinggal memanggil fungsi-fungsi tersebut menggunakan perintah sederhana untuk memanggil fungsi berdasarkan angka pilihan yang akan muncul saat user pertamakali membuka program.
 printf(”     Program Hitung Matriksn”);
            printf(“********************************n”);
                        while(selesai==1){menu();
                                    printf(“nMasukkan pilihan > “);
                                    scanf(“%d”,&pilih);
                                    switch(pilih){
                                                case 0 : selesai=0; break;
                                                case 1 : penjumlahan(); break;
                                                case 2 : pengurangan(); break;
                                                case 3 : perkalian(); break;
                                                case 4 : pembagian(); break;
                                                default: printf(“Pilihan Salahn”);
                                                break;
Latihan
Source Code: Contoh Program VI.2.5
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
            int *umur;
            int jml_sak, k = 0;
            printf(“Ketikan jumlah saudara kandung Anda>”);
            scanf(“%d”,&jml_sak);
            umur = (int*)malloc(sizeof(int)*jml_sak);
            if(!umur)
            {
                        printf(“Memory tidak tersedia!n”);
           
             
            system(“pause”);
            return 0;
            }
            printf(“Ketikan umur saudara kandung Andan”);
            for (k = 0;k < jml_sak;k++)
            {
                        printf(“Saudara kandung ke-%d “,k+1);
                        scanf(“%d”,&umur[k]);
            }
            printf(“Data umur yang tadi Anda masukan:n”);
            for (k=0;k<jml_sak;k++)
                        printf(“Saudara kandung ke-%d %dn”,k+1,umur[k]);
            free(umur);
            umur = NULL;
            system(“pause”);
            return 0;
}
Deskripsi singkat:
Soal diatas bertujuan untuk melakukan simulasi alokasi memory, kemudian terdapat fungsi laen yaitu Fungsi malloc adalah untuk mendeklarasikan alokasi memory dinamis dari alamat yang akan digunakan ke dalam variabel bernama umur. Variabel umur ini menyimpan alamat dari inputan umur dari user yang kemudian dilakukan perulangan. Setelah nilai umur diinputkan kemudian nilai umur ditampilkan pada output program dengan terlebih dahulu alamat memori dinamis diubah nilainya menjadi kosong dengan fungsi free() untuk mendealokasikan memori ke awal.
Latihan
Source Code: Contoh Program VI.3.1
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
            int k;
struct tanggal {
            int hari;
            int bulan;
            int tahun;
};
struct biodata {
            char nama[20];
            struct tanggal lahir; //Struktur di dalam struktur
            char asal[20];
};
struct biodata pribadi[7] =
{
            “Uban”, 11, 4, 1997,“Pinrang”,
            “Jono”, 5, 11, 1986,“Jakarta”,
            “Mora”, 17, 5, 1992,“Denpasar”,
            “Marla”, 11, 9, 2001,“Subang”,
            “Nira”, 2, 4, 1987,“Samarinda”,
            “Sharon”,12, 9, 1993,“Ambon”,
            “Susan”, 4, 12, 2000,“Padang”
};
printf(“Nama t Tanggal t Bulan t Tahun Lahir t Asal n”);
printf(“—- t ——- t —– t ———- t —- n”);
for (k=0;k<7;k++)
{
            printf(“%s”,pribadi[k].nama);
            printf(“t   %d          t   %d t   %dt”,
            pribadi[k].lahir.hari, pribadi[k].lahir.bulan, pribadi[k].lahir.tahun);
           
            printf(“t%sn”,pribadi[k].asal);
}
system(“pause”);
return 0;
}
Deskripsi singkat:
Soal diatas adalah tentang pemanfaatan fungsi struct di dalam membuat sebuah program
Kita tidak perlu memanggil kembali variable-variable awal yang di deklarasikan pada variable global sebelumnya, kita hanya perlu memasukan variable tersebut kedalam fungsi yaitu struct, sehingga, untuk mencetak baris tersebut kita hanya perlu memanggil fungsi struct tersebut dan mendefinisikan panjangnya data tersebut.
Latihan
Source Code: Contoh Program VI.3.2
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
            int hh = 11, bb = 4, tttt = 1997;
            struct biodata {
                        char *nama;
                        int *hari;
                        int bulan;
                        int *tahun;
                        char *asal;
            }
            pribadi,*ptrPrib;
           
            ptrPrib = &pribadi;
            pribadi.nama = “Asri”;
            pribadi.hari = &hh;
            pribadi.bulan = bb;
            pribadi.tahun = &tttt;
            pribadi.asal = “Pinrang”;
           
            printf(“Nama t Tgl t Bulan t Thn t Asal n”);
            printf(“—- t — t —– t — t —- n”);
            printf(“%s t %d t %d t %d t %sn”,ptrPrib->nama,*ptrPrib->hari,
                        ptrPrib->bulan, *ptrPrib->tahun, ptrPrib->asal);
            system(“pause”);
            return 0;
}
Deskripsi singkat:
Pemahaman diatas merupakan pemahaman terhadap penggunaan lebih dalam tentang fungsi struct di dalam pointer, fungsi struct adalah fungsi untuk menyimpan macam macam variable ke dalam sebuah variable lain

Ikhsan Ramadhan

Leave a Reply

Your email address will not be published. Required fields are marked *

Powered By WordPress. A Magnetic theme by Devfloat