Yazar |
|
cguzel
Kayıt: 11.02.2010 |
|
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
istanbul
Kayıt: 22.01.2009 |
|
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
Kayıt: 11.02.2010 |
|
yanlış hatırlamıyosam sorulardan biri index sorusuydu. ama 3 değil. 2olabilir. çünkü index bilmeyen arkadşlar 3 yapmıştı. sanıyorum
|
|
Yazar |
|
brkygt
Kayıt: 29.06.2010 |
|
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
istanbul
Kayıt: 22.01.2009 |
|
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
Kayıt: 04.12.2006 |
|
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
istanbul
Kayıt: 15.10.2007 |
|
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örebilirsin
|
|
Yazar |
|
idontcare
istanbul
Kayıt: 22.01.2009 |
|
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
Kayıt: 29.06.2010 |
|
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
Kayıt: 04.12.2006 |
|
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örebilirsin
|
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
istanbul
Kayıt: 15.10.2007 |
|
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örebilirsin
|
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
Kayıt: 11.02.2010 |
|
arkadaşlar o koddata fseek fonksiyonu kullnamazsak olmaz mı?
|
|
Yazar |
|
abuzer
istanbul
Kayıt: 15.10.2007 |
|
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 gerek
|
|
Yazar |
|
yahyacan
istanbul
Kayıt: 21.10.2008 |
|
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
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | | | | | | | |