C++ Sorularım ( Başlangıç Seviyesi )
-
noname bunu yazdı
Hepinize cevaplar için çok teşekkür ederim. Videolu/pdfli vs. her türlü kaynak tavsiyenize de açığım bu arada.
Matematik üzerine bir şeyler yaparken p,x,y,z gibi değişkenler tanımlayıp bazı basit işlemler yaptırıyoruz. Kimi zaman
"float x=0, y=0;"
şeklinde tanımlarken kimi zaman ise
"int p=0;" şeklinde giriyoruz.
Bu int ve float ın olayı/farkı nedir? Başka çeşitleri de var mı?
veri yapılarına bakabilirsin kısaca hocam.yamulmuyorsam int 4 byte ve düz integerlardan(tam sayı ) oluşuyor , float ise 8 byte ve virgüllülerden yani ondalıklı sayılardan
-
C ve C++'da veri tiplerinin boyutları kesin değil, platforma göre değişiyor. Örneğin int 4 byte da olabilir 2 byte da. Standart şunu söyler: char <= short <= int <= long der, gerisine karışmaz. sizeof işleciyle tipin büyüklüğünü görebilirsiniz. Bu yüzden aralıklara güvenmeyin, sınırlar için max ve min makrolarını kullanın: http://www.cplusplus.com/reference/climits/ Zaten align falan uğraşmıyorsanız bilmeniz gereken sınırlardır, tiplerin bellekte kapladığı alan değil:)
-
3 saat içerisinde yetiştirmem gereken dört tane alıştırma ödevi var, bunlardan ilkiyle uğraşıyorum şuan ancak compile ederken hata verip duruyor. İşin içinden çıkamadım.
Umarım göz gezdirip yardım edebilecek birileri vardır..
#include #include #include #include #include using std::cout; using std::endl; template void to_bin(T v) { union { T value; unsigned char bytes[sizeof(T)]; }; memset(&bytes, 0, sizeof(T)); value=v; // assumes little endian machine for (size_t i = sizeof(T);i>0;i--) { unsigned char pot=128; for (int j = 7;j>=0;j--,pot/=2) if (bytes[i-1]&pot) cout << "1"; else cout << "0"; cout << " "; } cout << endl; } int main() { cout <<" Binaerdarstellungen von -2, -1, 0, 42, INT_MAX und INT_MAX+1 als Int: " << endl; int p_i=-2,q_i=-1,r_i=0,s_i=42,t_i=INT_MAX,u_i=INT_MAX+1; cout << "Fuer -2: "; to_bin(p_i); cout << endl; cout << "Fuer -1: "; to_bin(q_i); cout << endl; cout << "Fuer 0: "; to_bin(r_i); cout << endl; cout << "Fuer 42: "; to_bin(s_i); cout << endl; cout << "Fuer INT_MAX: "; to_bin(t_i); cout << "Fuer INT_MAX+1: "; to_bin(u_i); cout << endl; cout << endl << "Binaerdarstellungen von -2.0, 1.0, 0.0, 42.0, FLT_MAX, FLT_MAX+1 als float: " << endl; float p_f = -2.0, q_f= -1.0,r_f=0.0,s_f=42.0,t_f=FLT_MAX,u_f=FLT_MAX+1 ; cout << "Fuer -2.0: "; to_bin(p_f); cout << endl; cout << "Fuer -1.0: "; to_bin(q_f); cout << endl; cout << "Fuer 0.0: "; to_bin(r_f); cout << endl; cout << "Fuer 42.0: "; to_bin(s_f); cout << endl; cout << "Fuer FLT_MAX: "; to_bin(t_f); cout << endl; cout << "Fuer FLT_MAX+1: "; to_bin(u_f); cout << endl; cout << endl << "Binaerdarstellungen von -2.0, 1.0, 0.0, 42.0, DBL_MAX, DBL_MAX+1 als double: " << endl; double p_d = -2.0, q_d=-1.0,r_d=0.0,s_d=42.0,t_d=DBL_MAX,u_d=DBL_MAX+1 ; cout << "Fuer -2.0: "; to_bin(p_d); cout << endl; cout << "Fuer -1.0: "; to_bin(q_d); cout << endl; cout << "Fuer 0.0: "; to_bin(r_d); cout << endl; cout << "Fuer 42.0: "; to_bin(s_d); cout << endl; cout << "Fuer DBL_MAX: "; to_bin(t_d); cout << endl; cout << "Fuer DBL_MAX+1: "; to_bin(u_d); cout << endl; cout << endl << "Groesse von Integer Variablen: "; cout << sizeof(p_i) << endl; cout << "Groesse von Gleitkomma Variablen mit einfacher Genauigkeit: "; cout << sizeof(p_f) << endl; cout << "Groesse von Gleitkomma Variablen mit doppelter Genauigkeit: "; cout << sizeof(p_d) << endl; return 0; }
x@cluster:~/x_Programmierung_WS1516/uebung3[496]$ g++ -Wall -Werror -o aufgabe1 auff1.cpp cc1plus: warnings being treated as errors auff1.cpp: In function 'int main()': auff1.cpp:41: error: integer overflow in expression auff1.cpp: In function 'void to_bin(T) [with T = int]': auff1.cpp:44: instantiated from here auff1.cpp:17: error: unused variable 'value' auff1.cpp:17: error: unused variable 'bytes' auff1.cpp: In function 'void to_bin(T) [with T = float]': auff1.cpp:70: instantiated from here auff1.cpp:17: error: unused variable 'value' auff1.cpp:17: error: unused variable 'bytes' auff1.cpp: In function 'void to_bin(T) [with T = double]': auff1.cpp:97: instantiated from here auff1.cpp:17: error: unused variable 'value' auff1.cpp:17: error: unused variable 'bytes'
-
-
0x656e bunu yazdı
#include "stdout.h"
nerde hocam :D
stdio.h mıydı neydi işte c++ bilmiyorumAynen nerde o :D
noname eğer unuttuysan yazmayı bence git bi balkona çık 2 3 tokat at kendine gel :)
-
template
void to_bin(T v)yerine
template <typename T>
void to_bin(T v)olacak sanırım.
-
include'lar eksik kopyalanmış ya :)
Tekrar atıyorum kodu, direk metin olarak;
#include <cstring>
#include <iostream>
#include <climits>
#include <cfloat>
#include <cmath>
using std::cout;
using std::endl;
template<class T>
void to_bin(T v)
{
union
{
T value;
unsigned char bytes[sizeof(T)];
};
memset(&bytes, 0, sizeof(T));
value=v;
// assumes little endian machine
for (size_t i = sizeof(T);i>0;i--)
{
unsigned char pot=128;
for (int j = 7;j>=0;j--,pot/=2)
if (bytes[i-1]&pot)
cout << "1";
else
cout << "0";
cout << " ";
}
cout << endl;
}
int main() {
cout <<" Binaerdarstellungen von -2, -1, 0, 42, INT_MAX und INT_MAX+1 als Int: " << endl;
int p_i=-2,q_i=-1,r_i=0,s_i=42,t_i=INT_MAX,u_i=INT_MAX+1;
cout << "Fuer -2: ";
to_bin(p_i);
cout << endl;
cout << "Fuer -1: ";
to_bin(q_i);
cout << endl;
cout << "Fuer 0: ";
to_bin(r_i);
cout << endl;
cout << "Fuer 42: ";
to_bin(s_i);
cout << endl;
cout << "Fuer INT_MAX: ";
to_bin(t_i);
cout << "Fuer INT_MAX+1: ";
to_bin(u_i);
cout << endl;
cout << endl << "Binaerdarstellungen von -2.0, 1.0, 0.0, 42.0, FLT_MAX, FLT_MAX+1 als float: " << endl;
float p_f = -2.0, q_f= -1.0,r_f=0.0,s_f=42.0,t_f=FLT_MAX,u_f=FLT_MAX+1 ;
cout << "Fuer -2.0: ";
to_bin(p_f);
cout << endl;
cout << "Fuer -1.0: ";
to_bin(q_f);
cout << endl;
cout << "Fuer 0.0: ";
to_bin(r_f);
cout << endl;
cout << "Fuer 42.0: ";
to_bin(s_f);
cout << endl;
cout << "Fuer FLT_MAX: ";
to_bin(t_f);
cout << endl;
cout << "Fuer FLT_MAX+1: ";
to_bin(u_f);
cout << endl;
cout << endl << "Binaerdarstellungen von -2.0, 1.0, 0.0, 42.0, DBL_MAX, DBL_MAX+1 als double: " << endl;
double p_d = -2.0, q_d=-1.0,r_d=0.0,s_d=42.0,t_d=DBL_MAX,u_d=DBL_MAX+1 ;
cout << "Fuer -2.0: ";
to_bin(p_d);
cout << endl;
cout << "Fuer -1.0: ";
to_bin(q_d);
cout << endl;
cout << "Fuer 0.0: ";
to_bin(r_d);
cout << endl;
cout << "Fuer 42.0: ";
to_bin(s_d);
cout << endl;
cout << "Fuer DBL_MAX: ";
to_bin(t_d);
cout << endl;
cout << "Fuer DBL_MAX+1: ";
to_bin(u_d);
cout << endl;
cout << endl << "Groesse von Integer Variablen: ";
cout << sizeof(p_i) << endl;
cout << "Groesse von Gleitkomma Variablen mit einfacher Genauigkeit: ";
cout << sizeof(p_f) << endl;
cout << "Groesse von Gleitkomma Variablen mit doppelter Genauigkeit: ";
cout << sizeof(p_d) << endl;
return 0;
}
-
iKlotho bunu yazdı
template
void to_bin(T v)yerine
template
void to_bin(T v)olacak sanırım.
template
void to_bin(T v)
şeklinde kodda hocam, o da eksik kopyalanmış..
Şimdi senin dediğin şekilde de deniyorum tekrar
edit: malesef
noname tarafından 15/Kas/15 21:39 tarihinde düzenlenmiştir -
Bana biraz ezbere gidiyorsun gibi geldi. Şimdi daha veri tiplerini genel syntaxı bilmeden(veya öğretmeden) size nasıl kod yazdırıyorlar anlamadım. Çünkü daha programlamanın en temel düzeyinde eksiğin var.
Böyle programlama öğrenilmez.
Sana tavsiyem önce güzel bir c++ anlatan kitap edin (işin uzmanları önersin c++ a hakim değilim), oradan temel veri tipleri, akış diagramı, syntaxı özümse. Daha sonra döngüler ve ifadeleri kavra. Böyle böyle basmaak basamak gidersen anca öğrenirsin. Yoksa 1-2 tutoriala bakıp langırts diye kod yazmaya kalkarsan hiçbir bok öğrenemezsin.
-
torpedo_XL bunu yazdı
Bana biraz ezbere gidiyorsun gibi geldi. Şimdi daha veri tiplerini genel syntaxı bilmeden(veya öğretmeden) size nasıl kod yazdırıyorlar anlamadım. Çünkü daha programlamanın en temel düzeyinde eksiğin var.
Böyle programlama öğrenilmez.
Sana tavsiyem önce güzel bir c++ anlatan kitap edin (işin uzmanları önersin c++ a hakim değilim), oradan temel veri tipleri, akış diagramı, syntaxı özümse. Daha sonra döngüler ve ifadeleri kavra. Böyle böyle basmaak basamak gidersen anca öğrenirsin. Yoksa 1-2 tutoriala bakıp langırts diye kod yazmaya kalkarsan hiçbir bok öğrenemezsin.
Valla hocam çok haklısın evet, zaten daha 3 haftadır ders alıyoruz, kodların bir kısmı hazırdı, düzenlememiz gereken kısmını elimden geldiğince yaptım, bir iki arkadaşın da yardımıyla bu hale getirdim ama compile edip uploada yetişemezsem sınava giremeyeceğim, malesef ki zorunlu ödev..