ÇİZELGELEME 3003080041 Hakkı ÖZTÜRK 3003080041 Burak İZCİ 3103080015 Anıl DEMİR 3103080014 Gizem ÇINAR
ÇİZELGELEME
3003080041 Hakkı ÖZTÜRK
3003080041 Burak İZCİ
3103080015 Anıl DEMİR
3103080014 Gizem ÇINAR
İÇİNDEKİLER: Problemin Tanımı………………………………………………………………………………3
Problemin Algoritması…………………………..………………………………………….4
Problemin Akış Şeması………………………………………………………………………6
Problemin C Kodu……………………………………………………………………………..8
Örnekler
a) Örnek 1…………………………………………………………………………………………….…...18
b) Örnek 2……………………………………………………………………………………….…………19
2
ÇİZELGELEME:Teslim tarihi ve işlem süresi verilen N tane işi, seçimli
olarak ya en kısa işlem süresine göre ya da en yakın teslim tarihli işe göre sıralayarak, seçilen sıralama türüne göre oluşan toplam gecikmeyi hesaplayan bir C programı yazınız. Yapılması gerekenler aşağıda sıralanmıştır:1. Kullanıcıdan N sayısı istenecektir.2. Bu N işe ait işlem süreleri kullanıcıdan istenecektir.3. Her işe ait teslim süresi (1-5) arasında üretilen bir rastgele sayı ile
işlem süresinin çarpılması ile hesaplanacaktır. Örnek: işlem süresi 15 ise teslim süresi 15*4=60 olacaktır.
4. Kullanıcıya hangi kritere göre işlerin sıralanacağı sorulacaktır. Verilen cevaba göre işler sıralanacaktır.
5. İşler sıralandıktan sonra toplam gecikme (işin bitiş zamanı-teslimat süresi) hesaplanacaktır. Teslim tarihinden önce biten işlerde gecikme olmadığını unutmayın.
3
PROBLEMİN TANIMI
PROBLEMİN ALGORİTMASI Adım 1: Programa başla. Adım 2: N sayısını iste. Adım 3: N sayısını oku. Adım 4: İşlem sürelerini iste. Adım 5: İşlem sürelerini oku. Adım 6: a[i] dizisine 1 ile 5 arasında rastgele sayı ata. Adım 7: Teslim süresi=işlem süresi*a[i] Adım 8: Teslim süresini yaz. Adım 9: Teslim süresinin ilk haline x i işlem süresinin ilk halini
normal işlem süresine ata. Adım 10: Seçime götür. Seçim 1 ise en kısa işlem süresine göre
sırala veya seçim 2 ise en kısa teslim süresine göre sırala. Değilseadım 1’e dön
Adım 11: Sıralamayı yazdır.
4
5
Adım 12: Gecikme süresi=işlem süresi-normal işlem
Adım 13: Gecikme süresini yazdır.
Adım 14: Gecikme süresi >0 ise gecikmeleri toplat ve yazdır. Değilse adım 15’e geç.
Adım 15: Bitir.
PROBLEMİN AKIŞ ŞEMASI
6
7
PROBLEMİN C KODU #include<stdio.h> #include<conio.h> #include<math.h> #include<string.h> main () { int n; srand(time(NULL)); printf("n sayisini giriniz:\n"); scanf("%d",&n); int
islemsuresi[n],teslimsuresi[n],a[n],i,j,secim,k,x[n],normalislem[n],gecikme[n],toplam=0;
8
for(i=0;i<n;i++)
{
printf("%d.islem suresini giriniz:\n=",i+1);
scanf("%d",&islemsuresi[i]);
a[i]=1+rand()%5;
teslimsuresi[i]=0;
}
printf("teslim suresi:\n");
9
for(i=0;i<n;i++) { gecikme[i]=0; x[i]=0; normalislem[i]=0; teslimsuresi[i]=a[i]*islemsuresi[i]; } for(i=0;i<n;i++) { printf("%d.urunun teslim suresi=\n",i+1); printf("%d\n",teslimsuresi[i]); }
10
strcpy(x,teslimsuresi);
strcpy(normalislem,islemsuresi);
printf("***MENU***\n");
printf("[1] en kisa islem suresine gore\n");
printf("[2] en kisa teslim tarihine gore\n");
printf("seciminiz:\n");
scanf("%d",&secim);
switch(secim)
11
{ case 1: for(i=0;i<=n;i++) { for (j=i+1;j<=n-1;j++) { if(islemsuresi[i]>islemsuresi[j]) { k=islemsuresi[i]; islemsuresi[i]=islemsuresi[j]; islemsuresi[j]=k; } } } for(i=0;i<n;i++) { printf("%d-",islemsuresi[i]); } break;
12
case 2: for(i=0;i<=n;i++) { for (j=i+1;j<=n-1;j++) { if(teslimsuresi[i]>teslimsuresi[j]) { k=teslimsuresi[i]; teslimsuresi[i]=teslimsuresi[j]; teslimsuresi[j]=k; } } } for(i=0;i<n;i++) { printf("%d-",teslimsuresi[i]); } break;
13
default:
printf("Yanlis secim. Tekrar deneyin!");
break;
}
14
if(secim=1) { for(i=0;i<n;i++) { gecikme[i]=islemsuresi[i]-normalislem[i]; printf("\n"); printf("%d\n",gecikme[i]); if(gecikme[i]>0) { toplam+=gecikme[i]; } } }
15
else { for(i=0;i<n;i++) { gecikme[i]=teslimsuresi[i]-x[i]; printf("%d\n",gecikme[i]); if(gecikme[i]>0) { toplam+=gecikme[i]; } } }
16
printf("toplam gecikme=%d",toplam);
return 0;
}
17
Örnek 1:
18
ÖRNEKLER
Örnek 2:
19
Bizi dinlediginiz için tesekkür ederiz …
20