Tabele oz polja
This presentation is the property of its rightful owner.
Sponsored Links
1 / 49

Tabele oz. polja PowerPoint PPT Presentation


  • 71 Views
  • Uploaded on
  • Presentation posted in: General

Tabele oz. polja. Neja Zupan. Polje???. sum = 0.0; for (i = 0; i < 6; i++) { cin >> x; sum += x; }. sum = 0; cin >> a; sum += a; cin >> b; sum += b; cin >> c; sum += c; cin >> d; sum += d; cin >> e; sum += e; cin >> f; sum += f;. const int NE = 100; float racun[NE];.

Download Presentation

Tabele oz. polja

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Tabele oz polja

Tabele oz. polja

Neja Zupan


Polje

Polje???

sum = 0.0;

for (i = 0; i < 6; i++)

{

cin >> x;

sum += x;

}

sum = 0;

cin >> a; sum += a;

cin >> b; sum += b;

cin >> c; sum += c;

cin >> d; sum += d;

cin >> e; sum += e;

cin >> f; sum += f;


Kaj je polje

const int NE = 100;

float racun[NE];

Kaj je polje?

  • Polje je struktura pomnilniških celic istega podatkovnega tipa, ki ima določeno ime.

  • Do posameznih elementov polja (celic) pridemo preko indeksa elementa (celice).

  • Indeks je celoštevilčna vrednost in prvi element v polju ima indeks 0, naslednji za ena več...


Sintaksa

Sintaksa

  • tipime [st_elementov];

  • float tabela[6]; //deklaracija polja 6 realnih vrednosti z imenom tabela

polje je veljavno

če je index < 6

Subscript Overflow

float tabela[10];

odgovornost

programerja


Deklaracija definicija

Deklaracija/Definicija

const int N = 50;

int i, count[N];

cin >> count[i];

  • int polje [5];

  • int polje [5] = { 16, 2, 77, 40, 12071 };

INICIALIZACIJA!


Delna inicializacija

Delna inicializacija

  • int polje [5];

  • polje [5] = {0};

  • polje [5] = {16, 2, 77};

  • int polje[] = {5,6,3};


Aritmetika polj

Aritmetika polj

  • y = x; //napačno

  • y[j] = x[j]; //pravilno

    for(j = 0; j < 25; j++)

    y[j] = x[j];

    polje[0] = a;

    polje[a] = 75;

    b = polje [a+2];

    polje[i] = polje[i] + 5; (count[i] += 5;)

    polje[polje[a]] = polje[2] + 5;


Primeri

Primeri


Kaj vrne program

Kaj vrne program?

// primer polje

#include <iostream>

int polje [] = {1, 2, 7, 4, 12};

int n, result=0;

int main ()

{

for ( n=0 ; n<5 ; n++)

{

result += polje[n];

}

cout << result;

return 0;

}


Naloga

Naloga

  • Napišite kodo tako, da bo vektor_B 2x vecji kot vektor_Afloat vektor_A[3]={1.0, 0.0, 3.0}, vektor_B[3];


Naloga1

Naloga

REŠITEV

  • for (int i=0; i<3; i++)

    vektor_B[i] = 2 * vektor_A[i];


Naloga2

Naloga

Imamo maksimalno 200 pozitivnih celih števil za katere želimo izračunati povprečje in izračunati število polj, ki vsebujejo večje vrednosti od vrednosti 10% nad povprečjem.

Kako se lotiti priprave kode?


Naloga3

Naloga

REŠITEV

Najprej napišite psevdokodo:

deklaracija spremenljivk

vnos elementov v polje

izračun vsote, povprečja in 10% nad

najdi vse vrednosti iz polja

zapiši rezultat


Naloga4

Naloga

REŠITEV

Natančnejša psevdo koda:

vsota je 0.

stevilo je 0.

nad10 je 0.

vnesi prvo vrednost.

while ce je pozitivno

{

vstavi vrednost v polje z indeksim stevilo.

pristej stevilo vsoti.

povecaj stevilo.

vnesi novo vrednost.

}

izracunaj povprecje.

for stevecod 0 do stevilo-1

if array[stevec] > 1.1*povprecje

povecaj nad10;

rezultatpovprecje, steviloinnad10.


Eno in dvo dimenzionalna polja

Eno- in dvo-dimenzionalna polja

int polje [5];

int polje [3][5];

int polje [15];


Eno in dvo dimenzionalna polja1

Eno- in dvo-dimenzionalna polja


Polje kot parameter funkcije

Vrednosti polj se prensšajo izključno preko kazalcev (referenčni operator)

Znak & se NE uporablja

Z [] se le označi spremenljivko polja

Uporaba besede “const” prepreči spreminjanje parametra polja

float povprecje(int n, float A[])

{

float sum = 0.0; int i;

for (i = 0; i < n; i++)

sum += A[i];

return (sum/n);

}

Polje kot parameter funkcije

void addarray(int size, const float A[], const float B[],

float C[])

{

int i;

for (i = 0; i < size; i++)

C[i] = A[i] + B[i];

}


Polje kot parameter funkcije1

float povprecje(int n, float A[])

{

float sum = 0.0; int i;

for (i = 0; i < n; i++)

sum += A[i];

return (sum/n);

}

const int NE = 100;

float average, data[NE];

int i, m;

cout << “Vnesi število manjše od "

<< NE << "): ";

cin >> m;

for (i = 0; i < m; i++)

cin >> data[i];

average = povprecje(m, data);

Polje kot parameter funkcije


Polje kot parameter funkcije2

float one[50], two[50], three[50];

.

.

dodaj(20, one, two, three);

Polje kot parameter funkcije

void dodaj(int size, const float A[], const float B[],

float C[])

{

int i;

for (i = 0; i < size; i++)

C[i] = A[i] + B[i];

}


Naloga5

Naloga

Napišite program, ki ustvari dve polji celih števil

polje1 = {5, 10, 15}

polje2 = {2, 4, 6, 8, 10}

Program kliče funkcijo, ki ne vrne rezultata in na ekran izpiše 3 števila iz prvega polja in 4 števila iz drugega polja.


Naloga6

Naloga

REŠITEV

#include <iostream.h>

void izpisi_polje (int arg[], int length)

{

for (int n=0; n<length; n++)

cout << arg[n] << " ";

cout << "\n";

}

int main ()

{

int polje1[] = {5, 10, 15};

int polje2[] = {2, 4, 6, 8, 10};

izpisi_polje (polje1,3);

izpisi_polje (polje2,4);

return 0;

}


Nizi znakov

Nizi znakov

  • Znakovni niz je predstavljen s poljem znakov.

  • Za razliko od polja števil predstavlja niz znakov zaporedje znakov, ki se končajo z ničelnim znakom '\0' in ta označuje konec niza.

  • V C++ je zaporedje znakov shranjeno v“array of characters”


Nizi znakov1

Nizi znakov

  • Razlika med zapisoma 'A' in “A”

  • Prvi zapis pomeni znak A in drugi zapis stringa A

  • Ker se stringi končajo zničelnim znakom, "A" predstavlja dva znaka 'A' and '\0'


Nizi znakov2

Nizi znakov

char s1[10];

  • Spremenljivka s1 je lahko maksimalno dolžine 9 (zadnji znak je ničelni znak)

  • Spremenljivka “string” je inicializirana kot vsaka druga spremenljivka

    char polje_znakov1 [] = “primer";

    char polje_znakov2 [10] = “primer"

  • Shranjeno sledeče:

  • polje_znakov1 |p|r|i|m|e|r|\0|

  • polje_znakov2 |p|r|i|m|e|r|\0|?|?|?|


Klic stringa

Klic stringa

#include <iostream.h>

int main ()

{

char vpras[] = “Vnesite svoje ime: ";

char pozdrav[] = “Živjo, ";

char ime [80];

cout << vpras;

cin >> ime;

cout << pozdrav << ime << "!";

return 0;

}

polje

Stringe, ki vsebujejo predledek, ne moremo brati z operatorjem >>


Branje in klic stringa

Branje in klic stringa

#include <iostream.h>

int main ()

{

char vpras[] = “Vnesite svoje ime: ";

char pozdrav[] = “Živjo, ";

char ime [80];

cout << vpras;

cin >> ime;

cout << pozdrav << ime << "!";

return 0;

}

polje

Stringe, ki vsebujejo predledek, ne moremo brati z operatorjem >>


Branje stringa s presledki

Branje stringa s presledki

  • Stavek m znakov shrani v str

  • \n označuje konec stringa (besede, stavka...) m

  • \n ni shranjen v str

cin.get(str,m+1);


Primeri1

Primeri


Naloge

Naloge

  • Kakšen je zapis polja name v spominu za spodnje tri spremenljivke:

    • char name[11] = {'J', 'o', 'h', 'n', '\0'};

    • char name[8] = "John";

    • char name[] = "John";

  • Napišite kodo tako, da se bodo imena izpisala na zaslonchar osebe[3][16]={"Aleš", "Boris", "Tomaz"};


Naloga7

Naloga

REŠITEV

  • Rezultati so narisani

  • for (int i=0; i<3; i++)

    cout << i+1 << ". oseba je: " << osebe[i] << endl;


Uporaba vektorjev in polj

Uporaba vektorjev in polj

  • Iskanje določene vrednosti, znaka

  • razvrščanje

  • Vnos vrednosti v polje

  • Izbris vrednosti iz polja


Dinami ni pomnilnik

Dinamični pomnilnik

Neja Zupan


Dinami ni pomnilnik1

Dinamični pomnilnik

int * kazalec;

kazalec = new int [5];

kazalec = new tipkazalec = new tip [elementi]

kazalec = new (nothrow) int [5];

delete pointer;

delete [] pointer;

int * kazalec;

kazalec = new (nothrow) int [5];

if (kazalec == 0)

{ // sporočilo uporabniku-napaka. };


Tabele oz polja

Koliko števil želite vpisati? 5

Vpiši 1. številko : 75

Vpiši 2. številko : 436

Vpiši 3. številko : 1067

Vpiši 4. številko : 8

Vpiši 5. številko r : 32

Vpisal si številke: 75, 436, 1067, 8, 32,

#include <iostream.h>

int main ()

{

int i,n;

int * p;

cout << “Koliko števil želiš vpisati? ";

cin >> i;

p= new (nothrow) int[i];

if (p == 0)

cout << “Napaka: pomnilnik zaseden";

else

{

for (n=0; n<i; n++)

{

cout << “Vpiši” << n << “. številko: “;

cin >> p[n];

}

cout << “Vpisal si številke: ";

for (n=0; n<i; n++)

cout << p[n] << ", ";

delete[] p;

}

return 0;

}


Strukture in razredi

Strukture in razredi

Neja Zupan


Strukture struct

Strukture (struct)

  • Struktura omogoča združitev različnih podatkovnih tipov v enega

  • Struct – zbirka fiksnega števila komponent

  • Komponente so dostopnje preko njihovega imena

  • Komponente so lahko različnega tipa

  • Komponente strukture (struct) imenujemo člani (members)

  • Struktura je definicija in ne deklaracija (ni dodeljeno pomnilniški prostor)


Strukture struct sintaksa

Strukture (struct) - sintaksa

The general form (syntax) of a struct is:

struct typeName

{

dataType1 identifier1;

dataType2 identifier2;

// podatkovni_tip ime_parametra

dataTypen identifiern;

};


Strukture struct sintaksa1

Strukture (struct) - sintaksa

struct sadje

{

int teza;

float cena;

} jabolko, jagoda;

struct sadje

{

int teza;

float cena;

};

sadje grozdje;

sadje marelica;


Dostop do lanov struct

Dostop do članov struct

struct sadje

{

int teza;

float cena;

};

sadje grozdje;

sadje marelica;

Sintaksa:

structImeSpremenljivke.ImeClana

Pika je operator za dostop do člana strukture.

grozdje.teza;

marelica.cena;


Struct spremenljivke in funkcije

struct spremenljivke in funkcije

Spremenljivka tipa struct:

v funkcijo posredovana kot vrednost ali preko reference

Funkcija lahko vrne vrednost tipa struct


Naloga8

Naloga

  • Definirajte strukturo za opis osebe

  • Deklarirajte polje 10 oseb

  • Napišite sintakso za izpis vseh 10 oseb na ekran


Naloga9

Naloga

REŠITEV

struct Oseba

{

char ime[32];

char priimek[32];

char emso[14];

char spol;

};


Naloga10

Naloga

REŠITEV

//Deklaracija polja sestavljenih spremenljivk

Oseba ljudje[10];

//dekl. polja ljudje z 10 elementi

cout << "Vpisite ime osebe:";

cin >> ljudje[1].ime;

cout << "Vpisite priimek osebe:";

cin >> ljudje[1].priimek;

cout << "Vpisite EMSO osebe:";

cin >> ljudje[1].emso;

cout << "Vpisite spol osebe:";

cin >> ljudje[1].spol;


Naloga11

Naloga

REŠITEV

//zgled za polje

for (int i=0; i<10; i++)

{

cout << "Vpisite ime " << i+1 << ". osebe: ";

cin >> ljudje[i].ime;

cout << "Vpisite priimek " << i+1 << ". osebe: ";

cin >> ljudje[i].priimek;

...

}


Drugi podatkovni tipi

Drugi podatkovni tipi

  • typedef – sinonim za obstoječe podatkovne tipe

  • union – posamezni del pomnilnika uporablja več spremenljivk različnega podatkovnega tipa

  • anonimni union – razlika le v klicu članov podatkovnega tipa union

  • enum – spremenljivka lahko zavzame le eno vrednost izmed konstant


Razredi class

Razredi - class

  • class – tip strukture podatkov

  • ADT

  • naredi C++ objektno orientiran jezik

  • Zbirka fiksnega števila komponent

  • Komponente se imenujejo člani (members)


Sintaksa1

Sintaksa

class classIdentifier

{

classMemberList

};

Član je lahko spremenljivka ali funkcija

class CRectangle

{

int x, y;

public: void set_values (int,int);

int area (void);

} rect;


Sintaksa2

Sintaksa

  • private members: člani razreda so dosegljivi samo članom istega razreda ali “prijateljskim” razredom.

  • protected members:so dosegljivi članom istega razreda, izpeljanim in prijateljskim razredom.

  • public members:dosegljivi povsod, kjer je viden razred.

class CRectangle

{

int x, y;

public: void set_values (int,int);

int area (void);

} rect;


Primer

Primer

// primer class

#include <iostream>

using namespace std;

class CRectangle {

int x, y;

public:

void set_values (int,int);

int area () {return (x*y);}

};

void CRectangle::set_values (int a, int b) {

x = a;

y = b;

}

int main () {

CRectangle rect;

rect.set_values (3,4);

cout << "area: " << rect.area();

return 0;

}


  • Login