Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
9
Cevap
559
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;
}



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