else *on=*on+1; return gecici; } int giseyeyerlestir(struct gise*giseler) {//giseye bos olmasi durumunda yerlestirme yapiliyor...

Benzer belgeler
printf("\nbilgilerini goruntulemek istediginiz ogrencinin numarasini girin: "); scanf("%d",&no);

menu(besleme,toplam_odul,array,tercih,puan);//deger dondurmeyen fonksiyon cagiriliyor...

PROSESLER. Proses. Proses

Proses. Prosesler 2. İşletim Sistemleri

Hafta 11 Çok Boyutlu Diziler

Başkent Üniversitesi MühendislikFakültesi BaharYarıyılı YerSıra No BİL 101 Bilgisayar Yazılımı-I Dersi Dönem Sonu MAZERET Sınavı

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

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

ALGORİTMA VE PROGRAMLAMA I

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

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

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

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

Yigin & Kuyruk {\} /\ Suhap SAHIN Onur GÖK

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

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

Giris {\} /\ Suhap SAHIN Onur GÖK

Programlama Dilleri Laboratuvarı

Hafta 12 Karakter Tutan Diziler

YMT219 VERİ YAPILARI ÖDEV-1

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

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

BİL1001 Bilgisayar Bilimlerine Giriş 1

BİLG Dr. Mustafa T. Babagil 1

C PROGRAMLAMA D İ L İ

Dr. Fatih AY Tel: fatihay@fatihay.net

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İ

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

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

Arasınav Sınavı Soruları Güz 2017 Süre: 90 Dakika

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

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İ

YAPILAR (STRUCTURES)

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

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

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ı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

İşletim Sistemleri-II

Diziler (Arrays) Çok Boyutlu Diziler

BLM 111 ALGORİTMA VE PROGRAMLAMA I

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Bil Hafta Çalışma Soruları (Yanıtlar)

C ile Uygulamalar 2 - Cevaplar

Bil 105 Laboratuvar (1. Hafta Problemleri)

8. İŞARETCİLER (POINTERS)

ALGORİTMA VE PROGRAMLAMA I

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

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

C PROGRAMLAMA D İ L İ

ALGORİTMA VE PROGRAMLAMA II

Fall Object-Oriented Programming Laboratory 02 - Structures

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

C++ Dersi: Nesne Tabanlı Programlama

C dilinde if-else yapısı

ALGORİTMA VE PROGRAMLAMA I

Final Sınavı Soruları Bahar 2018

Adı Soyadı : Öğrenci No :

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

STRİNG DİZİLER(KATARLAR)

C++ Dersi: Nesne Tabanlı Programlama

Hafta 13 Fonksiyonlar

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

C ile Uygulamalar 4 - Cevaplar

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

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

ALGORİTMA VE PROGRAMLAMA I

BÖLÜM 4 FONKSİYONLAR. Fonksiyonlar programların etkinliğini, kolay yazılmasını, anlaşılmasını ve bellekte daha az yer kaplamasını sağlayan bloklardır.

Fonksiyonlar. Yrd.Doç.Dr.Bülent Çobanoğlu

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

AVL Agacı {\} /\ Suhap SAHIN Onur GÖK

Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu. İstemci. socket() Bir soket yarat. bind()

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Programlama Dilleri 1. Ders 5: Göstericiler

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

C PROGRAMLAMA D İ L İ

C Programlama Dilinde Değişkenler

// Aşağıdaki programın çıktısı nedir?

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

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

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

C++ Dersi: Nesne Tabanlı Programlama

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Strings(Karakter Dizisi)

Programlama Dilleri Laboratuvarı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

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

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

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

Hazır Fonksiyonlar {\} /\ Suhap SAHIN Onur GÖK 1

Transkript:

///////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////// ALGORITMA VE PROGRAMALAMA DERSI ODEV-3 ////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////// #include <stdio.h> #include <stdlib.h> #define MAX 100 struct musteri //musterinin verileri struct yapisi haline getiriliyor... int no; int gelis; int hizmetsuresi; int islembaslangici; ; struct max//istenen maximum degerleri tutmak icin bir baska struct yapisi kullaniliyor... int beklemesuresi; int uzunluk; ; struct gise// gise bilgilerini tutan struct yapisi... int giseno; int toplammus; int toplamsure; ; int bos_mu(int on)//kuyrugun bos olup olmadigini kontrol eden fonk... if (on==-1)//bossa 1 dondurur... return 1; else //degilse 0 dondurur... return 0; void dairesel_ekle(struct musteri *kuyruk, int *on, int *arka, struct musteri yeni) //kuyruga musteri eklemk icin yazilmis fonk... if ((*arka+1)% MAX ==*on)//kuyruk doluysa... printf("kuyruk dolu!\n"); return; *arka=(*arka+1)% MAX;//kuyrugun sonuna ekleme yapiliyor... kuyruk[*arka]=yeni; if (*on==-1) *on=0; struct musteri dairesel_sil(struct musteri *kuyruk, int *on, int *arka) //kuyrugun basindan eleman siliniyor... struct musteri gecici; gecici=kuyruk[*on]; if (*on==*arka) *on=-1; *arka=-1; return gecici; if (*on==max-1) *on=0;

else *on=*on+1; return gecici; int giseyeyerlestir(struct gise*giseler) //giseye bos olmasi durumunda yerlestirme yapiliyor... int no=-1; if(giseler[0].giseno==0) no=0; else if(giseler[1].giseno==0) no=1; else if(giseler[2].giseno==0) no=2; return no;//hangi giseye yerlestirildiyse o gisenin numarasi donduruluyor... int main() //degiskenler tanimlanir... struct gise giseler[3];//3 ayri gise icin 3 elemanli struct yapisinda dizi tutuluyor... struct musteri kuyruk[max];//musterileri yerlestirmek icin struct yapisinda dizi olusturuluyor... struct musteri bir_musteri;//kuyruga ekleme icin kullanilan yapi struct musteri musteriler[3];//kuyruktan alinan musteriler icin kullanilan yapi... struct max deger;//maximum degerleri tutan struct yapisi... int on=-1; int arka=-1; int sure,cekirdek,musterisay,terketti[3]=0,zaman,bekleme,bitti,i,gelis,sonraki_gelis,no,uzunluk,toplam Mus=0,toplamSure=0,islemBasladi[3]=0,toplamBekleme=0; printf("\n Cekirdek degerini girin : "); scanf("%d",&cekirdek); srand(cekirdek); printf("\n Simulasyon suresini girin: "); scanf("%d",&sure); printf("\n Simulasyon basliyor...\n"); for(i=0; i<3; i++)//ilk deger atanir... giseler[i].giseno=0; giseler[i].toplammus=0; giseler[i].toplamsure=0; musteriler[i].hizmetsuresi=0; deger.beklemesuresi=0; deger.uzunluk=0; musterisay=1;//ilk musteri gelir... gelis=rand()%6;//gelme zamani atanir... bir_musteri.no=musterisay;//bir_musteri struct ina gerekli veriler gonderilir...

bir_musteri.gelis=gelis; dairesel_ekle(kuyruk,&on,&arka,bir_musteri);//kuyruga eklem yapilir... sonraki_gelis=bir_musteri.gelis+rand()%6;//sonraki gelis belirlenir... printf("\n %.02d. dakikada Musteri#%d geldi \n",gelis,musterisay); no=giseyeyerlestir(giseler);//ilk musteride tum giseler bos bu nedenle direkt giseye yerlestirden sonra isleme baslanir... giseler[no].giseno=1;//gise dolu gostergesi... musteriler[no].no=kuyruk[on].no;//kuyruktan giseye giden musterinin verileri alinir... for( zaman=gelis; zaman<sure; zaman++)//simulasyon suresi icin for dongusu... while(zaman==sonraki_gelis) //oncelik kuyruga musteri eklemenin ve sonraki gelis ile zaman esitse kuyruga yeni musteri ekle musterisay++;//yeni musteri verileri alinir kuyruga eklenir.. bir_musteri.no=musterisay; bir_musteri.gelis=sonraki_gelis; dairesel_ekle(kuyruk,&on,&arka,bir_musteri); printf(" %.02d. dakikada Musteri#%d geldi \n",bir_musteri.gelis,musterisay); sonraki_gelis=bir_musteri.gelis+rand()%6;//sonraki gelis belirleniyor... uzunluk=(arka-on+1+max)%max; if(uzunluk>deger.uzunluk) deger.uzunluk=uzunluk; for(i=0; i<3; i++)//her gise icin islem bitti mi kontrolu yapiliyor... if(giseler[i].giseno!=0)//gise bos degilse... if(islembasladi[i]==1)//gisede islemi biten... if((musteriler[i].islembaslangici+musteriler[i].hizmetsuresi)==zaman) printf(" %.02d. dakikada Musteri#%d gise#%d i terk etti. \n",zaman,musteriler[i].no,i+1); giseler[i].giseno=0;//gise bos... terketti[i]=1;//musteri giseyi terketti... if(bos_mu(on)==0)//kuyrukta hala musteri varsa... no=giseyeyerlestir(giseler);//giseye yerlestir... if(no!=-1)//bos gise varsa... //kuyruktan veriler alinir... musteriler[no].no=kuyruk[on].no; terketti[no]=0;//henuz giseyi terketmedi...

giseler[no].giseno=1;//gise dolu... if(no!=-1 && islembasladi[no]!=1 ) //giseye yerlestiyse... musteri icin islem baslamadiysa... printf(" %.02d. dakikada Musteri#%d gise#%d de isleme basladi. \n",zaman,musteriler[no].no,no+1); musteriler[no].islembaslangici=zaman; islembasladi[no]=1;//islem basladi... bekleme=musteriler[no].islembaslangici-musteriler[no].gelis;//bekleme suresi hesaplanir... toplambekleme+=bekleme; if(bekleme>deger.beklemesuresi) deger.beklemesuresi=bekleme;//max bekleme suresini bulmak icin karsilastirma yapiliyor... //gisedeki toplam musteri sayisi ve hizmet suresi hesaplaniyor.. giseler[no].toplammus=giseler[no].toplammus+1; giseler[no].toplamsure=giseler[no].toplamsure+musteriler[no].hizmetsuresi; //simulasyon suresi bittikten sonra... if(bos_mu(on)==0)//kuyrukta hala musteri varsa... no=giseyeyerlestir(giseler);//giseye yerlestir... if(no!=-1) //gerekli veriler kuyruktan alinir... musteriler[no].no=kuyruk[on].no; terketti[no]=0;//henuz giseyi terketmedi... giseler[no].giseno=1;//gise dolu... while(bos_mu(on)==0)//kuyrukta musteri varsa for(i=0; i<3; i++)//her gise icin islemi biten musteri var mı bakiliyor... if(giseler[i].giseno!=0)//gise doluysa... if(islembasladi[i]==1)//gisede islemi biten... if((musteriler[i].islembaslangici+musteriler[i].hizmetsuresi)==zaman) printf(" %.02d. dakikada Musteri#%d gise#%d i terk etti. \n",zaman,musteriler[i].no,i+1); giseler[i].giseno=0;//gise bos... terketti[i]=1;//musteri giseyi terketti... if(bos_mu(on)==0)//kuyrukta hala musteri varsa... no=giseyeyerlestir(giseler);//giseye yerlestir... if(no!=-1)

//gerekli bilgiler kuyruktan aliniyor... musteriler[no].no=kuyruk[on].no; terketti[no]=0;//giseyi terketmedi henuz... giseler[no].giseno=1;//gise dolu... if(no!=-1) //giseye yerlestiyse... if(islembasladi[no]!=1 ) //musteri icin islem baslamadiysa printf(" %.02d. dakikada Musteri#%d gise#%d de isleme basladi. \n",zaman,musteriler[no].no,no+1); musteriler[no].islembaslangici=zaman; islembasladi[no]=1;//islem basladi... bekleme=musteriler[no].islembaslangici-musteriler[no].gelis;//bekleme suresi hesaplaniyor... toplambekleme+=bekleme; if(bekleme>deger.beklemesuresi)//max deger icin gerekli karsilastirma yapiliyor... deger.beklemesuresi=bekleme; //gisedeki toplam musteri sayisi ve hizmet suresi hesaplaniyor.. giseler[no].toplammus=giseler[no].toplammus+1; giseler[no].toplamsure=giseler[no].toplamsure+musteriler[no].hizmetsuresi; zaman++; bitti=0;//musterilerin ıslemleri bitmedi... while(bos_mu(on)==1 && bitti==0)//kuyruk bossa ve musterilerin islemleri bitmediyse... for(i=0; i<3; i++)//her gise icin kontrol yapiliyor... if(giseler[i].giseno!=0)//gise doluysa... if(islembasladi[i]==1)//gisede islemi biten... if((musteriler[i].islembaslangici+musteriler[i].hizmetsuresi)==zaman) printf(" %.02d. dakikada Musteri#%d gise#%d i terk etti. \n",zaman,musteriler[i].no,i+1); giseler[i].giseno=0;//gise bos... terketti[i]=1;//musteri giseyi terketti... if(terketti[0]==1 && terketti[1]==1 && terketti[2]==1)//3 gise de bossa bitti=1;//islemler bitti... zaman++; for(i=0; i<3; i++)//giselerdeki toplam degerler hasaplaniyor... toplammus=toplammus+giseler[i].toplammus; toplamsure=toplamsure+giseler[i].toplamsure;

printf("\nsimulasyon sonuclari: \n"); printf("herhangi bir zamanda kuyrukta bulunan max kisi sayisi : %d\n",deger.uzunluk); printf("kuyrukta en uzun sure bekleyen musterinin bekleme suresi: %d\n",deger.beklemesuresi); printf("bir musterinin kuyrukta ortalama bekleme suresi : %.2f\n\n",((float)toplamBekleme/(float)musteriSay)); printf("gise No Toplam Musteri Sayisi Ortalama Hizmet Verme Suresi\n"); printf("------- --------------------- ----------------------------\n"); for(i=0; i<3; i++) printf("gise-%d %-20d %.2f\n",(i+1),giseler[i].toplamMus,(float)giseler[i].toplamSure/(float)giseler[i].toplamMus); return 0;