Anda di halaman 1dari 11

Nindy Puspita

1 Mekatronika B
3110191048
WORKSHOP PEMROGRAMAN 2
STRUCTURE (LANJUTAN)

1. Buat sebuah struktur data untuk membungkus beberapa data dari sebuah sensor
yang berisi parameter:
a. Kecepatan masing masing di arah sumbu X, Y dan Z dengan tipe data float
b. Sudut masing-masing ke arah X, Y dan Z masing-masing dengan tipe
data float

Listing Code :
struct titik
{
float x;
float y;
float z;
};

struct titik kecepatan;


struct titik sudut;

2. Buat struktur data yang berisi informasi posisi X, Y dan Z (dalam tipe data float),
lalu buat fungsi untuk mendapatkan posisi dari dari pergerakan dengan kecepatan
dengan arah yang ada pada struktur nomor 1.

Listing Code :

#include <iostream>
#include <stdio.h>
#include<stdlib.h>
using namespace std;
struct titik
{
float x;
float y;
float z;
};
struct titik kecepatan;
struct titik sudut;
struct titik posisi;
void posisibaru(struct titik speed, struct titik pos0, float waktu)
{
struct titik pos1;
pos1.x=pos0.x+speed.x*waktu;
pos1.y=pos0.y+speed.y*waktu;
pos1.z=pos0.z+speed.z*waktu;

printf("Posisi objek \n\n");


printf("Di sumbu x : %0.1f\n", pos1.x);
printf("Di sumbu y : %0.1f\n", pos1.y);
printf("Di sumbu z : %0.1f", pos1.z);
}

int main()
{
posisi.x=1;
kecepatan.x=10;
posisi.y=2;
kecepatan.y=10;
posisi.z=3;
kecepatan.z=10;
posisibaru(kecepatan,posisi,10);
}

Output :
3. Buat fungsi untuk menghitung posisi yang mempunyai structure seperti soal nomor 2.
Fungsi panggil dengan mengirimkan argument berupa isi structure soal no 1, dan isi
structure posisi saat ini (nomor 2), serta informasi lama pergerakan (diasumsikan titik
tersebut bergerak dengan kecepatan konstan selama waktu yang diberikan). Hasilnya
langsung di cetak pada fungsi utama (main) melalui metode return (informasi posisi).

Listing Code :

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

using namespace std;

struct titik

float x;
float y;
float z;

};

struct titik kecepatan;


struct titik sudut;
struct titik posisi;

float *posisibaru(struct titik speed, struct titik pos0, float waktu)

static float result[3];

struct titik pos1;

result[0]=pos1.x=pos0.x+speed.x*waktu;
result[1]=pos1.y=pos0.y+speed.y*waktu;
result[2]=pos1.z=pos0.z+speed.z*waktu;

return result;

}
int main()
{

float *ptr;

posisi.x=4;
kecepatan.x=10;

posisi.y=3;
kecepatan.y=10;

posisi.z=2;
kecepatan.z=10;

ptr=posisibaru(kecepatan,posisi,10);

printf("Posisi objek \n\n");

printf("Di sumbu x : %0.1f\n", *ptr);

printf("Di sumbu y : %0.1f\n", *(ptr+1));

printf("Di sumbu z : %0.1f", *(ptr+2));

Output :
4. Buat fungsi untuk mengupdate posisi yang mempunyai structure seperti soal nomor
2. Fungsi panggil dengan mengirimkan argument berupa isi structure soal no 1, dan
pointer structure nomor 2, serta informasi lama pergerakan (diasumsikan titik tersebut
bergerak dengan kecepatan konstan selama waktu yang diberikan). Hasilnya
langsung di cetak pada fungsi utama (main) tanpa menggunakan return.
Listing Code :

#include <iostream>
#include <stdio.h>
#include<stdlib.h>
using namespace std;
struct titik
{
float x;
float y;
float z;
};

struct titik kecepatan;


struct titik sudut;
struct titik *posisi,p;
void posisibaru(struct titik speed, struct titik *pos0, float waktu)
{
struct titik pos1;

pos1.x=pos0->x+speed.x*waktu;
pos1.y=pos0->y+speed.y*waktu;
pos1.z=pos0->z+speed.z*waktu;

printf("Posisi objek \n\n");


printf("Di sumbu x : %0.1f\n", pos1.x);
printf("Di sumbu y : %0.1f\n", pos1.y);
printf("Di sumbu z : %0.1f", pos1.z);
}
int main()
{
posisi=&p;
posisi->x=9;
kecepatan.x=10;
posisi->y=6;
kecepatan.y=10;
posisi->z=3;
kecepatan.z=10;
posisibaru(kecepatan,posisi,10);
}

Output :

5. Modifikasi program nomor 2, tetapi hasil perhitungan dikembalikan di fungsi main


dan dicetak pada fungsi main.
Listing Code :

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

using namespace std;

struct titik

float x;

float y;

float z;

};

struct titik kecepatan;

struct titik sudut;


struct titik *posisi,p;

float *posisibaru(struct titik speed, struct titik *pos0, float waktu)

static float result[3];

struct titik pos1;

result[0]=pos1.x=pos0->x+speed.x*waktu;

result[1]=pos1.y=pos0->y+speed.y*waktu;

result[2]=pos1.z=pos0->z+speed.z*waktu;

return result;

int main()

float *ptr;

posisi=&p;

posisi->x=4;
kecepatan.x=10;

posisi->y=3;
kecepatan.y=10;

posisi->z=2;
kecepatan.z=10;

ptr=posisibaru(kecepatan,posisi,10);

printf("Posisi objek \n\n");

printf("Di sumbu x : %0.1f\n", *ptr);


printf("Di sumbu y : %0.1f\n", *(ptr+1));

printf("Di sumbu z : %0.1f", *(ptr+2));

Output :

Anda mungkin juga menyukai