Konuyu görüntüle
IUCODERS FORUM > Duyurular > Okul ile ilgili > veri yapıları bütünleme
Yazar
cokomastik


avatar

Kayıt: 14.09.2008
08.02.2011-22:36 #73388
arkadaş ters çevrilmiş dosya yapısı ne demek?





Yazar
cguzel


avatar

Kayıt: 11.02.2010
08.02.2011-22:55 #73389
cokomastik yazdi
 
//Bir yanlışlık gördüğünüzde söylerseniz sevinirim

#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>

typedef struct bolum //islem yapılan bölümler için
{
int urun; //içerisinde urun varsa numarasını tutar, yoksa -1
int sure; //urunun bölüme giriş anını tutar
}bolum;

//fonksiyonları kolay yazmak için bütün değişkenleri global yaptım
int zaman=0,bas=0,son=0,cikson=0;
//zamanx10 dakika şeklinde düşünün her döngüde zaman 1 artıyor
//yani 10 dakikalık adımlarla işleyişler gerçekleşiyor
//bas ve son deiskenleri liste ve stack yapıları için
int urunler[5]={-1,-1,-1,-1,-1}; //önişlem sırası bekleyen ürünleri tutmak için
int cikanlar[72]; //çıkan ürünleri tutmak için
bolum onbol,birbol,ikibol,arabol; //bölümler

void urunyarat ()
{
urunler[son]=rand()%100;
son=(son+1)%5;
}

void onislem()
{
if(onbol.urun==-1) //bölüm boş ise yeni ürün alıcak urunler listesinden
{
if (urunler[bas]!=-1) //ürünler listesinde yeni ürün varsa alabilir sadece
{
onbol.urun=urunler[bas];
onbol.sure=zaman;
urunler[bas]=-1;
bas=(bas+1)%5;
}
}
else if ((zaman-onbol.sure)>=1 && birbol.urun==-1) //ürün işlem ömrünü doldurduysa ve sonraki bölüm boş ise göndericek
{
birbol.urun=onbol.urun;
birbol.sure=zaman;
onbol.urun=-1;
}
}

void birislem() //birinci bölümde ürün varsa ve işlem ömrü dolduysa arabölüme gönderiyor
{
if(birbol.urun!=-1 && (zaman-birbol.sure)>=2)
{
arabol.urun=birbol.urun;
arabol.sure=zaman;
birbol.urun=-1;
}
}

void ara()
{
if(arabol.urun!=-1 && (zaman-arabol.sure)>=1)
{
ikibol.urun=arabol.urun;
ikibol.sure=zaman;
arabol.urun=-1;
}
}

void ikiislem()
{
if(ikibol.urun!=-1 && (zaman-ikibol.sure)>=3) //
{
cikanlar[cikson]=ikibol.urun;
arabol.urun=-1;
cikson++;
}
}

int main()
{
srand(time(NULL));
onbol.urun=-1; birbol.urun=-1; ikibol.urun=-1; arabol.urun=-1;
while (zaman<72) //her 10 dakika 1 zamana eşittir
{
if ((rand()%100<50)) //%50 ihtimalle ürün yaratılır.
{
urunyarat();
} //islemlerin tersten olmasının nedeni bir işlem ürünü çıkarttığında diğer işlemin hemen alabilmesi için
ikiislem();
ara();
birislem();
onislem();
zaman++;
}
}




arkadaşlar bu kodda struct aşamaları tutuyor. her bir aşamayı nesne olarak tanımlamış.
ben ise her bir ürünü nesne olarak düşündüm. benim gibi düşünen var mı?





Yazar
cokomastik


avatar

Kayıt: 14.09.2008
08.02.2011-22:57 #73390
ben aynı soruyu sordum hoca çok derin düşünmeyin soruda sorulanı yapsın yeter demiş sınavda





Yazar
abuzer


avatar
istanbul
Kayıt: 15.10.2007
08.02.2011-23:20 #73391
cguzel yazdi
 
cokomastik yazdi [quote]//Bir yanlışlık gördüğünüzde söylerseniz sevinirim

#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <stdlib.h>

typedef struct bolum //islem yapılan bölümler için
{
int urun; //içerisinde urun varsa numarasını tutar, yoksa -1
int sure; //urunun bölüme giriş anını tutar
}bolum;

//fonksiyonları kolay yazmak için bütün değişkenleri global yaptım
int zaman=0,bas=0,son=0,cikson=0;
//zamanx10 dakika şeklinde düşünün her döngüde zaman 1 artıyor
//yani 10 dakikalık adımlarla işleyişler gerçekleşiyor
//bas ve son deiskenleri liste ve stack yapıları için
int urunler[5]={-1,-1,-1,-1,-1}; //önişlem sırası bekleyen ürünleri tutmak için
int cikanlar[72]; //çıkan ürünleri tutmak için
bolum onbol,birbol,ikibol,arabol; //bölümler

void urunyarat ()
{
urunler[son]=rand()%100;
son=(son+1)%5;
}

void onislem()
{
if(onbol.urun==-1) //bölüm boş ise yeni ürün alıcak urunler listesinden
{
if (urunler[bas]!=-1) //ürünler listesinde yeni ürün varsa alabilir sadece
{
onbol.urun=urunler[bas];
onbol.sure=zaman;
urunler[bas]=-1;
bas=(bas+1)%5;
}
}
else if ((zaman-onbol.sure)>=1 && birbol.urun==-1) //ürün işlem ömrünü doldurduysa ve sonraki bölüm boş ise göndericek
{
birbol.urun=onbol.urun;
birbol.sure=zaman;
onbol.urun=-1;
}
}

void birislem() //birinci bölümde ürün varsa ve işlem ömrü dolduysa arabölüme gönderiyor
{
if(birbol.urun!=-1 && (zaman-birbol.sure)>=2)
{
arabol.urun=birbol.urun;
arabol.sure=zaman;
birbol.urun=-1;
}
}

void ara()
{
if(arabol.urun!=-1 && (zaman-arabol.sure)>=1)
{
ikibol.urun=arabol.urun;
ikibol.sure=zaman;
arabol.urun=-1;
}
}

void ikiislem()
{
if(ikibol.urun!=-1 && (zaman-ikibol.sure)>=3) //
{
cikanlar[cikson]=ikibol.urun;
arabol.urun=-1;
cikson++;
}
}

int main()
{
srand(time(NULL));
onbol.urun=-1; birbol.urun=-1; ikibol.urun=-1; arabol.urun=-1;
while (zaman<72) //her 10 dakika 1 zamana eşittir
{
if ((rand()%100<50)) //%50 ihtimalle ürün yaratılır.
{
urunyarat();
} //islemlerin tersten olmasının nedeni bir işlem ürünü çıkarttığında diğer işlemin hemen alabilmesi için
ikiislem();
ara();
birislem();
onislem();
zaman++;
}
}


Güzel düşünmüşsün ama ürünü oluşturduktan sonra ürünü bölümler arasında ilişkilendirecek parametreleri fonksiyonlara eklememişsin







Yazar
cokomastik


avatar

Kayıt: 14.09.2008
08.02.2011-23:43 #73392
neden yahu bolum.urun o bolumda hangi ürün olduunu gösteriyor.
-1 ise boş o bölüm.





Yazar
cguzel


avatar

Kayıt: 11.02.2010
08.02.2011-23:49 #73393
abuzer yazdi
 

Güzel düşünmüşsün ama ürünü oluşturduktan sonra ürünü bölümler arasında ilişkilendirecek parametreleri fonksiyonlara eklememişsin



o kod benim değil ama o diğer arkadaşın





Yazar
brkygt


avatar

Kayıt: 29.06.2010
08.02.2011-23:51 #73394
Hüseyin, bu fonksiyonlardaki zaman-onbol.sure, zaman-birbol.sure filan onun mantığı nedir? Bir de zaman<72 demişsin. Genel olarak mantığı doğru buldum ama bu zamanla ilgili olanları nasıl düşündün pek anlamadım.





Yazar
idontcare


avatar
istanbul
Kayıt: 22.01.2009
08.02.2011-23:57 #73397
arkadaslar bence bu sorulara derin düsünmeyelim yinede mantıgını ezberleyip yazarız yarın
benim endişem yarın hoca sınavda enteresan bi graf sorusu daha sorabilir buna hazırlıklı olmamız gerektiğini düşünüyorum





i dont care
Yazar
cokomastik


avatar

Kayıt: 14.09.2008
09.02.2011-00:10 #73399
zamanı açıkladım aslında her while döngüsü sonunda zaman 1 artıyor.
yani her döngüde saat 10 dakika ilerliyor diye düşünün. İş sürecini 10 dakikalık bölümlere ayrılmış gibi. 72 olmasının nedeni de 1 günde 12 saat çalışır diye düşündüm.
ayrıca süre de ürünün bölüme giriş saatini tutuyor.
yani 0 anı saat 8.00 ise ürün 5 anında girdiğinde saat 9.00da girmiş oluyor ve 6 anında 9.10 oluyor zaman. yani ürün önbölümden çıkmaya hazır. 6da 1. bölüme giriyor hemen. 1. bölüme giriş saati 9.10. zaman 8 olduğunda yani saat 9.30 olduğunda 1. bölümden çıkıyor vs vs.

ayrıca ters çevrilmiş dosya yapısı ne oluyor bilen var mı?





Yazar
ysfyzl


avatar

Kayıt: 04.12.2006
09.02.2011-00:27 #73400
cokomastik yazdi
 

ayrıca ters çevrilmiş dosya yapısı ne oluyor bilen var mı?


indexe girmiyor mu bu konu?
İndexe giriyorsa,index sorulmayacak denmişti.














Yazar
derinyesil


avatar
MardiN
Kayıt: 16.02.2010
09.02.2011-01:02 #73401
Merhaba arkadaşlar dosyadan okuma ve sıralama ve başka dosyaya yazma ile ilgili biraz acele bir kod yazdım.Çok ayrıntılı yazmadım en azından bir fikir veririr.peace


#include<stdio.h>

struct den{ // ara bilgiyi tuttan yapımızın tipi.
int no;
char ad[10];
};

typedef struct den Den;

int main()
{
Den a[3]; // 3 adet yapı elamanına sahip dizi
Den temp; // ara yapıyı tuttan değişken

FILE *fptr,*yptr;

fptr=fopen("deneme.txt","r");
if(fptr==NULL)
printf("dosya a.ılmadı");

yptr=fopen("yaz.txt","w");
if(yptr==NULL)
printf("dosya acılmadı");




while(!feof(fptr))
{
for(int i=0;i<3;i++) // dongude dosyadan veriyi okuyum elemanı yapı olan diziye atıyor.
fscanf(fptr,"%d %s ",&a[i].no,&a[i].ad);

for(int i=0; i<=2;i++)//burda no ya gore karşılaştıryor ve elemanı yapı olan diziyi
// no ya gore sıralıyor.
{
for(int j=i+1;j<=3;j++)
{
if(a[i].no > a[j].no)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}

}
for(int i=0;i <3;i++)//burda da dizinin elemanlarını dosyaya yazıyor.
{
fprintf(yptr,"%d %s
",a[i].no,a[i].ad);

}


fclose(fptr);

return 0;
}



deneme.txt

23 ali
9 can
14 ayse


gibi bilgi icerdiğini farzediyoruz.Tabi istediğimiz kadar veriyi koyabiliyoruz.






Bugün MUTLU OLMAYI seç...!

www.javrasya.com












Yazar
ysfyzl


avatar

Kayıt: 04.12.2006
09.02.2011-01:29 #73402
Bu seneki notlarda 3 limanı olan bi rıhtım simülasyonunun ödev olarak verildiğini gördüm,
yapan varsa paylaşabilir mi?thinking














Yazar
ysfyzl


avatar

Kayıt: 04.12.2006
09.02.2011-03:57 #73403
Eksiğiyle gediğiyle 4.soruyu yapmaya çalıştım.
#include<stdlib.h>
#include<stdio.h>

typedef struct kuyruk{
	int no;
	int zaman=0;
	struct kuyruk *sonraki;
}kuyruk;

kuyruk *ilk = NULL;
kuyruk *son = NULL;

kuyruk *onislem(kuyruk *);
kuyruk *birincisslem(kuyruk *);
void ikinciislem(kuyruk *);
kuyruk *ara(kuyruk *);

void eklekuyruk(int);
kuyruk *sil(void);

int main()
{
    
	 int i;
	 int k;
	 kuyruk *gecici1,*gecici2,*gecici3,*gecici4;
	 
	 for (i = 1; i <= 20; ++i)
	 {
		eklekuyruk(i);
	 }
	 
     while (ilk){
		 if (ilk != NULL){
                 
  	         gecici1=sil();
  	         gecici2=onislem(gecici1);
			 gecici3= birinciislem(gecici2);
			 gecici4=ara(gecici3);
			 ikinciislem(gecici4);
			 
			 
	 }
	 
	 system("PAUSE");
	 
	 return 0;
}


void eklekuyruk(int i)
{
	kuyruk *yeni;
	yeni = (kuyruk*)malloc(sizeof(kuyruk));
	yeni->sonraki = NULL;
	yeni->no = i;
	if (ilk == NULL){
		ilk = yeni;
		son = yeni;
	}
	else {
		son->sonraki = yeni;
		son = yeni;
	}
}

kuyruk *sil(void)
{
	kuyruk *p;
	int data;
	p = ilk;
	data = p->no;
	if (ilk == NULL)
		printf("liste bos
");
	else {
		ilk = ilk->sonraki;
		if (ilk == NULL)
			son = NULL;
	}
	
	free(p);
	
	return ilk;
}

kuyruk *onislem(kuyruk *tempPtr)
       {
        tempPtr->zaman+=10;
        printf("%d. ürün ön islemde,bu işlemle birlikte toplam işlem süresi %d dakika oldu
",tempPtr->no,tempPtr->zaman);
        return tempPtr;
       }

kuyruk *birinciislem(kuyruk *tempPtr)
       {
        tempPtr->zaman+=20;
        printf("%d. ürün birinci islemde,bu işlemle birlikte toplam işlem süresi %d dakika oldu
",tempPtr->no,tempPtr->zaman);
        return tempPtr;
       }
       
kuyruk *ara(kuyruk *tempPtr)
       {
        tempPtr->zaman+=10;
        printf("%d. ürün ara da bekliyor,bu işlemle birlikte toplam işlem süresi %d dakika oldu
",tempPtr->no,tempPtr->zaman);
        return tempPtr;
       }
       
void ikinciislem(kuyruk *tempPtr)
       {
        tempPtr->zaman+=30;
        printf("%d. ürün ikinci islemdebu işlemle birlikte toplam işlem süresi %d dakika oldu
",tempPtr->no,tempPtr->zaman);
        
       }


















Yazar
mrcan321


avatar
Mersin
Kayıt: 27.07.2007
09.02.2011-13:22 #73405
bugünkü büt sorularını koyabilecek olan var mı?





Yazar
mperk


avatar

Kayıt: 18.11.2008
09.02.2011-16:57 #73417
mrcan321 yazdi
 
bugünkü büt sorularını koyabilecek olan var mı?


http://i54.tinypic.com/2639afo.jpg





1 2 3
Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb