Arama butonu
Bu konudaki kullanıcılar: 1 misafir
9
Cevap
556
Tıklama
0
Öne Çıkarma
Çarpımsal terslerin toplamı programı?
W
12 yıl
Çavuş
Konu Sahibi

Merhaba c ile çok aram iyi değildir arkadaşlar bir kaç fonksiyon biliyorum başlangıç seviyesindeyim. Ufak bir program yazmak istedim ama nedense hata alıyorum. Üçgensel sayıların çapımsal terslerinin toplamlarını bulmaya çaşlışıyorum. Mesela klavyeden bir sayı girildiğinde program bunun önce üçgensel bir sayı olup olmadığını bulacak, sonrada 1 den o sayıya kadar olan üçgensel sayıların toplamını bulmaya yarayan bir program yazmaya çalışıyorum.

Üçgensel sayılar: 1 den başlayarak hep 1 fazlasını ekleyerek bulunan bir toplamsal sayıdır. Örneğin bir kaç üçgensel bir sayıyı inceleyelim:


1+2=3 ...> demekki 10 üçgensel sayıdır.
1+2+3+4=10 ...> demekki 10 üçgensel sayıdır.
1+2+3+4+5=15 ...> demekki 15 üçgensel sayıdır.

Bu şekilde elde edilebilen üçgensel sayıların ilk bir kaç tanesi şu şekildedir: 1,3,6,10,15,21,28,36,45,55,... vs

Mesela klavyeden adam 10 sayısını girdi. Program önce bu sayının üçgensel sayı olup olmadığını inceyecek yani 10 sayısının; 1 den başlayarak birer artışla elde edilcek ardışık toplamlar şeklinde yazılıp yazılamadığını bulacağız: 1+2+3+4 işte burada 10 u yakaladık demekki 10 sayısı üçgenseldir. Artık bundan sonra program şunu yapacak: İlk üçgensel sayıdan başlayarak (ki bu sayı 1 dir), 10 a kadar (10 dahil) olan üçgensel sayıların çarpımsal terslerinin toplamını bulacağız: Bununda kısa yoldan hesabını aşağıdaki gibi son iki terimin paydalarının toplamının, son terimin paydasına oranı şeklinde hesaplarız:

1/1 + 1/3+ 1/6+ 1/10 = (6+10)/10 = 8/5

Algoritmasını ben aşağıdaki gibi yaptım ama dos ekranında uzun uzun rakamlar falan çıkıyor.. Birde program her girilen sayıyı üçgensel sayı olarak kabul ediyor ve defalarca kez alt alta sonuçlar veriyor..

 
#include<stdio.h>
int main (void)
{
int i,j,k;
float bolum;
printf("Lutfen bir ucgensel sayi giriniz: %d",i);
scanf("%f",&i);
for(j=0;j<=i;j++)
{
j+=j;
if(i=i){
for(k=0;k<i-1;k++)
k+=k;
bolum=float(i+k)/i;
printf("\n [1,%d] araligindaki ucgensel sayilarin carpimsal terslerinin toplami: %f olur",i,bolum);
}
else printf("\nGirdiginiz sayi ucgensel sayi degildir!");
}
system("pause");
return 0;
}



M
12 yıl
Yüzbaşı

Hocam kodlamanız da yanlışlar ve eksiklikler var aşağıda vereceğim kod işinizi görecektir.

#include <stdio.h> 
#include <stdlib.h>

int uSayi(int n)
{
int i,toplam=0;
for(i=0;i<=n;i++)
{
if(n==toplam)
return 1;
toplam+=i;
}
}
int main ()
{
int gSayi,toplam=0;
int i=0;
float bolum=1;
printf("Lutfen bir sayi giriniz\n");
scanf("%d",&gSayi);
if(uSayi(gSayi)==1)
printf("Girilen sayi ucgensel sayidir.\n");
else
printf("Girilen sayi ucgensel sayi degildir\n");
for(i=1;i<=gSayi;i++)
{
if(uSayi(i)==1)
bolum+=(1/(float)i);
}
printf("[1,%d] araligindaki ucgensel sayilarin carpimsal terslerinin toplami: %f olur",gSayi,bolum);
return 0;
}


Bu mesaja 1 cevap geldi.
R
12 yıl
Teğmen

quote:

Orijinalden alıntı: ManiacFear

Hocam kodlamanız da yanlışlar ve eksiklikler var aşağıda vereceğim kod işinizi görecektir.

#include <stdio.h> 
#include <stdlib.h>

int uSayi(int n)
{
int i,toplam=0;
for(i=0;i<=n;i++)
{
if(n==toplam)
return 1;
toplam+=i;
}
}
int main ()
{
int gSayi,toplam=0;
int i=0;
float bolum=1;
printf("Lutfen bir sayi giriniz\n");
scanf("%d",&gSayi);
if(uSayi(gSayi)==1)
printf("Girilen sayi ucgensel sayidir.\n");
else
printf("Girilen sayi ucgensel sayi degildir\n");
for(i=1;i<=gSayi;i++)
{
if(uSayi(i)==1)
bolum+=(1/(float)i);
}
printf("[1,%d] araligindaki ucgensel sayilarin carpimsal terslerinin toplami: %f olur",gSayi,bolum);
return 0;
}



Hocam Allah razı olsun çok teşekkürler benim boyumu çok aşıyormuş bu kod yaa.. Konu başında ufak bir program dedim ama pek de ufak değilmiş hani.

Ancak küçük bir pürüz olsa gerek. Çünkü girilen sayının üçgensel olup olmadığını doğru sonuç olarak veriyor buraya kadar sorun yok ama çarpımsal terslerin toplamını yanlış hesaplıyor.

Mesela 6 değerini girdiğimde:

Normalde 6 sayısı : 1+2+3 şeklinde yazıldığından üçgensel sayıdır. Sonraki basamakta şunu hesaplamalı program:

1/1 + 1/3 + 1/6 = (3+6)/6 = 1.5

Yani 6 sayısına (6 da dahil) kadarki üçgensel sayıların (ki onlar 1,3,6 dır sadece) çarpımsal terslerinin toplamını bulması gerekiyor. Sanırım sizin kod aradaki diğer sayılarıda hesaplıyor hocam.

Ben sizin kodlardan oynayarak gerekli düzenlemeyi yapmaya çalıştım ama olmadı çünkü bilmediğim kodlar var burada bu sefer derleyici hata buluyor hep.





< Bu mesaj bu kişi tarafından değiştirildi rotartsanimdA -- 29 Ocak 2013; 2:34:24 >
Bu mesaja 1 cevap geldi.
M
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: rotartsanimdA

quote:

Orijinalden alıntı: ManiacFear

Hocam kodlamanız da yanlışlar ve eksiklikler var aşağıda vereceğim kod işinizi görecektir.

#include <stdio.h> 
#include <stdlib.h>

int uSayi(int n)
{
int i,toplam=0;
for(i=0;i<=n;i++)
{
if(n==toplam)
return 1;
toplam+=i;
}
}
int main ()
{
int gSayi,toplam=0;
int i=0;
float bolum=1;
printf("Lutfen bir sayi giriniz\n");
scanf("%d",&gSayi);
if(uSayi(gSayi)==1)
printf("Girilen sayi ucgensel sayidir.\n");
else
printf("Girilen sayi ucgensel sayi degildir\n");
for(i=1;i<=gSayi;i++)
{
if(uSayi(i)==1)
bolum+=(1/(float)i);
}
printf("[1,%d] araligindaki ucgensel sayilarin carpimsal terslerinin toplami: %f olur",gSayi,bolum);
return 0;
}



Hocam Allah razı olsun çok teşekkürler benim boyumu çok aşıyormuş bu kod yaa.. Konu başında ufak bir program dedim ama pek de ufak değilmiş hani.

Ancak küçük bir pürüz olsa gerek. Çünkü girilen sayının üçgensel olup olmadığını doğru sonuç olarak veriyor buraya kadar sorun yok ama çarpımsal terslerin toplamını yanlış hesaplıyor.

Mesela 6 değerini girdiğimde:

Normalde 6 sayısı : 1+2+3 şeklinde yazıldığından üçgensel sayıdır. Sonraki basamakta şunu hesaplamalı program:

1/1 + 1/3 + 1/6 = (3+6)/6 = 1.5

Yani 6 sayısına (6 da dahil) kadarki üçgensel sayıların (ki onlar 1,3,6 dır sadece) çarpımsal terslerinin toplamını bulması gerekiyor. Sanırım sizin kod aradaki diğer sayılarıda hesaplıyor hocam.

Ben sizin kodlardan oynayarak gerekli düzenlemeyi yapmaya çalıştım ama olmadı çünkü bilmediğim kodlar var burada bu sefer derleyici hata buluyor hep.

Ben kodu CodeBlocks da derledim. Program bende düzgün bir şekilde çalıştı. Siz çalıştırdığınız zaman nasıl bir çıktı alıyorsunuz ?


Bu mesaja 1 cevap geldi.
R
12 yıl
Teğmen

Hocam şöyle diyim size çalıştırdığımda mesela kağıt üzerinde yukardaki mesajımda yaptığımdan farklı olarak 6 değeri için; 1.95 buluyor oysaki cevabı 1.5 olmalı. Girilen sayının üçgensel sayı mı değil mi bunu buluyor program düzgün olarak ama hesaplamada bir yanlışlık var.

Yani sizde kağıt üzerinde denerseniz 1.5 bulunoyor kolayca zaten.

Birde hocam girilen sayı eğer üçgensel sayı değilse herhanği bir hesaplama yapmasını istemiyoruz biz. Ama girilen sayı üçgensel sayı değilse örneğin 5 sayısı üçgensel sayı değil ama program yinede [1,5] aralığındaki hesabı yapıp bunu yazdırıyor ekrana. Sayı üçgensel değilse sadece Sayımız üçgensel sayı değildir yazabilirmiyiz hocam.

Bu arada ben dev-c++ kullanıyorum ama sürümünü bilmiyorum.

Buyrun 5 ve 6 için çıktılar:

http://d1301.hizliresim.com/15/x/jhf8v.jpg

http://d1301.hizliresim.com/15/x/jhf9c.jpg





< Bu mesaj bu kişi tarafından değiştirildi rotartsanimdA -- 29 Ocak 2013; 3:04:22 >
Bu mesaja 1 cevap geldi.
M
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: rotartsanimdA

Hocam şöyle diyim size çalıştırdığımda mesela kağıt üzerinde yukardaki mesajımda yaptığımdan farklı olarak 6 değeri için; 1.95 buluyor oysaki cevabı 1.5 olmalı. Girilen sayının üçgensel sayı mı değil mi bunu buluyor program düzgün olarak ama hesaplamada bir yanlışlık var.

Yani sizde kağıt üzerinde denerseniz 1.5 bulunoyor kolayca zaten.

Birde hocam girilen sayı eğer üçgensel sayı değilse herhanği bir hesaplama yapmasını istemiyoruz biz. Ama girilen sayı üçgensel sayı değilse örneğin 5 sayısı üçgensel sayı değil ama program yinede [1,5] aralığındaki hesabı yapıp bunu yazdırıyor ekrana. Sayı üçgensel değilse sadece Sayımız üçgensel sayı değildir yazabilirmiyiz hocam.

Bu arada ben dev-c++ kullanıyorum ama sürümünü bilmiyorum.

Hocam kodu aşağıdaki şekilde değiştirdim bir de öyle deneyin. Bende 6 girdiğim zaman 1.5 çıktısını veriyor.Bir de codepad de derledim orada da sorunsuz bir şekilde çalıştı.

CodePad

#include <stdio.h> 
#include <stdlib.h>

int uSayi(int n)
{
int i=0,toplam=0;
for(i=0;i<=n;i++)
{
if(n==toplam)
return 1;
toplam+=i;
}
}
int main ()
{
int gSayi=0,toplam=0;
int i=0;
float bolum=1.0;
printf("Lutfen bir sayi giriniz\n");
scanf("%d",&gSayi);
if(uSayi(gSayi)==1){
printf("Girilen sayi ucgensel sayidir.\n");
for(i=1;i<=gSayi;i++)
{
if(uSayi(i)==1)
bolum+=(1.0/(float)i);
}
printf("[1,%d] araligindaki ucgensel sayilarin carpimsal terslerinin toplami: %f olur",gSayi,bolum);}
else
printf("Girilen sayi ucgensel sayi degildir\n");
return 0;
}


Bu mesaja 1 cevap geldi.
R
12 yıl
Teğmen

quote:

Orijinalden alıntı: ManiacFear

quote:

Orijinalden alıntı: rotartsanimdA

Hocam şöyle diyim size çalıştırdığımda mesela kağıt üzerinde yukardaki mesajımda yaptığımdan farklı olarak 6 değeri için; 1.95 buluyor oysaki cevabı 1.5 olmalı. Girilen sayının üçgensel sayı mı değil mi bunu buluyor program düzgün olarak ama hesaplamada bir yanlışlık var.

Yani sizde kağıt üzerinde denerseniz 1.5 bulunoyor kolayca zaten.

Birde hocam girilen sayı eğer üçgensel sayı değilse herhanği bir hesaplama yapmasını istemiyoruz biz. Ama girilen sayı üçgensel sayı değilse örneğin 5 sayısı üçgensel sayı değil ama program yinede [1,5] aralığındaki hesabı yapıp bunu yazdırıyor ekrana. Sayı üçgensel değilse sadece Sayımız üçgensel sayı değildir yazabilirmiyiz hocam.

Bu arada ben dev-c++ kullanıyorum ama sürümünü bilmiyorum.

Hocam kodu aşağıdaki şekilde değiştirdim bir de öyle deneyin. Bende 6 girdiğim zaman 1.5 çıktısını veriyor.Bir de codepad de derledim orada da sorunsuz bir şekilde çalıştı.

CodePad

#include <stdio.h> 
#include <stdlib.h>

int uSayi(int n)
{
int i=0,toplam=0;
for(i=0;i<=n;i++)
{
if(n==toplam)
return 1;
toplam+=i;
}
}
int main ()
{
int gSayi=0,toplam=0;
int i=0;
float bolum=1.0;
printf("Lutfen bir sayi giriniz\n");
scanf("%d",&gSayi);
if(uSayi(gSayi)==1){
printf("Girilen sayi ucgensel sayidir.\n");
for(i=1;i<=gSayi;i++)
{
if(uSayi(i)==1)
bolum+=(1.0/(float)i);
}
printf("[1,%d] araligindaki ucgensel sayilarin carpimsal terslerinin toplami: %f olur",gSayi,bolum);}
else
printf("Girilen sayi ucgensel sayi degildir\n");
return 0;
}


Çok ilğinç hocam ya dev-c derleyicimde yukardaki resim ekledim mesajımda 1.95 çıkıyor. Hocam sizin kullandığınız derleyicinin linki varmı acaba hemen kurup derleyim.


Bu mesaja 1 cevap geldi.
M
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: rotartsanimdA

quote:

Orijinalden alıntı: ManiacFear

quote:

Orijinalden alıntı: rotartsanimdA

Hocam şöyle diyim size çalıştırdığımda mesela kağıt üzerinde yukardaki mesajımda yaptığımdan farklı olarak 6 değeri için; 1.95 buluyor oysaki cevabı 1.5 olmalı. Girilen sayının üçgensel sayı mı değil mi bunu buluyor program düzgün olarak ama hesaplamada bir yanlışlık var.

Yani sizde kağıt üzerinde denerseniz 1.5 bulunoyor kolayca zaten.

Birde hocam girilen sayı eğer üçgensel sayı değilse herhanği bir hesaplama yapmasını istemiyoruz biz. Ama girilen sayı üçgensel sayı değilse örneğin 5 sayısı üçgensel sayı değil ama program yinede [1,5] aralığındaki hesabı yapıp bunu yazdırıyor ekrana. Sayı üçgensel değilse sadece Sayımız üçgensel sayı değildir yazabilirmiyiz hocam.

Bu arada ben dev-c++ kullanıyorum ama sürümünü bilmiyorum.

Hocam kodu aşağıdaki şekilde değiştirdim bir de öyle deneyin. Bende 6 girdiğim zaman 1.5 çıktısını veriyor.Bir de codepad de derledim orada da sorunsuz bir şekilde çalıştı.

CodePad

#include <stdio.h> 
#include <stdlib.h>

int uSayi(int n)
{
int i=0,toplam=0;
for(i=0;i<=n;i++)
{
if(n==toplam)
return 1;
toplam+=i;
}
}
int main ()
{
int gSayi=0,toplam=0;
int i=0;
float bolum=1.0;
printf("Lutfen bir sayi giriniz\n");
scanf("%d",&gSayi);
if(uSayi(gSayi)==1){
printf("Girilen sayi ucgensel sayidir.\n");
for(i=1;i<=gSayi;i++)
{
if(uSayi(i)==1)
bolum+=(1.0/(float)i);
}
printf("[1,%d] araligindaki ucgensel sayilarin carpimsal terslerinin toplami: %f olur",gSayi,bolum);}
else
printf("Girilen sayi ucgensel sayi degildir\n");
return 0;
}


Çok ilğinç hocam ya dev-c derleyicimde yukardaki resim ekledim mesajımda 1.95 çıkıyor. Hocam sizin kullandığınız derleyicinin linki varmı acaba hemen kurup derleyim.

Burdan indirebilirsiniz.


Bu mesaja 1 cevap geldi.
R
12 yıl
Teğmen

Hocam tamam codeblocks ve codepad de 1.5 çıkıyor ama benim derleyici 1.95 buluyor.. Tabiki sizinkine güveniyorum çok teşekkür ederim hakkınızı helal edin.


Bu mesaja 1 cevap geldi.
M
12 yıl
Yüzbaşı

quote:

Orijinalden alıntı: rotartsanimdA

Hocam tamam codeblocks ve codepad de 1.5 çıkıyor ama benim derleyici 1.95 buluyor.. Tabiki sizinkine güveniyorum çok teşekkür ederim hakkınızı helal edin.


Bende şimdi Dev-c de denedim bende de 1.95 buluyor. Derleyici ile ilgili bi hata galiba bende anlamadım.Helal olsun ne demek.



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.