TABLICE w c++
Tablicą nazywamy ciąg ustalonej liczby elementów tego samego typu, do których odwołujemy się za pośrednictwem wspólnej nazwy. Dostęp do konkretnego elementu tablicy uzyskuje się za pomocą nazwy i indeksów określających pozycję, jaka element zajmuje w tablicy. Nazwa tablicy jest jednocześnie adresem jej zerowego elementu.
Tablice jednowymiarowe:
typ_elemetntów nazwa_tablicy[liczba_elementów];
np. int tab[8];
Wartosc1 |
Wartosc2 |
Wartosc3 |
Wartosc4 |
Wartosc5 |
Wartosc6 |
Wartosc7 |
Wartosc8 |
tab[0] tab[1] tab[2] tab[3] tab[4] tab[5] tab[6] tab[7]
Kolejne elementy tablicy identyfikowane są jako:tab[0], tab[1], …, tab[7].
Pierwszy element ma indeks o wartości 0 dlatego element ostatni ma wartość liczba_elementów-1.
Sposoby deklarowania tablicy:
przypisanie konkretnych wartości w momencie deklaracji tablicy:
int tab[]={2,4,5,6,8,4,6},
wówczas tablica tab ma postać:
2 |
4 |
5 |
6 |
8 |
4 |
6 |
wypełnianie tablicy w programie:
int tab[6];
for (int i = 0; i<6; i++)
{
cout<<”Podaj wartość”< <i<<”elementu tablicy”<<endl;
cin>>tab[i];
}
Tablice wielowymiarowe:
typ_elemetntów nazwa_tablicy[liczba_wierszy][liczba_kolumn];
Tablica dwuwymiarowa ma postać macierzy.
Np.
int Tab[4][4] - ma postać
Tab[0][0] |
Tab[0][1] |
Tab[0][2] |
Tab[0][3] |
Tab[1][0] |
Tab[1][1] |
Tab[1][2] |
Tab[1][3] |
Tab[2][0] |
Tab[2][1] |
Tab[2][2] |
Tab[2][3] |
Tab[3][0] |
Tab[3][1] |
Tab[3][2] |
Tab[3][3] |
Sposoby deklarowania tablic dwuwymiarowych:
Np.
int liczby[2][3]={{2,3,4},{5,6,7});
lub
int tab[2][3];
for( int i=0; i<2; i++)
{
for ( int j=0; j<3; j++)
{
cout<<”podaj wartość elementu o indeksach [”<<i<<”][”<<j<<”]”<<endl;
cin>>tab[i][j];
}
}
Przeszukiwanie liniowe tablicy jednowymiarowej:
Przeszukiwanie tablicy element po elemencie nazywamy przeszukiwaniem liniowym tablicy.
Np.;
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
int tab[8]; //deklaracja tablicy
int szukany; //deklaracja zmiennej szukana
int ilosc; //deklaracja zmiennej zliczajacej ilość wystąpień szukanej liczby
ilosc=0; //ustawienie wartosci początkowej licznika
cout<<"podaj element, ktorego szukasz w tablicy"<<endl;
cin>>szukany;
cout<<"teraz wypełnij tablice"<<endl;
for( int i=0; i<8; i++)
{
cout<<"podaj wartość elementu o indeksie"<<i<<endl;
cin>>tab[i];
}
cout<<"zaczynamy przeszukiwanie"<<endl;
for( int i=0;i<8;i++)
{
if (tab[i]= =szukany)
ilosc++;
}
cout<<"szukany element zostal znaleziony:"<<ilosc<<"razy w tablicy"<<endl;
system("PAUSE");
return 0;
}
Poszukiwanie elementu maksymalnego (minimalnego ) w tablicy:
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
int tab[8];
int max;
for( int i=0; i<8; i++)
{
cout<<"podaj wartość elementu o indeksie"<<i<<endl;
cin>>tab[i];
}
max=tab[0]; //przyjmujemy ze najwiekszy element jest pierwszym elementem tablicy for( int i=0; i<8; i++)
{
if(tab[i]>max) //jezeli element jest wiekszy od maksymalnego wowczas staje
//się on maksymalnym elementem
max=tab[i];
}
cout<<"maksymalny element to;"<<max<<endl;
system("PAUSE");
return 0;
}
Tablice tekstowe:
char nazwa_tablicy[ilość_elementow];
Podobnie jak w przypadku tablicy przechowującej liczby możemy zadeklarować i równocześnie zainicjować tablicę, np.
char imie[]=”Karolina”;
Przykład:
int main(int argc, char *argv[])
{
char imie[16];
cout<<"podaj imie"<<endl;
cin>>imie;
}
Każda tablica tekstowa ma ilość_elementów+1, a ostatni element tablicy to znak końca tekstu
Za pomocą wyrażenia cin>>tekst, gdzie tekst jest nazwa tablicy znaków, można pobrać tekst tylko do pierwszej spacji. Pozostałe znaki będą ignorowane podczas wyświetlenia.
Aby pobrać znaki wraz ze znakami białymi - spacje, tabulatory itp., należy używać cin.getline(tekst, ilość_znakow)
Gdzie tekst to nazwa tablicy, ilość_znakow - to ilość znaków, która zostanie wpisana do tablicy.
np
int main(int argc, char *argv[])
{
cout<<"podaj imie"<<endl;
cin.getline(imie, 7);
cout<<imie;
}
Gdy wprowadzimy: s lo nko to wyświetlone zostanie :s lo n
ZADANIA:
Utwórz program, który
tworzy tablicę złożoną z 6 liczb całkowitych. Zainicjuj tablicę dowolnymi wartościami, oblicz sumę i średnią elementów tablicy.
wczytuje do jednowymiarowej tablicy ( o rozmiarze nmax=100) n<=nmax liczb (liczbę n podaje użytkownik). Następnie prosi użytkownika o podanie jakiejś liczby i sprawdza czy jest ona w tablicy. Jeśli tak wyświetlony zostaje komunikat”JEST”, a jeśli nie - „NIE MA”.
wczytuje do jednowymiarowej tablicy (o rozmiarze nmax=100) n<=nmax liczb oraz drukuje na ekranie najmniejszą oraz największą liczbę z tablicy.
wczytuje do jednowymiarowej tablicy (o rozmiarze nmax=100) n<=nmax liczb, następnie podnosi do kwadratu każdy z elementów.
wczytuje do jednowymiarowej tablicy (o rozmiarze nmax=100) n<=nmax liczb i do tych, które są parzyste dodaje 10;
wczytuje do jednowymiarowej tablicy (o rozmiarze nmax=100) n<=nmax liczb, a następnie wyświetla wszystkie liczby, które są mniejsze od średniej arytmetycznej wszystkich elementów tablicy.
wczytuje stopień (nie większy niż 50) i współczynniki dwóch wielomianów, a następnie wyświetla stopień oraz współczynniki wielomianu będącego ich sumą.
wyświetla tabliczkę mnożenia 10x10 za pomocą pętli.
wczytuje do tablicy 10 liczb całkowitych, a następnie zlicza ile było elementów dodatnich a ile ujemnych w tej tablicy.
wczytuje do tablicy 10 liczb całkowitych. Użytkownik wprowadza z klawiatury dowolną liczbę i sprawdza czy jest ona w tablicy. Jeśli jest to wyświetla element poprzedzający go i następny po nim w tablicy.
wczytuje liczbę całkowitą n oraz n liczb całkowitych. Liczby powinny być wczytane do tablicy. Program znajduje ilość oraz sumę elementów spełniających warunek: wartość bezwzględna elementu jest większa niż średnia arytmetyczna elementu stojącego bezpośrednio przed nim i za nim.
abs( x )=|x|
wczytujący do tablicy 10-cio elementowej losowe liczby z przedziału <1;100>. Program znajduje najmniejszą i największą liczbę w tablicy oraz jej pozycję.
Losowe wybieranie liczby z <0;9> rand()%10
Losowe wybieranie liczby z <1;10> rand()%10+1
Jeśli dodatkowo użyjemy srand ( time(NULL) )wówczas za każdym uruchomieniem programu tablica wypełni się nowymi wartościami.