Informatyka I - wykład 3
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ś
cout << endl;
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ś
cout <<endl;
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ś
Uwagi do programu 1.
●
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ś
Uwagi do programu 2.
●
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ś
Uwagi do programu 3.
●
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ś
Uwagi do programu 4.
●
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ś
Uwagi do programu 5.
●
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ś
Uwagi do programu 6.
●
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ś