Operacje arytmetyczne, użytki matematyczne, operacje na tekście, liczby losowe
Slajd 1
Informatyka I – wykład 3
G.P.Korbaś
Program 1. Różne podstawowe operacje matematyczne
#include <iostream>
using namespace std;
int main()
{
int i;
float f;
double d;
char c;
bool b;
i=1+2; cout << i <<endl; // 3
i=1.6+2; cout << i <<endl;// 3
i=2; cout << i++ << ' ' << i <<endl; // 2 3
i=2;cout << ++i << ' ' << i <<endl; // 3 3
i=1;
i+=2; cout << i <<endl; // 3
i*=2; cout << i <<endl; // 6
i=7 / 2; cout << i <<endl;// 3
i=7 % 2; cout << i <<endl;// 1
Slajd 2
Informatyka I – wykład 3
G.P.Korbaś
f=1e20; cout << f <<endl;// 1e+020
f*=1e10; cout << f <<endl; // 1e+030
f*=1e20; cout << f <<endl; // 1.#INF
f = 7 / 2; cout << f <<endl; // 3
f = 7.0 / 2; cout << f <<endl; // 3.5
f = 7 / 2.0; cout << f <<endl; // 3.5
cout << endl;
d=1e20; cout << d <<endl; // 1e+020
d*=1e10; cout << d <<endl; // 1e+030
d*=1e20; cout << d <<endl; // 1e+050
cout << endl;
c = 'a'; cout << c <<endl; // a c+=1; cout << c <<endl; // b i = c; cout << i <<endl; // 98
c=99; cout << c <<endl; //c
Slajd 3
Informatyka I – wykład 3
G.P.Korbaś
b=true; cout << b << endl; // 1
b=false; cout << b << endl; // 0
b=!b; cout << b << endl; // 1
b=10; cout << b << endl; // 1
b=!(8>10 || 7<5) && (10/2==5); cout << b << endl; // 1
cout <<endl;
cin>>c;
return 0;
}
Slajd 4
Informatyka I – wykład 3
G.P.Korbaś
●
a/b – dzielenie (całkowite lub zmiennoprzecinkowe)
●
a%b – a modulo b (reszta z dzielenia a przez b)
●
a*=b – mnoży a przez b i wynik umieszcza w a
●
a+=b – dodaje b do a i wynik umieszcza w a
●
u++ – najpierw zwraca wartość u a następnie dodaje do u 1
●
++u – najpierw dodaje do u 1 a następnie zwraca wartość u
●
int – typ całkowity
●
float – typ zmiennoprzecinkowy pojedynczej precyzji
●
double – typ zmiennoprzecinkowy podwójnej precyzji
●
char – typ znakowy
●
bool – typ logiczny
Slajd 5
Informatyka I – wykład 3
G.P.Korbaś
Program 2. Wybrane funkcje z biblioteki cmath
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a,b;
a=M_PI; cout << a << endl;
a=sin(M_PI/3); cout << a << endl; b=cos(M_PI/3); cout << a*a+b*b << endl; a = sqrt (2); cout << a << endl; b = a*a; cout << b << endl;
b = pow(a,16); cout << b << endl; a = log10(10000); cout << a << endl; b = -exp(2); cout << abs(b) << endl; char x;
cin>>x;
return 0;
}
Slajd 6
Informatyka I – wykład 3
G.P.Korbaś
●
sin(x) – sinus danej liczby
●
cos(x) – cosinus danej liczby
●
exp(x) – eksponent danej liczby
●
log10(x) – logarytm dziesiętny danej liczby
●
pow(a,b) – a do potęgi b
●
abs(a) – wartość bezwzględna a
Slajd 7
Informatyka I – wykład 3
G.P.Korbaś
Program 3. Program pobiera imię i nazwisko. Jeśli imię to “Jan” wyświetlane są wykrzykniki. Program łaczy tekst “Czesc “, imię, spacje i nazwisko w jeden tekst i wyświetla go, w następnej linii jego długość, a następnie pierwszy, czwarty i piąty znak oddzielone spacją.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1,s2;
cout << "Imie:"; cin >> s1; cout << "Nazwisko:"; cin >> s2; if (s1=="Jan") cout<<"!!!"; s1="Czesc "+s1+' '+s2;
cout << s1 << endl;
cout << s1.length() << endl; cout << s1[0] << ' ' << s1[3] << ' ' << s1[4]<< endl;//C s c char x;
cin >> x;
return 0;
}
Slajd 8
Informatyka I – wykład 3
G.P.Korbaś
●
s1==”Jan” – porównywanie tekstów odbywa się tradycyjnie
●
s1+s2 – dodawanie tekstów odbywa się tradycyjnie
●
s1.length() – zwraca długość tekstu s1 (liczbę znaków tekstu)
●
s1[3] – pobiera czwarty! (liczone od 0) znak tekstu s1
Slajd 9
Informatyka I – wykład 3
G.P.Korbaś
Program 4. Różne operacje na tekście - wyniki operacji w komentarzach
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1,s2;
s1="Ala ma kota"; cout << s1 << endl; // Ala ma kota s1=s1.substr(4,7); cout << s1 << endl; // ma kota s1.erase(0,3); cout << s1 << endl; // kota s2=" i psa";
s1+=s2; cout << s1 << endl; // kota i psa cout << s1.find("psa") << endl; // 7
char x;
cin >> x;
return 0;
}
Slajd 10
Informatyka I – wykład 3
G.P.Korbaś
●
s1.substr(4,7) – pobiera podciąg ciągu s1 począwszy od znaku o numerze 4 (piątego!) o długości 7
●
s1.erase(0,3) – usuwa podciąg ciągu s1 począwszy od znaku o numerze 0 (pierwszego!) o długości 3
●
s1.find(“psa”) – szuka w s1 podciągu i zwraca nr znaku począwszy od którego podciąg występuje
Slajd 11
Informatyka I – wykład 3
G.P.Korbaś
Program 5. Pobranie linijki tekstu i wypisanie od końca
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
int d;
getline(cin,s);
skok:
d=s.length();
if (d>0)
{
cout<<s[d-1];
s.erase(d-1,1);
goto skok;
}
cout<<endl;
system("PAUSE");
return 0;
}
Slajd 12
Informatyka I – wykład 3
G.P.Korbaś
●
getline(cin,s); - pobiera do zmiennej s tekst ze strumienia cin Slajd 13
Informatyka I – wykład 3
G.P.Korbaś
Program 6a. - generowanie liczby losowej
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
int i,j;
srand(time(0));
i=rand();
j = 100 * i * 1.0 / RAND_MAX;
cout << i << ' ' << j << ' ' << RAND_MAX << endl; char x;
cin >> x;
return 0;
}
Slajd 14
Informatyka I – wykład 3
G.P.Korbaś
●
rand() - losuje liczbę całkowitą od 0 do RAND_MAX
●
RAND_MAX – liczba zależna od kompilatora – minimum 32767
●
srand(argument) – inicjuje generator liczb losowych zależnie od argumentu
●
time(0) – z biblioteki ctime - zwraca aktualny czas w formacie unixowym (liczba sekund od 01-01-1970 00:00) Aby wylosować liczbę z przedziału <0,n> gdzie n jest pewną liczbą
●
naturalną można użyć polecenia n*rand()*1.0/RAND_MAX; Slajd 15
Informatyka I – wykład 3
G.P.Korbaś
Program 6b. - generowanie liczby losowej, wykorzystanie stałej
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
const int maxi=100;
int i,j;
srand(time(0));
i=rand();
j = maxi * i * 1.0 / RAND_MAX;
cout << i << ' ' << j << ' ' << RAND_MAX << endl; char x;
cin >> x;
return 0;
}
Slajd 16
Informatyka I – wykład 3
G.P.Korbaś
Program 6c. - generowanie liczby losowej, wykorzystanie stałej (przed funkcją main) i rzutowanie - pozbycie się ostrzeżenia kompilatora
#include <iostream>
#include <ctime>
using namespace std;
const int maxi=100;
int main()
{
int i,j;
srand(time(0));
i=rand();
j = int(maxi * i * 1.0 / RAND_MAX);
cout << i << ' ' << j << ' ' << RAND_MAX << endl; char x;
cin >> x;
return 0;
}
Slajd 17
Informatyka I – wykład 3
G.P.Korbaś