ROZWIĄZANIA
PRZYKŁADOWYCH ZADAŃ |
ZADANIE_1
Napisz funkcję CZY_SEPARATOR, której argumentem jest jedna dana typu char.
Funkcja powinna sprawdzić przekazany znak jest separatorem tekstowym:
tzn. spacją, średnikiem, przecinkiem, tabulatorem lub znakiem przejścia do
nowej liniii.
Rezultatem funkcji powinna być wartość logiczna: true lub false
(typu bool)
ZADANIE_2
Napisz funkcję JAKIE_UPORZADKOWANE,
której argumentami wejściowymi są trzy liczby typu long,
sprawdzającą czy wartości tych parametrów są uporządkowane rosnąco lub
malejąco.
W przypadku uporządkowania rosnącego funkcja powinna zwrócić wartość
„1” ,
w przypadku uporządkowania malejącego „-1” a w pozostałych przypadkach
„0”.
ZADANIE_3
Napisz funkcję LITERY_CZY_CYFRY, której argumentami są cztery dane typu
char.
Funkcja powinna sprawdzić przekazane znaki i zwrócić informację, czy
zawierają one
więcej kodów liter (wówczas zwracana jest wartość „+1”),
czy cyfr (wówczas zwracana jest wartość „-1”)
oraz zwracającą „0” w przypadku równej ilości.
ZADANIE_4
Napisz funkcję WYSWIETL_ROSNACO, której argumentami wejściowymi
są 3 liczby rzeczywiste float i której działanie polega na wyświetleniu tych liczb
uporządkowanych od najmniejszej do największej wartości.
Napisz funkcję
CZY_SEPARATOR, której argumentem jest jedna dana typu char.
Funkcja powinna sprawdzić przekazany znak jest separatorem tekstowym:
tzn. spacją, średnikiem, przecinkiem, tabulatorem lub znakiem przejścia
do nowej linii.
Rezultatem funkcji powinna być wartość logiczna: true lub false
(typu bool)
bool CZY_SEPARATOR( char z )
{
if( z==' ' || z==';' || z==',' || z=='\t' || z=='\n' )
return true;
else
return false;
}
#include <iostream>
using namespace std;
void main() //przykładowe wywołanie w/w funkcji
{
char znak = ';' ;
if( CZY_SEPARATOR(znak) == true )
cout << "To jest separator" << endl;else
cout << "To jest jakiś inny znak (nie separator)" << endl;
}
Napisz funkcję JAKIE_UPORZADKOWANE, której argumentami wejściowymi są
trzy liczby long,
sprawdzającą czy wartości tych parametrów są uporządkowane rosnąco
lub malejąco.
W przypadku uporządkowania rosnącego funkcja powinna zwrócić wartość
„1” ,
w przypadku uporządkowania malejącego „-1” a w pozostałych
przypadkach „0”..
int JAKIE_UPOPRZADKOWANIE( long L1, long L2, long L3 )
{if( L1<L2 && L2<L3 )
return +1;if( L1>L2 && L2>L3 )
return -1;
return 0;
}
#include <iostream>
using namespace std;
void main() //przykładowe wywołanie w/w funkcji
{
int wynik = CZY_UPOPRZADKOWANE( 40, 12, -6);
if( wynik>0 )
cout << "liczby były uporządkowane rosnąco" << endl;
else if( wynik<0 )
cout << "liczby były uporządkowane malejąco" << endl;
else
cout << "liczby nie były uporządkowane" << endl;
}
Napisz funkcję LITERY_CZY_CYFRY, której argumentami są cztery dane typu
char.
Funkcja powinna sprawdzić przekazane znaki i zwrócić informację, czy
zawierają one więcej kodów
liter (wówczas zwracana jest wartość „+1”), czy cyfr (wówczas
zwracana jest wartość „-1”)
oraz zwracającą „0” w przypadku równej ilości.
// wersja A - najprostsza -> same instrukcje "if"
#include <ctype.h>
int LITERY_CZY_CYFRY( char z1, char z2, char z3, char z4 )
{
//zamiana wszystkich liter na małe, aby łatwiej sprawdzać warunki
z1 = tolower(z1);
z2 = tolower(z2);
z3 = tolower(z3);
z4 = tolower(z4);
//obliczanie ilosci cyfr
int ilosc_cyfr=0;
if( z1>='0' && z1<='9' )
ilosc_cyfr++;
if( z2>='0' && z2<='9' )
ilosc_cyfr++;
if( z3>='0' && z3<='9' )
ilosc_cyfr++;
if( z4>='0' && z4<='9' )
ilosc_cyfr++;
//obliczanie ilości liter
int ilosc_liter=0;
if( z1>='a' && z1<='z' )
ilosc_liter++;
if( z2>='a' && z2<='z' )
ilosc_liter++;
if( z3>='a' && z3<='z' )
ilosc_liter++;
if( z4>='a' && z4<='z' )
ilosc_liter++;
//wyznaczenie zwracanej wartości
if( ilosc_liter>ilosc_cyfr )
return +1;
if( ilosc_liter<ilosc_cyfr )
return -1;
return 0;
}
void main() //przykładowe wywołanie w/w funkcji
{
int wynik = LITERY_CZY_CYFRY( 'a', 'B', 's', '2' );
}
//wersja B - z wykorzystaniem pętli i cyklicznego przesuwania znaków)
int LITERY_CZY_CYFRY( char z1, char z2, char z3, char z4 )
{
//inicjalizacja liczników
int ilosc_cyfr=0;
int ilosc_liter=0;
//pętla powtarzająca te same operacje dla kolejnych zmiennych
for(int i=0; i<4; i++)
{
//obliczanie ilości cyfr
if( z1>='0' && z1<='9' )
ilosc_cyfr++;
//obliczanie ilości liter
if( z1>='a' && z1<='z' || z1>='A' && z1<='Z')
ilosc_liter++;
//cykliczne przesuniecie znaków "o jedną pozycję"
char buf = z1;
z1 = z2;
z2 = z3;
z3 = z4;
z4 = buf;
}
//wyznaczenie zwracanej wartości
if( ilosc_liter>ilosc_cyfr )
return +1;
if( ilosc_liter<ilosc_cyfr )
return -1;
return 0;
}
void main() //przykładowe wywołanie w/w funkcji
{
int wynik = LITERY_CZY_CYFRY( 'a', 'B', 's', '2' );
}
// wersja C - z przekazywaniem parametrów za pomocą tablicy
#include <ctype.h>
int LITERY_CZY_CYFRY( char znaki[4] )
{
//inicjalizacja liczników
int ilosc_cyfr=0;
int ilosc_liter=0;
//pętla powtarzająca te same operacje dla kolejnych zmiennych
for(int i=0; i<4; i++)
{
//obliczanie ilości cyfr
if( znaki[i]>='0' && znaki[i]<='9' )
ilosc_cyfr++;
//obliczanie ilości liter
if( tolower(znaki[i])>='a' && tolower(znaki[i])<='z')
ilosc_liter++;
}
//wyznaczenie zwracanej wartości
if( ilosc_liter>ilosc_cyfr )
return +1;
if( ilosc_liter<ilosc_cyfr )
return -1;
return 0;
}
void main() //przykładowe wywołanie w/w funkcji
{
char tab[4]={'a', 'B', 's', '2'};
int wynik = LITERY_CZY_CYFRY( tab );
}
Napisz funkcję
WYSWIETL_ROSNACO, której argumentami wejściowymi są 3 liczby rzeczywiste
i której działanie polega na wyświetleniu tych liczb uporządkowanych od
najmniejsze
do największej wartości.
// wersja A - bez przestawiania liczb
#include <iostream>
using namespace std;
void WYSWIETL_ROSNACO( float L1, float L2, float L3 )
{
//trzy liczby mogą by ustawione na 6 różnych sposobów
if( L1<=L2 && L2<=L3 )
cout<< "Liczby rosnaco: " <<L1<< ' ' <<L2<< ' ' <<L3<< endl;
else if(( L1<=L3 && L3<=L2 )
cout<< "Liczby rosnaco: " <<L1<< ' ' <<L3<< ' ' <<L2<< endl;else if(( L2<=L1 && L1<=L3 )
cout<< "Liczby rosnaco: " <<L2<< ' ' <<L1<< ' ' <<L3<< endl;
else if(( L2<=L3 && L3<=L1 )
cout<< "Liczby rosnaco: " <<L2<< ' ' <<L3<< ' ' <<L1<< endl;
else if(( L3<=L1 && L1<=L2 )
cout<< "Liczby rosnaco: " <<L3<< ' ' <<L1<< ' ' <<L2<< endl;
else if(( L3<=L2 && L2<=L1 )
cout<< "Liczby rosnaco: " <<L3<< ' ' <<L2<< ' ' <<L1<< endl;
}
void main() //przykładowe wywołanie w/w funkcji
{
WYSWIETL_ROSNACO( 34, -4, 12 );
}
// wersja B - z fizycznym posortowaniem/poprzestawianiem liczb
#include <iostream>
using namespace std;
void WYSWIETL_ROSNACO( float L1, float L2, float L3 )
{
for(int i=0; i<2; i++)
{
if( L1>L2 )
{
float buf = L1; //przestawianie pierwszej pary
L1 = L2;
L2 = buf;
}
if( L2>L3 )
{
float buf = L2; //przestawianie drugiej pary
L2 = L3;
L3 = buf;
}
}
//wyswietlenie posortowanych liczb
cout << "Liczby rosnaco: " << L1 << ' ' << L2 << ' ' << L3 << endl; }
void main() //przykładowe wywołanie w/w funkcji
{
WYSWIETL_ROSNACO( 34, -4, 12 );
}