Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

c++ dan anlayanlar!!


mexinth

Öne çıkan mesajlar

şimdi shell script başlıklı konuda da bahsetmiş olduğum gibi bir c++ uygulamas üzerine çalışıyorum.

Bir dikdörtgeni hepsi 1. kordinat düzleminde olacak 8 kordinat oluşturacak 4* (x, y)
bu x y değerleri 20 den büyük olamayacak filan falan
kare mi değil mi ölçülecek, alan çevre bulunacak.

Bir heade file yaptım
sonra source
sonra driver

source ta sorun var çünkü kordinat girdiğimde 0 0 şeklinde okuyor bunun sebebinin
setCoord fonksiyonunun özel uygulamaları olmasına ve benim bunları eksik yapmış olabileceğime bağlamakla beraber

getLength te belirttiğim
{ return length; }
getWidth
{ return width;} ı algılayamamasına da bağlıyorum ki
üstte bunların hesaplanması ile ilgil bir fonksiyon yazdım ama int değerine algılatamadım int main()
{ length = ( lenght =x2 - x1) ? length : 0;}
şeklinde
nasıl algılatabilirim?[hline]sonunda yeniledim.
Link to comment
Sosyal ağlarda paylaş

şimdi
4 kordinat ile bir diktörgn belirlenecek anlattığım gibi
işte bu kordinatların 20,0 dan büyük olmaması sağlanacak sonrada
uzunluk genişlik hesaplanacak
alan, çevre buna göre hesaplanacka.
eğer kare ise bunu belirtecek..

header, source ve driver olarak 3 dosya hazırlıyorsun.

herşey hazır işte.

ama sanırım constructor umda sorun var şimdi buraya sayfalarca kod yollamam çok mantıklı olur mu bilemiyorm..


length ve width hesaplamaları önem kazanıyor o yüzden[hline]sonunda yeniledim.
Link to comment
Sosyal ağlarda paylaş

eh işte 100 satır doğru

ama 3 ayrı sayfa olacak
öyle isteniyor.
işte class filan belirliyorsun
constructor ayarlıyorsun filan..

header file
-----
#ifndef COORDINATES_H
#define COORDINATES_H

class Coordinates {

public:


Coordinates(float = 1, float = 1 , float = 1, float = 1, float = 1, float = 1, float = 1, float = 1); // so x & y will definitely in first quadrant

//set functions


void setCoord(float , float , float , float, float, float, float, float);



//get function
float getCoord();
// calculation
float Length(float);
float Width(float);

//property functions
float computePerimeter();
float computeArea();
void printCheck();
void printcorrection();

private:

float x1, x2, x3, x4, y1, y2, y3, y4; // print x and y



};

#endif
------

source file
---------
#include

using std::cout;
using std::cin;
using std::endl;



float length, width;

#include "coordinates.h"


Coordinates::Coordinates(float x1 , float x2, float x3 , float x4, float y1, float y2, float y3, float y4)
{ setCoord(x1, x2, x3, x4, y1, y2, y3, y4); }

// now I start set functions
void Coordinates::setCoord( float a1, float a2, float a3, float a4, float b1, float b2, float b3, float b4)
{
x1 = ( a1 >= 0 && a1 <= 20) ? a1: 0;
x2 = ( a2 >= 0 && a2 <= 20) ? a2: 0;
x3 = ( a3 >= 0 && a3 <= 20) ? a3: 0;
x4 = ( a4 >= 0 && a4 <= 20) ? a4: 0;
y1 = ( b1 >= 0 && b1 <= 20) ? b1: 0;
y2 = ( b2 >= 0 && b2 <= 20) ? b2: 0;
y3 = ( b3 >= 0 && b3 <= 20) ? b3: 0;
y4 = ( b4 >= 0 && b4 <= 20) ? b4: 0;
}


// as usual length function
float Coordinates::Length (float length )
{ return length = x2 - x1 ; }

// as usual width function
float Coordinates::Width (float width )
{ return width = y2 - y1;}

// get functions
float Coordinates::getCoord()
{ return x1, x2, x3, x4, y1, y2, y3, y4; }



// calculation functions
float Coordinates::computePerimeter()
{ return (2 * length + 2 * width);}

float Coordinates::computeArea()
{ return (length * width);}
void Coordinates::printCheck()
{ if (length == width )
cout << "This is a square" ;
else
cout << "This is a rectangle" ;
return ;
}

// this function will check if this coordinates can establish a rectangular shape or not
void Coordinates::printcorrection()
{
if ( x1 <= 20, x2 <= 20, x3 <= 20, x4 <= 20, y1 <= 20, y2 <= 20, y3 <= 20, y4 <= 20)
cout << " nValues are accepted " << endl << endl;
else
cout << " nPlease make sure x and y's are not greater than 20 " << endl;
if ( x1 == x3 , x2 == x4 , y1 == y3 , y2 == y4)

cout << " This is a rectangle " << endl;
else
cout << " nMake sure that x1 = x3 , x2 = x4 and y1 = y3, y2 = y4 equal and all the values are smaller than 20" << endl;


return ;
}


// now source part is over...

--------

driver

------

#include

using std::cout;
using std::cin;
using std::endl;




#include "coordinates.h"



float main()
{


float a1, a2, a3, a4, b1, b2, b3, b4;
float clength;
float cwidth;


Coordinates cor; // now cor is my object


cout << " Enter 2 x values for calculation of length " << endl;
cin >> a1 >> a2 >> a3 >> a4;
cout << " Enter 2 y values for calculation of width " << endl;
cin >> b1 >> b2 >> b3 >> b4;
cor.setCoord(a1, a2, a3, a4, b1, b2, b3, b4);
cor.printcorrection();






cor.getCoord();
cout << " So after entering coordinates we will see your length and width : " << endl;
cor.Length(clength);
cout << " Length: " << endl;
cor.Width(cwidth);
cout << " Width: " << endl;

cout << "nAlso the perimeter of your rectangle is: ";
cor.computePerimeter();
cout << "nThe area of your rectangle which is: ";
cor.computeArea();


cout << "nIs your rectangle a square? " << endl;
cor.printCheck();
cout << endl << endl;

return 0;

}


// End of Driver Part.
--------[hline]sonunda yeniledim.
Link to comment
Sosyal ağlarda paylaş

amanın bi ton hata var..
öncelikle hemen internetten bi c++ tutorial bul, sonra sırasıyla, fonksiyonları tekrar et yada tekrar öğren, (hem yazmasını hemde çağırmasını)

classları bi daha bi gözden geçir constructorın nasıl kullanıldığına, nasıl çağırıldığına falan dikkat et.
Link to comment
Sosyal ağlarda paylaş

evet hatalı, biraz daha toparladım son koyduğumdan beri,

ama genede karıştı...

şimdilk sadece kordinat girebiliyorum , vede onların istenilene uygun olup olmadığını bulabiliyorum..

şu length ve width i başlatabilirsem bitecek...
onca şeyer rağmen, bulduğun kritik kısımları işaretlersen sevinirim dünden beri yazıyorum tabi kafadan.
fonksiyonlara çalışacak vaktim yok malesef yarın yollayacağım artık...
birde tekrar tekrar denemelerden dolayı bazı şeyler eklendi çıktı filan ondan karışık biraz :)

[hline]sonunda yeniledim.

[Bu mesaj mexinth tarafından 18 December 2003 22:37 tarihinde değiştirilmiştir]

[Bu mesaj mexinth tarafından 18 December 2003 22:38 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

hmm tamam o zaman hemen hataları düzeltelim;
////////////////////////////////////////

.
.
.
class Coordinates {

public:

Coordinates(float x1 =1, float x2=1, float x3=1, float x4=1, float y1=1, float y2=1, float y3=1, float y4=1)
.
.
.
////////////////////////////////////////
// as usual length function
//float Coordinates::Length (float length )
//{ return length = x2 - x1 ; }
//yukardaki kod derlenir ama doğru değil, çünkü fonksiyona atanan parametre için geçici bir değişken oluşturulur ve fonksiyon bittikten sonra bu geçici değişken silinir. yani argumanları okusanda yazsanda fonksiyondan çıkarken silinirler . doğrusu;

float Coordinates::Length ()
{ return (x2 - x1) ; }
////////////////////////////////////////

// as usual width function
//float Coordinates::Width (float width )
//{ return width = y2 - y1;}
//aynı olay; doğrusu;
float Coordinates::Width ()
{ return (y2 - y1);}
////////////////////////////////////////


// get functions
//float Coordinates::getCoord()
//{ return x1, x2, x3, x4, y1, y2, y3, y4; }
yok böle bişi olamaz yani return a1,a2,a3 onun yerine dizi pointerı döndürmen lazım o yüzden boşver bu fonksiyonu sil
////////////////////////////////////////
//cout << "nAlso the perimeter of your rectangle is: ";
//cor.computePerimeter();
böyle bişi ekrana fonksiyonun çıktısını yazdıramaz. computePerimeter fonksiyonu değer döndürüyor ekrana çıktı vermiyor.olabilecek en iyi ihtimal şudur;
cout << "nAlso the perimeter of your rectangle is: " << cor.computePerimeter();
////////////////////////////////////////


//Coordinates cor;
yukardaki satırın derlenirken hata vermesi lazım.

//kodları şu şekilde değiştirirsen doğru olur.
cout << " Enter 2 x values for calculation of length " << endl;
cin >> a1 >> a2 >> a3 >> a4;
cout << " Enter 2 y values for calculation of width " << endl;
cin >> b1 >> b2 >> b3 >> b4;
Coordinates cor(a1, a2, a3, a4, b1, b2, b3, b4);
cor.printcorrection();
////////////////////////////////////////

sonra;
length ve width hesaplanmadan kullanılıyor o yüzden ikisini constructor da hesaplatmalısın

constructoru da aşşadaki gibin değiştirelim

Coordinates::Coordinates(float x1=1 , float x2=1, float x3=1 , float x4=1, float y1=1, float y2=1, float y3=1, float y4=1)
{
setCoord(x1, x2, x3, x4, y1, y2, y3, y4);
length=Lenth();
width=Width();
}
////////////////////////////////////////


bunları yaptıktan sora çalışması lazım ama gözümden kaçmış bişiler olabilir..
Link to comment
Sosyal ağlarda paylaş

koddan önce mantığı ben mi yanlış anladım bilmiyorum ama doğru anladıysam oalyın biraz kolayına kaçmışsın gibi geldi bana.

dörtgenin köşeleri aynı x de ve y de olmak zorunda değilki

yani lengthi x2-x1 widthi y2-y1 almışşsın ama çapraz duruyorsa bu dörtgen bu işlemler yanlış olur

ha eğer çapraz durma gibi bir olay sözkonusu değilse bu mesajı boşver ehe :)
Link to comment
Sosyal ağlarda paylaş

koda gelince rahan baya düzeltmiş zaten ama onun yanında ben printcorrection() functionın işlevini anlamadım. zaten constructorda yaratırken eğer 20den büyükse 0 atıyorsun bu durumda printcorrection() functionını çağırdığında kordinatların 20den büyük olma şansı yokki.

tabi burda kastettiğim this is a rectangle kısmı değil rectangle olup olmadığını kontrol etse sadece sorun yok

ama if ( x1 <= 20, x2 <= 20, x3 <= 20, x4 <= 20, y1 <= 20, y2 <= 20, y3 <= 20, y4 <= 20)
cout << " nValues are accepted " << endl << endl;
else
cout << " nPlease make sure x and y's are not greater than 20 " << endl;
bu kontrol gereksiz olmuş

onun dışında çok detaylı bakamadım sonra daha bir detaylı bakarım eğer sorun düzelmezse
Link to comment
Sosyal ağlarda paylaş

ahah bi programcılık okudu raid direk yani karizma yaptı:) komiğime gitti ya:) ahaha
Beni inşaat havuzuna atan sora kafasına çekiç yiyen insan şimdi neler diyo hey gidi günler hey:)[hline]Alexi_Septimus demiş ki:Kedi iyicene Avatarıyla özdeşir oldu.

"ZzZzZzZZzZ"
"Site kapandı site!"
"ZzZzZzZzZz"
"*Undenfied Flying Terlik Strikes Karakedi In The Middle Of Iki Kaşının Ortası*" !
Link to comment
Sosyal ağlarda paylaş

saoln arkadşlar uğraşıyorum işte demin düzeltirken baktım bazıların ilk başta öyle yapmışım ama fonksiyonları detaylı çalışmam lazım, yüzeysel biliyorum o yüzden tekrarında doğruyu yanlış sanmış olmam normaldir..


şu print correction olayı şu
işte değerlerin sınır aşıp aşmadığının yazdırılması o kadar, ekrana çıkıyor, bir ara bir yere yükleyip gösteirim :)

birde yok paralel kenar vari bir şey olamaz, silgi şeklinde filan da olamaz. Anladım raid in sorduğunu, bildiğimiz dikdörtgen istediler, yoksa ilk onu düşündüm, çizdim zaten formüle ettim 2 dk da öyle yazmaya başladım.

Eh 3. kodum bu c++ başladığımdan beri mazur görmek lazım biraz :-)[hline]sonunda yeniledim.
Link to comment
Sosyal ağlarda paylaş

bende şu float get coord ları kaldırmıştım sonra tekrar koydum ama işlevini anlayamamıştım,

şu ilk başta ki float larıda x1=1 filan diye gitmiştim, sonra yanlışa yönelmişim.

Valla en iyi desteği lengthleri ayarlarken verdin

// as usual length function
float Coordinates::Length()
{ return (x2-x1); }

// as usual width function
float Coordinates::Width()
{ return (y2-y1);}

şunlar için ne kadar uğraştım anlatamam
böyle de denedim ama çıkaramadım ekranda

şu cor.copmute ları cout a direk koymak ile olayı hallettirdin :))

hani yanlış yapmışım ama bu yanlışları doğrularıyla değiştirmişim yani birini düzeltirken ötekini yanlışa çevirmişim :))

ne diyelim paticikler saolsun yardım patisini uzattı .

Bu arada yüksek lisans ta bir sanata başladım. Köpükten kahve bardaklarına sanat :) şaka maka bir karikatür bandı doğacak :)
kahramanımız da tabi zühtü (arkadaşımın kedisi bir ara resimleri koymuştum konu dışına )

Kod çalışıyorr,,

şu doğrulamada tamamsa ohh tadından yenmez..

Birde insanın kendi düşündüğü yoldan olmas dah bir keyif veriyor, her ne kadar yanlışlarımı düzelttirmişsemde. Nette bir örnekler var ağzım yarı açık izledim :)[hline]sonunda yeniledim.
Link to comment
Sosyal ağlarda paylaş

şimdi şöyle bir durum var hata mesajların her zaman vermiyor onu vermesini istiyorum

// ok bu kısmı hallettim, ama aşağıda ki önemli...

birde
//return larger (fabs(x2-x1),(y2-y1))
olayını length e

// return smaller(fabs(x2-x1)-(y2-y1))
width e set etmek istiyrum

ama #include i daha önce kullanmadım şimdi ona girersem sorun çıkabilir mi diyorum?[hline]sonunda yeniledim.

[Bu mesaj mexinth tarafından 19 December 2003 01:20 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

#include 'ın sorun çıkartıcağını sanmıyorum, ama
return larger (fabs(x2-x1),(y2-y1))
return smaller(fabs (x2-x1)-(y2-y1) )
bu iki satır derlenmez hata verir, doğrusu
return larger ( fabs ( (x2-x1),(y2-y1) ) )
yani parantez hatası, bu hatayı engellemenin de çok basit bi yolu var fonsiyonu yazarken
önce
fabs()
diye yazmak sonra geri gelip içini doldurmak, yani aç kapa parantez sonra 1 sola kay.

*bu arada larger ile smaller ı bilmiyorum ama fonksiyon olarak kabul ettim.

[Bu mesaj Rahan tarafından 19 December 2003 01:23 tarihinde değiştirilmiştir]
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...