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


avatar
istanbul
Kayıt: 22.01.2009
07.02.2011-15:24 #73322
finaldeki 3. sorunun çözümünü koyabilecek arkadaş varmı acaba?





i dont care
Yazar
cguzel


avatar

Kayıt: 11.02.2010
07.02.2011-15:55 #73326
arkdaşlar bu simule sorsunda nasll düşündünüz, bir ürün diğerini bekliyor mu? yoksa aynı anadamı işleme girişiyorlar.
ben şu şekilde düşündüm:

bir ürün 3 işlemden geçiyor.
ön işlem,ilk işlem, 10dk bekleme yaptıktan sonra ise son işlem.(bunu soruda vermişti)

bir ürün işleme girdiğinde 2. ürünün işleme girebilmesi için önceki ürünün o işlemden çıkması gerekir diye düşündüm. yani 1. ürün ön işleme girdi 2. ürün bekledi. sonra 1. ürün ilk işleme girer ve sonra 2. şleme geçebilmek içina 2. ürünün ilk işlemden çıkmasını bekeler. bu şekilde her ürün birbirini takip eder. yanlız bekleme süresi kısmında birbirlerini beklemezler.aynı anda bekleme yapabilirler.

sizce mantık doğru mu? tabi anlatabildiysem






Yazar
idontcare


avatar
istanbul
Kayıt: 22.01.2009
07.02.2011-16:02 #73327
aynen öyle dediğin gibi düşündüm bende cihad
merak ettiğim 3. sorudaki soru index sorusumu acaba?
hoca index sormam dedi





i dont care
Yazar
cguzel


avatar

Kayıt: 11.02.2010
07.02.2011-17:02 #73330
yanlış hatırlamıyosam sorulardan biri index sorusuydu. ama 3 değil. 2olabilir. çünkü index bilmeyen arkadşlar 3 yapmıştı. sanıyorumthinking





Yazar
brkygt


avatar

Kayıt: 29.06.2010
07.02.2011-17:35 #73332
2.soru index sorusuydu, 3.soru ise dosya işlemleri ile ilgiliydi zannedersem! Bir dosyadan kişinin ad, soyad, yaş ve boy bilgilerini okuyup boylarına göre sıralayarak başka bir dosyaya yazıyorduk.Ben şöyle düşünmüştüm; önce okuma modunda veri.dat dosyasını açıp oradan alınan boy değerlerini bir diziye koyup sıralama algoritmalarından biriyle onları sıraladıktan sonra yazma modunda açtığımız siraliveri.dat isimli dosyaya yazılır.





Yazar
idontcare


avatar
istanbul
Kayıt: 22.01.2009
07.02.2011-18:09 #73334
ben de sınavda öyle düşündüm fakat veri dosyasında isim soyisim yaş ve boy var
yani 2 string 2 de int parametreli
buna uygun bi diziyi nasıl tanımlamayı düşünüosun?





i dont care
Yazar
ysfyzl


avatar

Kayıt: 04.12.2006
08.02.2011-15:58 #73373
Yapı dizisi kullanarak 3.soruyu çözmeye çalıştım ,bi bakarmısınız hatalı kısım var mı?


struct kisi{
char ad[20];
char soyad[20];
int boy;
int yas;
};
typedef  struct  kisi  Kisi;
typedef  struct  kisi  *kisiPtr;
Kisi kisiler[100];
FILE  * dg;
dg=fopen("veri.dat","r");
int i,j,k;
for(i=0;i<100;i++)
{
	fseek(dg,sizeof(Kisi)*i,SEEK_SET);
	fread(Kisiler[i],sizeof(Kisi)),1,dg);
}
Void  sirala(Kisi[] kisiler){
	for(j=0;j<kisiler.lenght;j++)
		for(k=1; k<kisiler.lenght-j ; k++)
			if(kisiler[j] .boy < kisiler[j-1].boy)
			{
Kisi gecici;
gecici=kisiler[j-1];
kisiler[j-1]=kisiler[j];
kisiler[j]=gecici;
}
}
Sirala(Kisiler[100]);
dg=fopen("siraliveri.dat","w+");
for (int i=0;  i< 100 ;i++)
{
fseek(dg,sizeof(Kisi)*i,SEEK_SET);
fwrite(Kisiler[i],sizeof(Kisi),1,dg);

}




















Yazar
abuzer


avatar
istanbul
Kayıt: 15.10.2007
08.02.2011-16:26 #73374
ysfyzl yazdi
 
Yapı dizisi kullanarak 3.soruyu çözmeye çalıştım ,bi bakarmısınız hatalı kısım var mı?


struct kisi{
char ad[20];
char soyad[20];
int boy;
int yas;
};
typedef  struct  kisi  Kisi;
typedef  struct  kisi  *kisiPtr;
Kisi kisiler[100];
FILE  * dg;
dg=fopen("veri.dat","r");
int i,j,k;
for(i=0;i<100;i++)
{
	fseek(dg,sizeof(Kisi)*i,SEEK_SET);
	fread(Kisiler[i],sizeof(Kisi)),1,dg);
}
Void  sirala(Kisi[] kisiler){
	for(j=0;j<kisiler.lenght;j++)
		for(k=1; k<kisiler.lenght-j ; k++)
			if(kisiler[j] .boy < kisiler[j-1].boy)
			{
Kisi gecici;
gecici=kisiler[j-1];
kisiler[j-1]=kisiler[j];
kisiler[j]=gecici;
}
}
Sirala(Kisiler[100]);
dg=fopen("siraliveri.dat","w+");
for (int i=0;  i< 100 ;i++)
{
fseek(dg,sizeof(Kisi)*i,SEEK_SET);
fwrite(Kisiler[i],sizeof(Kisi),1,dg);

}








kodun main kısmı neresi,c programlama dilinde dizilerin uzunluklarını belirten bir length yapısı yok bence pointer indexlemesi yapsan iyi olur.Sonra malloc(sizeof) yapısını kullanıp pointer içerisinde ne kadar kayıt var görebilirsinpeacepeacepeace






Yazar
idontcare


avatar
istanbul
Kayıt: 22.01.2009
08.02.2011-16:27 #73375
erhanım cok saolasın daha anlasılır olmuş ben bağlı listeye döktüm işi çok uzadı emeğine sağlık
fakat bu kisiler.lenght nerden gelio acıklarmısın





i dont care
Yazar
brkygt


avatar

Kayıt: 29.06.2010
08.02.2011-16:39 #73376
ysfyzl yazdi
 
Yapı dizisi kullanarak 3.soruyu çözmeye çalıştım ,bi bakarmısınız hatalı kısım var mı?


struct kisi{
char ad[20];
char soyad[20];
int boy;
int yas;
};
typedef  struct  kisi  Kisi;
typedef  struct  kisi  *kisiPtr;
Kisi kisiler[100];
FILE  * dg;
dg=fopen("veri.dat","r");
int i,j,k;
for(i=0;i<100;i++)
{
	fseek(dg,sizeof(Kisi)*i,SEEK_SET);
	fread(Kisiler[i],sizeof(Kisi)),1,dg);
}
Void  sirala(Kisi[] kisiler){
	for(j=0;j<kisiler.lenght;j++)
		for(k=1; k<kisiler.lenght-j ; k++)
			if(kisiler[j] .boy < kisiler[j-1].boy)
			{
Kisi gecici;
gecici=kisiler[j-1];
kisiler[j-1]=kisiler[j];
kisiler[j]=gecici;
}
}
Sirala(Kisiler[100]);
dg=fopen("siraliveri.dat","w+");
for (int i=0;  i< 100 ;i++)
{
fseek(dg,sizeof(Kisi)*i,SEEK_SET);
fwrite(Kisiler[i],sizeof(Kisi),1,dg);

}







Bir de sirala fonksiyonundaki if içinde kisler[k].boy < kisiler[k-1].boy olması gerekmiyor mu?





Yazar
ysfyzl


avatar

Kayıt: 04.12.2006
08.02.2011-16:42 #73377
abuzer yazdi
 
ysfyzl yazdi
 
Yapı dizisi kullanarak 3.soruyu çözmeye çalıştım ,bi bakarmısınız hatalı kısım var mı?


struct kisi{
char ad[20];
char soyad[20];
int boy;
int yas;
};
typedef  struct  kisi  Kisi;
typedef  struct  kisi  *kisiPtr;
Kisi kisiler[100];
FILE  * dg;
dg=fopen("veri.dat","r");
int i,j,k;
for(i=0;i<100;i++)
{
	fseek(dg,sizeof(Kisi)*i,SEEK_SET);
	fread(Kisiler[i],sizeof(Kisi)),1,dg);
}
Void  sirala(Kisi[] kisiler){
	for(j=0;j<kisiler.lenght;j++)
		for(k=1; k<kisiler.lenght-j ; k++)
			if(kisiler[j] .boy < kisiler[j-1].boy)
			{
Kisi gecici;
gecici=kisiler[j-1];
kisiler[j-1]=kisiler[j];
kisiler[j]=gecici;
}
}
Sirala(Kisiler[100]);
dg=fopen("siraliveri.dat","w+");
for (int i=0;  i< 100 ;i++)
{
fseek(dg,sizeof(Kisi)*i,SEEK_SET);
fwrite(Kisiler[i],sizeof(Kisi),1,dg);

}








kodun main kısmı neresi,c programlama dilinde dizilerin uzunluklarını belirten bir length yapısı yok bence pointer indexlemesi yapsan iyi olur.Sonra malloc(sizeof) yapısını kullanıp pointer içerisinde ne kadar kayıt var görebilirsinpeacepeacepeace


kodun main kısmına ihtiyaç duymadım.
benim amacım yürüttüğüm genel mantıkta hata var mı yok mu onu sorgulamak,
dolayısıyla programın hepsini ayrıntısına kadar yazmaya gerek yok.














Yazar
abuzer


avatar
istanbul
Kayıt: 15.10.2007
08.02.2011-17:07 #73378
ysfyzl yazdi
 
abuzer yazdi
 
ysfyzl yazdi
 
Yapı dizisi kullanarak 3.soruyu çözmeye çalıştım ,bi bakarmısınız hatalı kısım var mı?


struct kisi{
char ad[20];
char soyad[20];
int boy;
int yas;
};
typedef  struct  kisi  Kisi;
typedef  struct  kisi  *kisiPtr;
Kisi kisiler[100];
FILE  * dg;
dg=fopen("veri.dat","r");
int i,j,k;
for(i=0;i<100;i++)
{
	fseek(dg,sizeof(Kisi)*i,SEEK_SET);
	fread(Kisiler[i],sizeof(Kisi)),1,dg);
}
Void  sirala(Kisi[] kisiler){
	for(j=0;j<kisiler.lenght;j++)
		for(k=1; k<kisiler.lenght-j ; k++)
			if(kisiler[j] .boy < kisiler[j-1].boy)
			{
Kisi gecici;
gecici=kisiler[j-1];
kisiler[j-1]=kisiler[j];
kisiler[j]=gecici;
}
}
Sirala(Kisiler[100]);
dg=fopen("siraliveri.dat","w+");
for (int i=0;  i< 100 ;i++)
{
fseek(dg,sizeof(Kisi)*i,SEEK_SET);
fwrite(Kisiler[i],sizeof(Kisi),1,dg);

}








kodun main kısmı neresi,c programlama dilinde dizilerin uzunluklarını belirten bir length yapısı yok bence pointer indexlemesi yapsan iyi olur.Sonra malloc(sizeof) yapısını kullanıp pointer içerisinde ne kadar kayıt var görebilirsinpeacepeacepeace


kodun main kısmına ihtiyaç duymadım.
benim amacım yürüttüğüm genel mantıkta hata var mı yok mu onu sorgulamak,
dolayısıyla programın hepsini ayrıntısına kadar yazmaya gerek yok.


Eğer sadece mantık diyorsan doğru ama bu kodu sınavda kullanmasan iyi olur





Yazar
cguzel


avatar

Kayıt: 11.02.2010
08.02.2011-18:50 #73381
arkadaşlar o koddata fseek fonksiyonu kullnamazsak olmaz mı?





Yazar
abuzer


avatar
istanbul
Kayıt: 15.10.2007
08.02.2011-18:55 #73382
cguzel yazdi
 
arkadaşlar o koddata fseek fonksiyonu kullnamazsak olmaz mı?


fseek fonksiyonu senin dosyayı satır satır yazmanı veya okumanı sağlıyor kullanman gerektalk to the handtalk to the handtalk to the hand





Yazar
yahyacan


avatar
istanbul
Kayıt: 21.10.2008
08.02.2011-21:58 #73383
3. Sorunun cevabı budur arkadaşlar.Biraz geç oldu. Başka bir programımdan dönüştürdüğüm için, içinde kullanılmayan gereksiz değişkenler olabilir, önceki programdan kalma :D. Kolay gelsin...



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

struct ozellik{ //Dosyada tutulacak değişkenleri bir yapı içinde tanımlıyorum...
char ad[15],soyad[15];
int yas,boy;
};
typedef struct ozellik kisi;
kisi k;
kisi kisi_dizisi[100]; //Sıralama yaparken dosyadaki bütün kayıtlar bu dizide tutulur.
//Dizi sıralama algoritmasıyla sıralanıp dosyaya formatlı bir şekilde yazılacak.
int dosya_boyu;

void file_to_write() //Dosyaya verilen struct yapısındaki verileri yazar
{
FILE *dg; /* dosya göstericisi */

dg = fopen("veri.txt", "a+");

if( dg == NULL ){
puts("veri.dat dosyasi acilmadi. !
");
exit(1);
}

puts("Dosyaya istenilen kisi verilerini girin ->

");
puts("Veri girerken bosluk birakmayin!!!!!!!

");

printf("Kisinin adi : "); scanf("%s",&k.ad); //Kişi bilgileri alınıyor.
printf("Kisinin soyadi : "); scanf("%s",&k.soyad);
printf("Kisinin yasi : "); scanf("%d",&k.yas);
printf("Kisinin boyu : "); scanf("%d",&k.boy);

printf("
");

fprintf(dg,"%15s %15s %10d %10d
",k.ad,k.soyad,k.yas,k.boy); //Verileri eklemeli olarak dosyaya yaz.

fclose(dg); /* dosyayı kapat */

puts("Bilgiler kaydedildi.a
");
}

void file_size() //Dosyada kac kayıt olduğunu belirler.
{ //Bu bize oluşturduğumuz kişi dizisinde ne kadar boyutunu kullanacağımızı belirlememizde işimize yarayacak.
char ad[15],soyad[15];
int yas,boy;
int count=0;

FILE *dg; /* dosya göstericisi */

dg = fopen("veri.txt", "a+");

if( dg == NULL ){
puts("veri.dat dosyasi acilmadi. !
");
exit(1);
}
while(!feof(dg)){
fscanf(dg,"%s %s %d %d
",ad,soyad,&yas,&boy);
count++;
}
dosya_boyu=count;
fclose(dg);
}

void sort(kisi gelen_dizi[]) //Gelen kişi dizisini quick sort algoritmasına göre sıralar.
{



int i,j;
kisi gecici;

for(i=1;i<dosya_boyu;++i){
for(j=dosya_boyu-1;j>=i;--j){
if(gelen_dizi[j-1].boy>gelen_dizi[j].boy){
gecici=gelen_dizi[j-1];
gelen_dizi[j-1]=gelen_dizi[j];
gelen_dizi[j]=gecici;
}
}
}



}
void file_to_sort() //Dosyadaki verileri kisi dizimize kopyalar.
{ //Ardından sıralama algortimasına yollar
//Oluşturulan sıralı diziyi dosyaya formatlı bi şekilde yazar.
FILE *dg,*fp; /* dosya göstericisi */

int indis=0,i;

dg = fopen("veri.txt", "a+");

if( dg == NULL ){
puts("veri.dat dosyasi acilmadi. !
");
exit(1);
}
while(!feof(dg)){
fscanf(dg,"%s %s %d %d",kisi_dizisi[indis].ad,kisi_dizisi[indis].soyad,&kisi_dizisi[indis].yas,&kisi_dizisi[indis].boy);
indis++;
}
sort(kisi_dizisi); //Dizi sıralanıyor.
fclose(dg);



if((fp = fopen("siraliveri.txt", "w"))==NULL){
printf("Dosya acilamadi
");
exit(1);
}
for(i=0;i<indis;i++){
fprintf(fp,"%15s %15s %10d %10d
",kisi_dizisi[i].ad,kisi_dizisi[i].soyad,kisi_dizisi[i].yas,kisi_dizisi[i].boy);
}
fclose(fp);

}

void search() //Aranan kişiye ait bilgileri listeler.
{
int i;
char isim[15];
printf("Aramak istediginiz kisinin
");
printf("Adi : ");
scanf("%s",isim);

FILE *dg; /* dosya göstericisi */

int indis=0;
kisi gecici;

dg = fopen("veri.txt", "a+");

if( dg == NULL ){
puts("veri.dat dosyasi acilmadi. !
");
exit(1);
}
while(!feof(dg)){
fscanf(dg,"%s %s %d %d",gecici.ad,gecici.soyad,&gecici.yas,&gecici.boy);
if(strcmp(isim,gecici.ad)==0){
printf("

Kisi Adi : %s
",gecici.ad);
printf("Kisi Soyadi : %s
",gecici.soyad);
printf("Kisi Yasi : %d
",gecici.yas);
printf("Kisi Boyu : %d
",gecici.boy);
}

}



}
void listele() //Dosyadaki kişileri bilgileriyle beraber listeler.
{
FILE *dg;
int i; /* dosya göstericisi */

kisi gecici;

dg = fopen("siraliveri.txt", "a+");

if( dg == NULL ){
puts("siraliveri.dat dosyasi acilmadi. !
");
exit(1);
}
for(i=0;i<dosya_boyu;i++){
fscanf(dg,"%s %s %d %d",gecici.ad,gecici.soyad,&gecici.yas,&gecici.boy);

printf("

Kisi Adi : %s
",gecici.ad);
printf("Kisi Soyadi : %s
",gecici.soyad);
printf("Kisi Yasi : %d
",gecici.yas);
printf("Kisi Boyu : %d
",gecici.boy);
}
}

int main()
{
int secim=1;
file_size();
while(secim!=5){
printf(" 1-) KISI EKLEME
");
printf(" 2-) KISI SIRALA
");
printf(" 3-) KISI ARA
");
printf(" 4-) LISTELE
");
printf(" 5-) CIKIS
");
printf("
SECIM : ");
scanf("%d",&secim);
switch(secim){
case 1: file_to_write();
break;
case 2: file_to_sort();
break;
case 3: search();
break;
case 4: listele();
break;
case 5: printf("
Program sonlandiriliyor...

");
break;
default : printf("Gecersiz secim.
");
}
}





system("PAUSE");

return 0;
}






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