Fall Object-Oriented Programming Laboratory 03

Benzer belgeler
#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

Fall Object-Oriented Programming Laboratory 02 - Structures

#ifndef COMPLEX_H #define COMPLEX_H

#ifndef FATURA_H #define FATURA_H

Object-Oriented Programming Laboratuvar 11

Object-Oriented Programming Lab Shape, TwoDShape, ThreeDShape, Disk, Square, Sphere, Cube class hiyerarşisi.

Ad Soyad: İmza: Object-Oriented Programming Quiz 4 60dk. Kapalı kitap. Kapalı defter. Kapalı cep telefonu. Hesap makinesi yok.

Object-Oriented Programming Lab 4. - Sıcaklık değeri, Kelvin biriminde saklansın. Varsayılan sıcaklık değeri K olsun.

1 PROGRAMLAMAYA GİRİŞ

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Final Sınavı Soruları Güz, Süre: 90 Dakika

Object-Oriented Programming Laboratuvar 10

Fonksiyonlar (Altprogram)

Karma C/C + + Kodlama

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

#include<stdio.h> #include<string.h> #include<stdlib.h> typedef struct { int ID; char isim[15]; char soyisim[15];

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

void main() { int a[] = {1, 2, 3, 4, 5, 6}; int *p=&a[2]; int **pp=&p; printf("%d", **pp+2); }

C++ Dersi: Nesne Tabanlı Programlama

Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

Sınav tarihi : Süre : 60 dak.

DERSİN WEB SİTESİ:

Programlama Dilleri Laboratuvarı

C ile Uygulamalar 1 - Cevaplar

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

elemanlı bir dizide bir sinyalin 1 er saniye aralıklarla ölçülen gerilim değerleri tutulmaktadır. Bu sinyalin tepeden tepeye genliğini,

Ders 5: Temel Kütüphane Fonksiyonlar

C++ Giriş Ders 5 MSGSU Fizik Bölümü Ferhat ÖZOK

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

C Programlama printf() Fonksiyonu

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Temel Bilgisayar Bilimleri Ders Notu #4-1. kısım

KONU 7: DOSYA İŞLEME ( File Processing )

C++ Dersi: Nesne Tabanlı Programlama

TEMPLATES. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. C++ ile Nesneye Dayalı Programlama 1

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

NESNEYE YÖNELİK PROGRAMLAMA

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BİL-142 Bilgisayar Programlama II

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

/* Çember alanını hesaplar */

Bil 101 Bilgisayar Yazılımı 1 Çözümlü Sorular Timur Karaçay

C++ Dersi: Nesne Tabanlı Programlama

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

Telefon Rehberi Uygulaması

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

Bölüm 2 - C ile Programlamaya Giriş

Lab Notları 4. for ( ilklenme yeri bir kez çalışır ; Kontrol yeri her döngüde bakılır ; Güncelleme yeri her döngüde )

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

SİNOP ÜNİVERSİTESİ MESLEK YÜKSEKOKULU MEKATRONİK PROGRAMI

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

C#(Sharp) Programlama Dili

C Programlama Dilininin Basit Yapıları

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Dr. Fatih AY Tel: fatihay@fatihay.net

Hafta 12 Karakter Tutan Diziler

#include<stdio.h> #include<conio.h> #define doktorsayisi 3. typedef struct dr{ int ay1, ay2, ay3, ay4; } doktor; float hesapla(doktor dktr){

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

ALGORİTMA VE PROGRAMLAMA II

10/17/2007 Nesneye Yonelik Programlama 3.1

BMT 106 Algoritma ve Programlama II Bahar Dönemi

Örnek1: #include <iostream> #include <string> using namespace std;

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

ALGORİTMA VE PROGRAMLAMA II

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

3. VERİ GİRİŞ-ÇIKIŞI (4ncü hafta)

C++ Dersi: Nesne Tabanlı Programlama

2. BÖLÜM (2nci hafta)

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

scanf () Fonksiyonu Klavyeden veri okumak için kullanılır. Yapı olarak printf () fonksiyonu aynıdır. Kullanım biçimi:

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

Klavyeden girilen metnin karakter uzunluğu bulan C programı. Klavyeden girilen metin içerisindeki küçük ve büyük harf sayısını bulan C programı

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

BLM 111 ALGORİTMA VE PROGRAMLAMA I

C PROGRAMLAMA D İ L İ

Week 7. Düğüm bulma Tekli bağlı liste: phead ve ptail Dairesel bağlı liste Çift bağlı liste

Transkript:

2017-2018 Fall Object-Oriented Programming Laboratory 03 17.10.2017 1. Çok Dosyalı Proje. Aşağıda, katilimci structure ı için oluşturulmuş bir programın kaynak kodu verilmiştir. Kaynak kodu okuyun ve programın yaptığı işi tahmin edin. Programı çalıştırın ve tahmininizi kontrol edin. Tek bir dosyada olan bu kodu, birden fazla dosyaya bölün; gerekli düzenlemeleri yapın: - katilimci structure ının, tipinin, ve ilgili fonksiyonların ilanlarının/declaration larının bulunduğu bir katilimci header dosyası. - katilimci tipine ait fonksiyonların tanımlamalarının/definition larının bulunduğu bir katilimci cpp dosyası. - katilimci tipini kullanarak belirli bir işi yapan main fonksiyonunun bulunduğu bir cpp dosyası. #ifndef KATILIMCI_H #define KATILIMCI_H #define NAMELEN 32 #define NAMESIZE (NAMELEN + 1) typedef struct katilimci_s char ad[namesize]; char soyad[namesize]; int yas; katilimci_t; void print_katilimci(katilimci_t * p); void scan_katilimci(katilimci_t * s); void sirala_ad (katilimci_t kdz[], int e_sayisi); void sirala_soyad(katilimci_t kdz[], int e_sayisi); void sirala_yas (katilimci_t kdz[], int e_sayisi); #endif // KATILIMCI_H #include "katilimci.h" #include <cstring> void print_katilimci(katilimci_t * p) cout << p->ad << ' ' << p->soyad << " (yas:" << p->yas << ")" << endl; void scan_katilimci(katilimci_t * s) char buffer[256]; int input_length;

cout << "ad: "; cin >> buffer; input_length = strlen(buffer); if(input_length > NAMELEN) input_length = NAMELEN; strncpy(s->ad, buffer, input_length); (s->ad)[input_length] = '\0'; cout << "soyad: "; cin >> buffer; input_length = strlen(buffer); if(input_length > NAMELEN) input_length = NAMELEN; strncpy(s->soyad, buffer, input_length); (s->soyad)[input_length] = '\0'; cout << "yas: "; cin >> s->yas; void sirala_ad(katilimci_t kdz[], int e_sayisi) char buffer[namesize]; int i, j, temp; for(i=0; i<e_sayisi; i++) for(j=i+1; j<e_sayisi; j++) if(strcmp(kdz[i].ad, kdz[j].ad)>0) strcpy(buffer, kdz[i].ad); strcpy(kdz[i].ad, kdz[j].ad); strcpy(kdz[j].ad, buffer); strcpy(buffer, kdz[i].soyad); strcpy(kdz[i].soyad, kdz[j].soyad); strcpy(kdz[j].soyad, buffer); temp = kdz[i].yas; kdz[i].yas = kdz[j].yas; kdz[j].yas = temp; void sirala_soyad(katilimci_t kdz[], int e_sayisi) char buffer[namesize]; int i, j, temp; for(i=0; i<e_sayisi; i++)

for(j=i+1; j<e_sayisi; j++) if(strcmp(kdz[i].soyad, kdz[j].soyad)>0) strcpy(buffer, kdz[i].ad); strcpy(kdz[i].ad, kdz[j].ad); strcpy(kdz[j].ad, buffer); strcpy(buffer, kdz[i].soyad); strcpy(kdz[i].soyad, kdz[j].soyad); strcpy(kdz[j].soyad, buffer); temp = kdz[i].yas; kdz[i].yas = kdz[j].yas; kdz[j].yas = temp; void sirala_yas(katilimci_t kdz[], int e_sayisi) char buffer[namesize]; int i, j, temp; for(i=0; i<e_sayisi; i++) for(j=i+1; j<e_sayisi; j++) if(kdz[i].yas > kdz[j].yas) strcpy(buffer, kdz[i].ad); strcpy(kdz[i].ad, kdz[j].ad); strcpy(kdz[j].ad, buffer); strcpy(buffer, kdz[i].soyad); strcpy(kdz[i].soyad, kdz[j].soyad); strcpy(kdz[j].soyad, buffer); temp = kdz[i].yas; kdz[i].yas = kdz[j].yas; kdz[j].yas = temp; #include "katilimci.h" #define KSAYISI 4

int main(void) katilimci_t k[ksayisi]; int looper; scan_katilimci(&k[looper]); cout << "katilimcilar:" << endl; print_katilimci(&k[looper]); sirala_ad(k, KSAYISI); cout << "katilimcilar (ada gore):" << endl; print_katilimci(&k[looper]); sirala_soyad(k, KSAYISI); cout << "katilimcilar (soyada gore):" << endl; print_katilimci(&k[looper]); sirala_yas(k, KSAYISI); cout << "katilimcilar (yasa gore):" << endl; print_katilimci(&k[looper]); 2. Açı birim dönüşümü Derece biriminden radyan birimine açı dönüşümü yapan drc2rad(), radyan biriminden derece birimine açı dönüşümü yapan rad2drc() fonksiyonlarını inline olarak tanımlayın, argümanlara, argüman tiplerine ve return tipine karar verin. Tanımladığınız fonksiyonları bir programda test edin: - Kullanıcı d veya D girerse, derece girişi alınsın, radyana çevrilsin, ekrana yazılsın. - Kullanıcı r veya R girerse, radyan girişi alınsın, dereceye çevrilsin, ekrana yazılsın. - Kullanıcı e veya E girerse, program kapansın. (Program sonsuz döngüde çalışsın.) - Kullanıcı farklı bir karakter girerse, ekrana yanlış giriş yazılsın. Çok dosyalı çalışın. PI = 3.14159 RAD = DRC RAD PI DRC = 180 180 PI #ifndef ACI_H #define ACI_H #define PI 3.14159 inline double drc2rad(double drc) return drc / 180 * PI;

inline double rad2drc(double rad) return rad / PI * 180; #endif // ACI_H #include "aci.h" int main(void) char islem; double aci; while(1) cout << "derece => radyan icin: d" << endl << "radyan => derece icin: r" << endl << "cikmak icin: e" << endl; cin >> islem; if(islem == 'd' islem == 'D') cout << " aci (derece) girin: "; cin >> aci; cout << aci << " derece = " << drc2rad(aci) << " radyan." << endl; else if(islem == 'r' islem == 'R') cout << " aci (radyan) girin: "; cin >> aci; cout << aci << " radyan = " << rad2drc(aci) << " derece." << endl; else if(islem == 'e' islem == 'E') cout << endl << "program kapaniyor." << endl; break; else cout << endl << "gecersiz islem sectiniz." << endl; 3. vektor Yapısı 3 boyutlu kartezyen uzayda vektör işlemleri için vektor_s yapısı ve vektor_t tipi tanımlayın. vektor_t tipinde değişkenlerle çalışmak için aşağıdaki fonksiyonları tanımlayın. - void vektor_gir(vektor_t &v) : kullanıcıdan vektör girişi al. - void vektor_yaz(const vektor_t &v) : vektörü ekrana yaz. Tanımladığınız tipi ve fonksiyonları bir programda kullanın: kullanıcıdan vektör girişi alın, girilen vektörü ekrana yazdırın.

#ifndef VEKTOR_H #define VEKTOR_H typedef struct vektor_s double x, y, z; vektor_t; void vektor_gir(vektor_t &v); void vektor_yaz(const vektor_t &v); #endif // VEKTOR_H void vektor_gir(vektor_t &v) cout << "x girin: "; cin >> v.x; cout << "y girin: "; cin >> v.y; cout << "z girin: "; cin >> v.z; void vektor_yaz(const vektor_t &v) cout << '(' << v.x << ',' << v.y << ',' << v.z << ')'; int main(void) vektor_t v1; cout << "vektor girin:" << endl; vektor_gir(v1); cout << "girilen vektor: "; vektor_yaz(v1);

4. vektor Fonksiyonları Daha önce oluşturduğunuz vektor_t tipini kullanan aşağıdaki fonksiyonları tanımlayın. Argümanlara, argüman tiplerine ve return tipine karar verin. - Bir vektörün genliğini bulmak için genlik() fonksiyonu. genlik((a x, a y, a z )) = a x 2 + a y 2 + a z 2 Gereken fonksiyonlar ve kütüphaneleri: <cmath> double sqrt(double) - İki vektörün nokta çarpımını bulmak için ncarpim() fonksiyonu. (a x, a y, a z ) (b x, b y, b z ) = a x b x + a y b y + a z b z Tanımladığınız fonksiyonları bir programda kullanın: kullanıcıdan iki vektör girişi alın, girilen vektörleri ekrana yazdırın, vektörlerin genliklerini ekrana yazdırın, vektörlerin nokta çarpımını ekrana yazdırın. Çok dosyalı çalışın. #ifndef VEKTOR_H #define VEKTOR_H typedef struct vektor_s double x, y, z; vektor_t; void vektor_gir(vektor_t &v); void vektor_yaz(const vektor_t &v); double genlik(const vektor_t &v); double ncarpim(const vektor_t &v1, const vektor_t &v2); #endif // VEKTOR_H #include <cmath> void vektor_gir(vektor_t &v) cout << "x girin: "; cin >> v.x; cout << "y girin: "; cin >> v.y; cout << "z girin: "; cin >> v.z; void vektor_yaz(const vektor_t &v) cout << '(' << v.x << ',' << v.y << ',' << v.z << ')'; double genlik(const vektor_t &v) return sqrt(v.x*v.x + v.y*v.y + v.z*v.z); double ncarpim(const vektor_t &v1, const vektor_t &v2) return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;

int main(void) vektor_t v1, v2; cout << "v1 vektorunu girin:" << endl; vektor_gir(v1); cout << "v2 vektorunu girin:" << endl; vektor_gir(v2); cout << "v1:"; vektor_yaz(v1); cout << " genlik(v1)=" << genlik(v1) << endl; cout << "v2:"; vektor_yaz(v2); cout << " genlik(v2)=" << genlik(v2) << endl; cout << "v1.*v2=" << ncarpim(v1, v2) << endl; 5. vektor Fonksiyonları Daha önce oluşturduğunuz vektor_t tipini kullanan aşağıdaki fonksiyonları tanımlayın. Argümanlara, argüman tiplerine ve return tipine karar verin. - Bir vektörün bir skalar ile çarpımı için scarpim() fonksiyonu. - İki vektörün çapraz çarpımını bulmak için xcarpim() fonksiyonu. (a x, a y, a z ) (b x, b y, b z ) = (a y b z a z b y, a z b x a x b z, a x b y a y b x ) Tanımladığınız fonksiyonları bir programda test edin: kullanıcıdan iki vektör girişi alın, girilen vektörleri ekrana yazdırın, vektörlerin çapraz çarpımını hesaplayın ve ekrana yazdırın, bir skalar girişi alın ve çapraz çarpım sonucu olan vektör ile skaların çarpımını ekrana yazıdırn. Çok dosyalı çalışın. #ifndef VEKTOR_H #define VEKTOR_H typedef struct vektor_s double x, y, z; vektor_t; void vektor_gir(vektor_t &v); void vektor_yaz(const vektor_t &v); vektor_t scarpim(double skalar, const vektor_t &v); vektor_t xcarpim(const vektor_t &v1, const vektor_t &v2); #endif // VEKTOR_H void vektor_gir(vektor_t &v)

cout << "x girin: "; cin >> v.x; cout << "y girin: "; cin >> v.y; cout << "z girin: "; cin >> v.z; void vektor_yaz(const vektor_t &v) cout << '(' << v.x << ',' << v.y << ',' << v.z << ')'; vektor_t scarpim(double skalar, const vektor_t &v) vektor_t s; s.x = v.x * skalar; s.y = v.y * skalar; s.z = v.z * skalar; return s; vektor_t xcarpim(const vektor_t &v1, const vektor_t &v2) vektor_t v; v.x = v1.y*v2.z - v1.z*v2.y; v.y = v1.z*v2.x - v1.x*v2.z; v.z = v1.x*v2.y - v1.y*v2.x; return v; int main(void) vektor_t v1, v2, v3; double a; cout << "v1 vektorunu girin:" << endl; vektor_gir(v1); cout << "v2 vektorunu girin:" << endl; vektor_gir(v2); cout << "v1:"; vektor_yaz(v1); cout << "v2:"; vektor_yaz(v2); v3 = xcarpim(v1, v2); cout << "v3=v1*v2="; vektor_yaz(v3); cout << "skalar girin:"; cin >> a; cout << "a*v3="; vektor_yaz(scarpim(a, v3));