[]
iota-2 ve template...
(git: 78766)
öncelikle dün iota'nın ne olduğunu anladım fakat kullanımında bir sıkıntı yaşıyorum.
örneğin;
template<class X> void myFunction() {
X c;
vector<X> final(10);
cout<<"Enter character>> "<<endl;
cin>>c;
iota(final.begin(), final.end(), c);
for(int i=0; i<final.size();i++)
cout<<final[i]<<" ";
}
burada amaç kullanıcıdan alınan türü bilinmeyen(int ,char) herhangi bir karakteri alıp vektöre sırayla yazdırmasını sağlamak. Fakat sorun şu ki burda template kullanmama rağmen kullanıcı sadece integer girildiğinde işlemi yapıyor. Örneğin karakter girdiğinde vektöre girilen karakteri atamıyor, rastgele sayılar veriyor. Hala anlamış değilim bunun sebebini çözebilen varsa beni bir aydınlatsın.
teşekkürler
öncelikle dün iota'nın ne olduğunu anladım fakat kullanımında bir sıkıntı yaşıyorum.
örneğin;
template<class X> void myFunction() {
X c;
vector<X> final(10);
cout<<"Enter character>> "<<endl;
cin>>c;
iota(final.begin(), final.end(), c);
for(int i=0; i<final.size();i++)
cout<<final[i]<<" ";
}
burada amaç kullanıcıdan alınan türü bilinmeyen(int ,char) herhangi bir karakteri alıp vektöre sırayla yazdırmasını sağlamak. Fakat sorun şu ki burda template kullanmama rağmen kullanıcı sadece integer girildiğinde işlemi yapıyor. Örneğin karakter girdiğinde vektöre girilen karakteri atamıyor, rastgele sayılar veriyor. Hala anlamış değilim bunun sebebini çözebilen varsa beni bir aydınlatsın.
teşekkürler
Bu fonksiyonu nasıl çağırıyorsunuz hata almadan?
Class içinde tanımlayınca bu fonksiyonu bende çalışıyor ayrıca.
Class içinde tanımlayınca bu fonksiyonu bende çalışıyor ayrıca.
- lex (17.06.09 13:26:17 ~ 13:42:57)
aslında çağırırken sorun oluyor, evet fakat herhangi bir sayı gönderirsem çalışıyor. Burda sade haliyle yazdım aslında, fonksiyon kullanıcıdan değer alıyor, fakat sorun o değil şimdilik, sorun iota fonksiyonun çalışmaması filan da değil, sorun karakterleri almaması sadece sayıları alması.
- ocanal (17.06.09 19:01:42)
#include <iostream>
#include <algorithm>
#include <iterator>
#include <algo.h>
using namespace std;
template<class X>
class deneme {
public:
void myFunction() {
vector<X> final(10);
X c;
cout<<"Enter character>> "<<endl;
cin>>c;
iota(final.begin(), final.end(), c);
for(int i=0; i<final.size();i++)
cout<<final[i]<<" ";
}
};
int main(void) {
deneme <char>a;
a.myFunction();
return (0);
}
Bu kod çalışmakta bende, cygwin altında; char olarak increment etmekte yani.
#include <algorithm>
#include <iterator>
#include <algo.h>
using namespace std;
template<class X>
class deneme {
public:
void myFunction() {
vector<X> final(10);
X c;
cout<<"Enter character>> "<<endl;
cin>>c;
iota(final.begin(), final.end(), c);
for(int i=0; i<final.size();i++)
cout<<final[i]<<" ";
}
};
int main(void) {
deneme <char>a;
a.myFunction();
return (0);
}
Bu kod çalışmakta bende, cygwin altında; char olarak increment etmekte yani.
- lex (17.06.09 22:22:43)
@lex
ama bu sefer de sayılarda olmuyor, sadece 1 den 9'a kadar olan sayıları sıralayabiliyor. Örneğin 11 girince sadece ilk basamak sayılarını alıyor, yine 1,2,3,4....,9 şeklinde sıralıyor.
anladığım kadarıyla senin yazdığında her girilen şeyi karakter sıralamasına bakarak alıyor,benim istediğim kullanıcı int girmişse onluk sisteme bakarak sayıları sıralasın, eğer karakter girerse bu sefer karakter sıralamasına baksın. Burada yapamaya çalıştığım şey kullanıcıya ne tür değişken gireceğini sormadan kendim algılayıp bunu yaptırmak. Fakat hala yapabilmiş değilim.
ama bu sefer de sayılarda olmuyor, sadece 1 den 9'a kadar olan sayıları sıralayabiliyor. Örneğin 11 girince sadece ilk basamak sayılarını alıyor, yine 1,2,3,4....,9 şeklinde sıralıyor.
anladığım kadarıyla senin yazdığında her girilen şeyi karakter sıralamasına bakarak alıyor,benim istediğim kullanıcı int girmişse onluk sisteme bakarak sayıları sıralasın, eğer karakter girerse bu sefer karakter sıralamasına baksın. Burada yapamaya çalıştığım şey kullanıcıya ne tür değişken gireceğini sormadan kendim algılayıp bunu yaptırmak. Fakat hala yapabilmiş değilim.
- ocanal (18.06.09 01:15:19 ~ 10:52:04)
1