Şimdi Ara

C uygulamalarda dosyadan veri okuma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
8
Cevap
0
Favori
876
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj
  • arkadaşlar c uygulamada önemli bir program yazmam gerekiyor programın mantığı şu şekilde olacak
    program çalıştığında şu şekilde olack ekranda ilk olarak benden nokta numarası isteyecek ve daha sonra noktanın x kordinatını sonrada y kordinatını isteyecek...
    nokta numarası "nn" adlı değişkene x kordinatı "xkor" adlı değişkene y kordinatı da "ykor" adlı değişkene atayacak ve bunları bir dosyaya kaydedip saklayacak yani bir örnek vermek gerekirse;
    ben programa 1 numaralı noktanın xkordinatlarını ve ykordinatlarını girdiğim zaman değişken isimleri şöyle olacak
    nn=1 xkor1=458.458 ykor2=452.789 yani demek istediğim 1. noktanın x kordinatlarını kullanacağım zaman xkor1 2. noktanın x kordinatını kullanacağım zaman xkor2 yazmasını istiyorum. y ler için de aynısını olmasını istiyorum.

    daha sonra hesap yapmam gerektiği zaman mesela ykordinat değerinden xkordinat değerini çıkarmak istediğim zaman kodlamada gerekli kodlar ile dosyaya yazdığımız xkor ve ykorları çekip
    ykor-xkor yazmam yeterli olacak lütfen yardım edin
    en son anlatma kapasitem bu eğer açıklamam gereken yer olursa lütfen cevap atın veya pm atın olur mu şimdiden teşekkürler



    _____________________________
    Lookle.Net Gir Bak Neler Olcak!




  • arkadaşlar yardım edebilecek birisi yokmu?
    _____________________________
    Lookle.Net Gir Bak Neler Olcak!
  • Aslında yapmak istediğin basit ama sen karmaşık şeyler düşünmüşsün. Önce nokta için bir struct un olacak.

    typedef struct {
    int xkor;
    int ykor;
    } Nokta;

    Sonra olabilecek maksimum nokta sayısı kadar elemanı olan bir Nokta dizisi oluşturacaksın. Mesela programında en fazla 1000 nokta olur diyorsan;
    Nokta nokta[1000];

    Nokta sayısı hiç kestirilemiyorsa veya çok fazla olma şansı varsa (1 milyon gibi) dinamik olarak oluşturmak gerekli ama buna girmiyorum.

    Program başlayınca bir döngü içinde dosyayı okur ve diziye atarsın. Dosya formatının şu şekilde olduğunu düşünürsek;
    x1 y1 x2 y2 x3 y3 ...

    döngü şöyle olur.

    int n = 0;
    while(!feof(dosya)) {
    fscanf(dosya, "%d", &nokta[n].xkor);
    fscanf(dosya, "%d", &nokta[n].ykor);
    ++n;
    }

    Döngü bitince n nokta sayısını verir. Bunu sakla ihtiyacın olacak.
    "nn" diye bir değişkene ve dosyada arama yapmaya gerek yok. Herhangi bir zamanda n noktasının y koordinatına erişmek için tek yapman gereken;
    nokta[n].ykor;

    Dosyaya yazmakta aynı mantıkta. Kolay gelsin.



    < Bu mesaj bu kişi tarafından değiştirildi Guest-BF8E9B238 -- 23 Şubat 2013; 17:25:35 >




  • cevabınız için çok teşekkürler acaba bana bi pm atabilirmisiniz sizin profılınızı goremedıgım ıcın ben atmayıoyrum sormam gerekn bir kaç birşey daha var
    _____________________________
    Lookle.Net Gir Bak Neler Olcak!
  • Buraya yaz. Ve sadece takıldığın yerleri sor yoksa kimse bakmaz.
  • aslında tam takıldığım yer değil öğrenci olduğum için pek bi bilgim yok ingilizcem iyi verdiğiniz siteyi inceledim ve çoğu bildiğim dosya okuma ve yazma komutları onlarla ilgili bi sorun yok ama kodu tam olarak nasıl yazacağımı anlamadım
    kod bu şekilde mi olacak


    typedef struct {
    int xkor;
    int ykor;
    } Nokta; nokta[10000]
    int n = 0;
    while(!feof(dosya)) {
    fscanf(dosya, "%d", &nokta[n].xkor);
    fscanf(dosya, "%d", &nokta[n].ykor);
    ++n;
    }

    anladığım kadarıyla burada ekrana herhangi bir bilgi gelmiyor mesela ben burada
    printf("\n nokta numarası ") printf("\n y kordinatı ") printf("\n xkordinatı ") gibi komutları bunun nersine yerleştircem? birde ben aynı programın içinde hesaplamada yapmak istiyorum o yuzden stdio.h math.h ve stdlib.h kullanmam yeterli başka birşey kullanmama gerek yok değil mi
    _____________________________
    Lookle.Net Gir Bak Neler Olcak!
  • Ben sadece sorduğun şeyler hakkında bilgi vermeye çalıştım. Neyi nereye yazacağın sana kalmış. Ama onları o şekilde arka arkaya yazarsan derlenmez bile.

    O döngü dosya içeriğini belleğe (diziye) yükler. Oradaki fscanf leri fprintf yaparsan bu sefer tam tersi olur yani belleği dosyaya yazan bir fonksiyon elde etmiş olursun. Dosyanın ilk halini nasıl dolduracağını ben bilmem. İstersen not defterini açıp kendin doldur farketmez.

    Birde ben site falan vermedim ki hani nerde?
  • Yapay Zeka’dan İlgili Konular
    windows 8 diske yazma sorunu
    11 yıl önce açıldı
    Daha Fazla Göster
  • o zaman şöyle sorayım ben senin dediğinden farklı olarak bi kod derledim ancak ayrıntılı bilmediğim için gerekli kelime süslemelerini yapamadım

    /*prg14*/
    /*Bu program LINUX altinda calismaz!*/
    #include<stdio.h>
    #include<conio.h>
    #include<math.h>
    int main()
    {
    double x1,y1,xn,yn,xm,ym,f=0.0;
    int i=0,j=0;
    do
    {
    j=j+1;
    printf("\nx%i=",j);
    scanf("%lf",&xm);
    printf("\ny%i=",j);
    scanf("%lf",&ym);
    if(j==1)
    {
    x1=xm;
    y1=ym;
    }
    else
    {
    f=f+(xn*ym-xm*yn);
    }
    yn=ym;
    xn=xm;
    printf("\ndevam icin bir tusa basin, cikis esc");
    i=_getch();
    }
    while(i!=27);
    f=f+(xm*y1-x1*ym);
    f=fabs(f)/2.0;
    printf("\nf=%.2lf",f);
    return 0;
    }




    kod bu ancak ben şöyle olmasını istiyorum mesela 5. noktanın kordinatını girerken 5. noktanın x kordinatını giriniz girdikten sonra aynı şekilde y kordinatını giriniz şeklinde y kordinatını istemesini istiyorum ve kodda

    printf("\nx%i=",j);
    scanf("%lf",&xm);
    printf("\ny%i=",j);
    scanf("%lf",&ym);

    olan yeri

    printf("\n%i . nokatnın x kordinatını giriniz=",j);
    scanf("%lf",&xm);
    printf("\n%i . noktanın y kordinatını giriniz=",j);
    scanf("%lf",&ym);

    olarak değiştiriyorum ancak bu seferde sondaki formulden dolayı hesap yapılmıyor hesabı yapması için formul kısmında nereleri değiştirmem gerek acaba?
    _____________________________
    Lookle.Net Gir Bak Neler Olcak!




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.