PDA

Tam Sürümünü Görmek İçin : silindir hacim ve alan hesaplama


hakanozer
25/05/2008, 19:49
mereba arkadaşlar;
Silindir biçimindeki bir nesneyi göz önüne alalım. Bu nesnenin tüm yüzey alanını ve hacmini hesaplayan bir C++ programı yapmam gerekiyor.
Alan ve hacim hesabı için gereken r yarıçap ve h yükseklik bilgileri klavye yardımıyla girmeliyim.
yardımlar için şimdiden teşekkür ederim...


acehreli
26/05/2008, 08:07
Cok kolay: degerleri scanf'le okursun, islemleri yaptiktan sonra printf'le yazdirirsin.

Ali

hakanozer
26/05/2008, 12:04
slm ali;
ya ben çok yeniyim kodları ile birlikte yazabilirmisin. Bu arada bende konuyu pekiştirmiş olurum...

quasimodo
26/05/2008, 14:35
Klavyeden bir sayi okuma

int sayi;

printf("Bir sayi : ");
scanf("%d", &sayi);

Iki sayinin carpimi

int sayiBir, sayiIki;
int sonuc;

sonuc = sayiBir * sayiIki;

Console ekranina sayiyi yazdirma

int sayi = 10;

printf("%d", sayi);

Bunlarin birlesimi senin kodunu olustur. Hem konuyuda pekistirmis
olursun.

hakanozer
27/05/2008, 08:28
quasimodo; teşşekkürler...

hakanozer
31/05/2008, 13:59
arkadaşlar şu kodu kullanıyorum ama hacimde alanda sadece "0" veriyor;acaba nerede hata yapıyor.

#include<stdio.h>
#include<math.h> // !! bu komutla kullandığımız matematiksel işlemlerin bulunduğu kütüphaneyi çağırıyoruz !!
#include<conio.h>
float r; // daire yarı çapı değişkeni tanımlanıyor
float h; // daire yükseklik değişkeni tanımlanıyor
float p=3; // sabir p sayısı değişkeni tanımlanıyor
int alan; // ekrana yazdırılacak alan değişkeni tanımlanıyor
int hacim; // ekrana yazdırılacak hacim değişkeni tanımlanıyor
main () // programa başlıyoruz
{
printf("Lütfen silindir daire yarı çapını yazınız: "); // silindir yarı çapı girilmesi istenyor
scanf("%d", &r); // yarı çap hafıza alandı
printf("Lütfen silindir yüksekliği yazınız: "); // silindir yüksekliği girilmesi isteniyor
scanf("%d", &h); // silindir yüksekliği hafızaya alındı
hacim = (p*r*r*h); // silindir hacmi hesaplanıyor
printf("hesaplanan hacim: %d\n",hacim); // silindir hacmi ekrana yazdırılıyor
alan = ((p*r*r*h) + (2*p*r)); // silindir alanı hesaplanıyor
printf("hesaplanan alan: %d\n",alan); // silindir alanı ekrana yazdırılıyor
getch ();// programımızın ekranda kalmasını saglayan komut ..
}

hakanozer
31/05/2008, 14:04
arkadaşalar sorunu buldum.değişken tanımlarkan float vererek hata etmişim.

quasimodo
31/05/2008, 14:57
dogru alan ve hacim degiskenleride dahil olmak uzere hepsini double turunden yap. Ayrica double icin %lf format bicimlendirici kullanildigini unutmazsan iyi olur.

acehreli
31/05/2008, 18:36
hakanozer, hatan degisken olarak float kullanmanda degil, scanf'e kullandigin tUrU yanlis bildirmende. Senin de farkettigin gibi tUrU int yapinca scanf'e dogru soylemis oluyorsun. Ama quasimodo'nun onerdigi gibi double kullanirsan pi icin de daha kabul edilir bir deger kullanabilirsin. :D

Ali

gerekless
03/06/2008, 09:36
Merhaba aynı ödev bizdede var :). Yanlız hoca girilen bilgi int,float yada double olmasına göre silindirin hacmi ve alanını hesaplayan bir program soruyor. Eğer ben bilgi girişi esnasında tipini bilsem sonra hesaplarken zaten c++ polimorfizm'den tipine göre hesap yapan fonksiyonları çalıştıracak. Fakat ben bilgi girişi esnasında kullanıcının hangi tipden veri gireceğini bilmiyorum. Bunu nasıl çözebiliriz.
Not: Aklıma bilgiyi double alayım sonra şöyle sorgulayım dedim ;

Aşağıda r'yi int'e çevirip orjinal bilgiyle karşılaştırdığımda birebir tutuyorsa int'dir.mantıgından gideyim dedim. Sadece int ve double çalışıyor float çalışmıyor.

if( (int)r==r ) then int'le çalışan fonk. çağır.
if( (float)r==r ) then floatla çalışan fonksiyonu çağır.
if( (double)r==r) then double çalışan fonksiyonu çağır

Sizin bir öneriniz varmı. "cin" işlemine bir şeyler yazayım dedim tam tasarlayamadım.

Teşekkürler.

acehreli
03/06/2008, 19:28
Girisi bir kere belirli bir tUr olarak okuduktan sonra bir daha okuyamazsin. Ornegin 1234567890.5'i int olarak okumaya calisip olmadigini gordukten sonra bir daha double olarak deneyemezsin, cunku giristeki bazi karakterler int okuma sirasinda tuketilmislerdir.

Benim gorebildigim tek sey, girisi bir dizgi (ornegin std::string) olarak okumak ve icindekileri tarayarak ne tUr gerektigine karar vermektir.

Ali

Not: Tabii aslinda 'long double' butun diger tUrlerin degerlerini de kapsadigi icin yalnizca o sekilde de okunabilir ama odevde istenen oyle degil herhalde.