Vectors

download Vectors

of 12

Transcript of Vectors

  • Vectors i Matrius. ObjectiusAl acabar serem capaos de:

    Manipular una colecci de valors de dades utilitzant un vector.

    Declarar i usar un vector de tipus primitius de dades al escriure un programa.

    Conixer com una matriu simplementa com un vector de vectors.

  • Temes bsics de vectors

    Suposem que necessita tractar fins a 300 elements int dins dun programa per contenir certes dades. Utilitzarem 300 variables?

    Suposem que es necessita processar les temperatures de cada dia dun perode de 12 mesos. Usarem 365 variables?

    Podriem, per no hi ha una millor manera?

    Un vector s una colecci de valors de dades amb el mateix tipus.

    Si un programa ha de tractar 100 enters, 365 nmeros reals, etc. usarem vectors.

  • Vectors de dades de tipus primitiusDeclaraci de vectors

    [DIMENSIO];

    Exemple

    double rainfall[12];

  • Accs als elements individuals (components)Als components (elements individuals) dun vector hi accedim amb una expressi amb ndexs.

    double rainfall[12];

    rainfall0 1 2 3 4 5 6 7 8 9 10 11

    rainfall[2]Aquesta expressi fa referncia a lelement a la posici #3 (2+1)

    Aquesta expressi fa referncia a lelement a la posici #3 (2+1)

    Lndex de la primeraposici dun vector s 0.

  • Procs de vectors 1

    double rainfall[12];int i;

    double annualAverage, sum = 0.0;

    for (i = 0; i < 12; i++) {

    scanf(" %le ", &rainfall[i] );sum += rainfall[i];

    }

    annualAverage = sum / 12;

  • Procs de vectors 3Calcular el promig de pluja caiguda cada trimestre.

    /*suposem rainfall declarada i initialitzada correctament */

    double quarterAverage[4];int i, j;for (i = 0; i < 4; i++) {

    sum = 0;for (j = 0; j < 3; j++) {

    /*calcular la suma trimestral */sum += rainfall[3*i + j];

    }quarterAverage[i] = sum / 3.0; /*promig del trimestre(i+1)*/

    }

  • Inicialitzaci de vectorsCom en les altres tipus de dades, es pot declarar i inicialitzar un vector al mateix temps.

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

    double samplingData[] = { 2.443, 8.99, 12.3, 45.009, 18.2, 9.00, 3.123, 22.084, 18.08 };

    La longitud del vector es fixa amb el nombre delements de la llista.

    numbersamplingData

    4 9

  • Processat d'un vectorTrobar el promig dels homes majors de 18 anys. float sum = 0, averageAge;int count = 0, i;

    for ( i = 0; i < n; i++) {if ( age[i] >= 18 ) {sum += age[i];

    count++;}

    }if ( count != 0 ) {

    averageAge = sum / count;} else {

    printf("No elements\n");}

  • Processat d'un vector - 2Trobar les persones ms jove i ms vella.

    int minIdx = 0, maxIdx = 0, i; /*ndex de la persona ms jove i ms vella */

    for (i = 1; i < n; i++) {

    if ( age[i] < age[minIdx] ) { minIdx = i; /* hem trobat una persona ms jove */

    }else if (age[i] > age[maxIdx] ) {

    maxIdx = i; /* hem trobat una persona ms vella */}

    }/* age[minIdx] s la ms jove i age[maxIdx] s la ms vella */

  • Matrius (vectors) bi-dimensionalsLes matrius, vectors bi-dimensionals sn molt tils per a representar informaci de tipus tabla.

  • Declarar i crear matriusDeclaraci

    [][];

    Exemple double payScaleTable[4][5];

    3

    2

    1

    0

    43210payScaleTable

  • Exemple de procs duna matriuTrobar el promig de cada fila.

    double average[] = { 0.0, 0.0, 0.0, 0.0 };

    for ( i = 0; i < 4; i++) {

    for ( j = 0; j < 5; j++) {

    average[i] += payScaleTable[i][j];}

    average[i] = average[i] / 5;}

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12