DonanımHaber Mini sürüm 2 Ocak 2026 tarihi itibariyle kullanımdan kalkacaktır. Bunun yerine daha hızlı bir deneyim için DH Android veya DH iOS uygulamalarını kullanabilirsiniz.
Arama butonu
Bu konudaki kullanıcılar: 1 misafir
3
Cevap
196
Tıklama
0
Öne Çıkarma
c programlama dilinde dosya okuma işlemi hatası
E
2 yıl (3 mesaj)
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;
}



E
2 yıl (3786 mesaj)
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.