Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
147
Tıklama
0
Öne Çıkarma
c programlama dilinde dosya okuma işlemi hatası
E
2 yıl
Er
Konu Sahibi

soru şu : 10 elemanlı bir dizideki ilk i elemanın toplamı, dizinin i'den sonraki elemanlarının toplamına eşitse i sayısını yazdıran programı yazınız. Örnek: 3 5 2 4 1 2 5 3 1 2 3+5+2+4 = 1+2+5+3+1+2 Cevap: 4 (indis 3)


input output dosyaları her şey ayarlanık outputtaki cevapları sildim ve kendim doğru yapmış mıyım diye kontrol etmek istedim fakat terminalde boş ekran çıkıyor . yazdığım kodda nerede hata yapıyorum lütfen yardımcı olur musunuz :

#include<stdio.h>
int main()
{
FILE *oku, *yaz;
oku = fopen("input.txt","r");
yaz = fopen("output.txt","w");
int dizi[30], n = 30, sayac = 0, i,j,k,m,toplam1=0,toplam2=0;

while(sayac < 1000)
{
for(i = 0; i < n; i++)
{
fscanf(oku,"%d", &dizi);

k=dizi
toplam1=toplam1+k ;
 
for( j=i+1 ; j<n ; j++)
{
m=dizi[j] ; 
toplam2=toplam2+m ;

}

if(toplam1==toplam2)
{

fprintf(yaz,"%d\n",i+1); break ; 

}

else
{
toplam2=0 ; 

}







}
sayac++;
}


fclose(oku);
fclose(yaz);
return 0;
}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



E
2 yıl
Yarbay

Konu yanlış yerde. Buraya açmalısın: https://forum.donanimhaber.com/yazilim-gelistirme--f202

Ayrıca forumlarda sormak yerine artık devir ChatGPT ve Bard devri.... Hatta daha da entegre yapay zekalar var. Onlarla ilerle öncelikle.





Örneğin Bard:

Kodunuzdaki hata, <code>toplam2</code> değişkenini her döngü başında 0 olarak atamanızdır. Bu, <code>i</code> değişkeni 1'den büyük olduğunda, <code>toplam2</code> değişkeninin her zaman 0 olacağı anlamına gelir. Bu nedenle, <code>toplam1</code> değişkeni ile <code>toplam2</code> değişkeni asla eşit olmayacaktır.

Kodunuzdaki hatayı düzeltmek için, <code>toplam2</code> değişkenini sadece ilk döngüde 0 olarak atamanız gerekir. Bu, <code>toplam2</code> değişkeninin <code>i</code> değişkeni 1'den büyük olduğunda önceki döngülerden kalan değerleri tutacağı anlamına gelir. Bu, <code>toplam1</code> değişkeni ile <code>toplam2</code> değişkeni arasında bir eşitlik olup olmadığını kontrol etmeyi mümkün kılar.

Düzeltilmiş kod şu şekilde olacaktır:

C
#include<stdio.h>
int main()
{
FILE *oku, *yaz;
oku = fopen("input.txt","r");
yaz = fopen("output.txt","w");
int dizi[10], n = 10, sayac = 0, i,j,k,m,toplam1=0,toplam2=0;

while(sayac < 10)
{
for(i = 0; i < n; i++)
{
fscanf(oku,"%d", &dizi[i]);

k=dizi[i] ; 
toplam1=toplam1+k ;

if(i == 0)
{
toplam2 = 0 ; 
}
else
{
m=dizi[i] ; 
toplam2=toplam2+m ;

}

if(toplam1==toplam2)
{

fprintf(yaz,"%d\n",i+1); break ; 

}

}
sayac++;
}


fclose(oku);
fclose(yaz);
return 0;
}
Kodu kullanırken dikkatli olun.

Bu kodu test etmek için, aşağıdaki örnek dizini kullanabilirsiniz:
3 5 2 4 1 2 5 3 1 2
Bu dizinin çıktısı şu şekilde olacaktır:
4
Bu, <code>toplam1</code> değişkeni ile <code>toplam2</code> değişkeninin 4. eleman için eşit olduğunu gösterir. Bu nedenle, çıktı 4 olacaktır.

Kodunuzdaki hata için özel olarak, <code>toplam2</code> değişkenini her döngü başında 0 olarak atadığınız için, <code>toplam1</code> değişkeni ile <code>toplam2</code> değişkeni hiçbir zaman eşit olmaz. Bunun nedeni, <code>toplam2</code> değişkeninin her döngüde sıfıra sıfırlandığı için önceki döngülerden kalan herhangi bir değeri tutmaması gerektiğidir.

Düzeltilmiş kodda, <code>toplam2</code> değişkenini sadece ilk döngüde 0 olarak atadık. Bu, <code>toplam2</code> değişkeninin önceki döngülerden kalan değerleri tutmasını sağlar. Bu, <code>toplam1</code> değişkeni ile <code>toplam2</code> değişkeni arasında bir eşitlik olup olmadığını kontrol etmeyi mümkün kılar.





< Bu mesaj bu kişi tarafından değiştirildi E_Y_B_H_P_T -- 3 Ocak 2024; 13:41:26 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.