TABLICE C++
Inicjacja tablicy jednowymiarowej typ_komórek_tablicy nazwa_tablicy [ ilość elementów tablicy ] ; np.: int tablica[1000]; czyli tablica, która może przechowywać tysiąc elementów typu całkowitego, np.: char znaki[1001]; czyli tablica, która może przechowywać 1000 znaków + znak końca tablicy.
Nadanie wartości początkowych tablicy Operację tą można zrobić tylko przy deklaracji tablicy (przy tworzeniu tablicy). Operację nadania wartości tablicy przedstawię na przykładzie pięcio-elementowej tablicy liczb całkowitych: int tab[5] = {1, 3, 90, 100000, 9};
Odwoływanie się do komórek tablicy Najważniejszą regułą jest to, że komórki numerujemy od zera. Numery te nazywamy indeksami tablicy. Oznacza to, że jeśli stworzyliśmy tablicę 10-elementową, to numer pierwszej komórki jest równy zero, drugiej jeden,..., no i ostatniej dziewięć:
Odwołujemy się do komórek tablicy podając jej indeks w nawiasie kwadratowym, np:
Zadanie 1 Napisz program, który nada następujące wartości początkowe tablicy 5-elementowej: 1, 2, 5, 0, 0, a następnie wyświetli najpierw wartości parzyste tej tablicy, a następnie nieparzyste.
Wprowadzanie ciągów znaków #include<iostream> using namespace std; int main() {char tablica[100]; cout<<"podaj imie i nazwisko: "; cin>>tablica; cout<<"twoje dane osobowe: "<<tablica<<endl; system("pause"); return 0;}
Wyjaśnienie Podobnie jak przy wypisywaniu tekstu, do wprowadzania posługujemy się tylko nazwą tablicy. W tym miejscu należy zwrócić uwagę na działanie obiektu "cin". Dane zostaną wczytane do napotkania pierwszej spacji lub znaku końca linii. Oznacza to, że tym sposobem możemy wczytać tylko jeden wyraz.
Metoda getline() Drugim sposobem, jaki można tu zastosować jest wykorzystanie metody getline() obiektu cin. Funkcja ta jest ukierunkowana na wczytywanie całych wierszy i odrzuceniem znaku końca linii. Konstrukcja wygląda następująco: cin.getline(tab, bufor);
#include<iostream> using namespace std; int main() { char tablica[100]; cout<<"podaj imie i nazwisko: "; cin.getline(tablica,100); cout<<"twoje dane: "<<tablica<<endl; system("pause"); return 0;}
Zadanie 2 Napisz program, który pobierze ze standardowego wejścia trzy zdania oraz wyświetli je w odwrotnej kolejności, zamieniając wszystkie małe litery na duże.
Rozwiązanie Warto zauważyć, że numery ASCII małych liter mieszczą się w przedziale [97; 122]. Różnica między małymi i dużymi literami wynosi 32. Będziemy sprawdzać każdy znak, czy jest to mała litera. Gdy będzie spełniony warunek przesuniemy ją o 32 numery w dół aby przeskoczyć na dużą literę. Do przechowania zdań użyjemy tablicy dwuwymiarowej.
Tablice znaków - przydatne funkcje strcpy - kopiowanie jednej tablicy do drugiej strncpy - kopiowanie części jednej tablicy do drugiej strlen - zwracanie ilości znaków tablicy strcmp - porównywanie tablic
strncpy char *strncpy (char* dotablicy, const char* ztablicy, int n); Funkcja kopiuje n znaków z tablicy ztablicy do tablicy dotablicy i zwraca wskaźnik na pierwszy element tablicy dotablicy. Biblioteka: <cstring>
Zadanie 3 Napisz program, który skopiuje 5 znaków z tablicy ztablicy do tablicydotablicy i wyświetli zawartość obu tablic.
strlen - funkcja zwraca ilość znaków int strlen (char *tablica_znakow);
Zadanie 4 Napisz program, który określi, która tablica posiada więcej znaków.
strcmp - porównywanie ciągów znaków int strcmp(const char *tablica1, const char *tablica2);
Zadnie 5 Napisz program, który posortuje leksykograficznie (alfabetycznie) dwa wyrazy.
strstr(ztablicy, szukanyciag) Funkcja zwraca wskaźnik na pierwsze wystąpienie ciągu szukanyciag. char *strstr (const char * ciag_znakow, const char * szukany_spójny_podciag );
Zadanie 6 Napisz program, który usunie z ciągu "Ala ma kota ma" wszystko co poprzedza ciąg "ma".