Changes between Version 4 and Version 5 of c-intro


Ignore:
Timestamp:
Feb 20, 2009, 11:27:35 AM (15 years ago)
Author:
msitar
Comment:

Dopolnjeno poglavje Polja, vektorji, matrike

Legend:

Unmodified
Added
Removed
Modified
  • c-intro

    v4 v5  
    246246//Generiranje elementov matrike H
    247247
    248 for(i=0; i<n; i++) 
    249 {
    250   for(j=0; j<n; j++)
     248for(i=0; i<4; i++) 
     249{
     250  for(j=0; j<4; j++)
    251251  {
    252252    if(i==j)
    253253    {
    254       H[i*n+j]=0.5;
     254      H[i*4+j]=0.5;
    255255    }
    256256    else
    257257    {
    258       H[i*n+j]=2.0;
     258      H[i*4+j]=2.0;
    259259    }
    260260  }
     
    315315{{{
    316316#!c
    317 float M[4];  //Polje, vektor ali matrika vsebuje 4 elemente z realnimi vrednostmi
     317float M[4];     //Enodimenzionalno polje - vektor oziroma matrika vsebuje 4 elemente z realnimi vrednostmi
    318318}}}
    319319
     
    339339}}}
    340340
    341 Za izpis 1. elementa bomo zapisali:
    342 
    343 {{{
    344 #!c
    345 printf("Vrednost 1. elementa znaša %f\n", M[0]);
    346 }}}
    347 
     341Za izpis 1. elementa bomo torej zapisali:
     342
     343{{{
     344#!c
     345printf("Vrednost 1. elementa znaša %f", M[0]);
     346}}}
     347
     348V pomnilniku je to polje zloženo tako, kot kaže slika 1, kjer vsak element polja zavzame 4 byte pomnilnika.
     349
     350[[Image(Pomnilnik.PNG)]]
     351
     352Slika 1: Stanje pomnilnika
     353
     354[[BR]]
     355
     356Pri tem nas verjetno zmoti to, da lahko matriko definiramo kot vektor. Takšen način definiranja matrike je dokaj pogost, pri tem pa z elementi operiramo na sledeči način (gre za enodimenzionalno polje):
     357
     358Za primer imamo matriko ''N'' velikosti 2×3 z elementi:
     359
     360{{{
     3611.0  2.0  3.0
     3624.0  5.0  6.0
     363}}}
     364
     365Sledi:
     366
     367{{{
     368#!c
     369float N[2*3]={1.0, 2.0, 3.0, 4.0, 5.0, 6.0};  //Matriko zapišemo kot vektor v eni vrstici. Pišemo lahko tudi N[6]=...
     370
     371//Primer izpisa elementa, ki se nahaja v drugi vrstici prvega stolpca. V tem primeru gre za četrti element matrike oziroma vektorja N
     372
     373printf("Element v drugi vrstici prvega stolpca je %f", N[1*3+0]);
     374
     375
     376//Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca.
     377
     378printf("Element v prvi vrstici tretjega stolpca je %f", N[0*3+2]);
     379
     380}}}
     381
     382Poljubni element matrike zapišemo v splošni obliki kot:
     383
     384{{{
     385N[indeks vrstice * število stolpcev + indeks stolpca]
     386}}}
     387
     388S tem, ko pomnožimo indeks vrstice s številom stolpcev, si lahko predstavljamo, da preskočimo vse elemente v prejšnih vrsticah. Če temu produktu prištejemo še indeks stolpca, pridemo ravno do tistega elementa, ki ga želimo.
     389
     390Enostaven primer generiranja elementov matrike nam kaže primer, ki smo ga spoznali pri kombiniranju kontrolnih stavkov.
     391
     392[[BR]]
     393
     394Poleg omenjenega načina definiranja matrik obstaja še drug način, pri katerem uporabimo večdimenzionalna polja.
     395
     396Primer definiranja matrike:
     397
     398{{{
     399#!c
     400float N[2][3]={{1.0, 2.0, 3.0},
     401               {4.0, 5.0, 6.0}};
     402
     403//Primer izpisa elementa, ki se nahaja v prvi vrstici tretjega stolpca.
     404
     405printf("Element v prvi vrstici tretjega stolpca je %f", N[0][2]);
     406}}}
     407
     408Pri tem ne smemo pozabiti, da se indeksi vrstic in stolpcev vedno začnejo z 0.
     409
     410[[BR]]
    348411
    349412== Branje datotek ==