#include<iostream>
#include<iomanip>
#include<locale>
#include<climits>
using namespace std;
const size_t N = 3;
typedef unsigned char byte; //definicja nowego typu
void wczytaj(float* t, const size_t n)
{ for (float* p = t; p < t + n; p++)
{ cout << "t[" << p - t << "]= ";
cin >> *p;
}
}
int main(void)
{ double tablica[N] = { 0.0 };
float* tf = nullptr;
wczytaj((float*)tablica, N);
cout.width(8);
cout << setprecision(3) << fixed << tablica[1] << ' ';
cout << tablica[2] << " " << cout.width() << endl;
tf = (float*)tablica;
cout << setprecision(3) << fixed << tf[1] << ' ';
cout << tf[2] << " " << cout.width() << endl;
//wyświetlenie bajtów
for (byte* pi = (byte*)tablica; pi < (byte*)(tablica + 1); pi++)
{ cout << setbase(2);
cout << (int)*pi << ' ';
//printf("%x ", *pi);
}
return 0;
}
-
Ćwiczenie
wykorzystania wskaźników jako alternatywnej metody
dostępu do zmiennych tworzonych przez kompilator tzn.
zmiennych globalnych i lokalnych.
( Patrz przykład z
wykładu nr 5 strona nr 3 )
– Utwórz zmienne
różnych typu: char, int, long, …
– Napisz instrukcje
zapisu wartości do jednej zmiennej (np. typu long) za
pomocą adresu innej zmiennej (tego samego typu lub innego)
–
Kontrolnie wyświetlaj zawartości zmiennych po dokonaniu tych
zapisów
Dodatkowo można napisać fragment programu,
który wyświetli zawartości poszczególnych bajtów
zajmowanych w pamięci przez w/w zmienne.
-
Ćwiczenie
w wykorzystaniu zapisu wskaźnikowego jako metody dostępu do
elementów tablicy.
Napisz funkcje wykonujące
podstawowe operacje na tablicach (tzn. wczytywanie,
wyświetlanie, liczenie sredniej, max, min) ale W ZAPISIE
WSKAŹNIKOWYM !
-
Łańcuchy
– Napisz funkcje:
int moje_strlen( char*
);
char* moje_strupr(char* );
char* moje_strcpy( char*, char* )
realizujące te
same operacje co standardowe funkcje strlen, strupr,
strcpy z biblioteki <string.h>.
-
Napisz
funkcję:
void str_zamien( char* tekst, char*
stary_wzorzec, char* nowy_wzorzec);
realizującą operację
zamiany w podanym tekście starego wzorca na nowy
np.
<tekst> == „ala ma kota a ola ma
asa”
<stary_wzorzec> == „ma”
<nowy_wzorzec>
== „miala”
rezultat zamiany: „ala miala kota a
ola miala asa”
(Osoby mniej wprawne w programowaniu
mogą napisać uproszczoną wersję tej funkcji, zamieniającą
tylko wzorce o tej samej długości. Wówczas nie ma
potrzeby „rozsuwania” lub „zsuwania” starego
tekstu) - Napisz
funkcję formatującą tekst poprzez usunięcie wszystkich
początkowych i końcowych spacji z łańcucha zadanego jako
parametr wejściowy tej funkcji.
-
Napisz
funkcję formatującą zadany tekst w taki sposób aby
kolejne wyrazy lub liczby były pooddzielane dokładnie
pojedynczymi spacjami.
Np. zamienającą tekst ”AAA
BBBBB C DD
EEEE ” na ”AAA
BBBBB C DD EEEE”
-
Napisz
funkcję wyznaczającą sumę wartości liczb
całkowitych przechowywanych w pamięci komputera w postaci
tekstowej (np. char* liczby = ”12 -3
64 2 78”;
)
-
Napisz
funkcję, która odfiltrowuje (usuwa) z zadanej dynamicznej
tablicy liczb rzeczywistych wszystkie elementy o wartości
ujemnej. Parametrem wejściowym tej funkcji powinien być
początkowy adres tablicy oraz jej rozmiar. Efektem końcowym
powinien być adres tablicy wynikowej (zawierającej tylko liczby
nieujemne) oraz jej rozmiar (najczęściej różny od
rozmiaru tablicy wejściowej). Uwzględnij przypadek, gdy
tablica wejściowa zawiera tylko liczby ujemne!
-
Napisz
program pozwalający przechowywać w pamięci komputera dowolnej
wielkości tablicę tekstów. Oprogramuj operacje:
wczytywania, wyświetlania, wyszukiwania i sortowania tekstów
przechowywanych w tej tablicy.