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.
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;
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;
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 >
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;
}