Showing posts with label vector. Show all posts
Showing posts with label vector. Show all posts

Sunday, March 27, 2016

26) Subprogram - Sortarea prin Insertie

void sortare_insertie(float *v, int n) {
    float aux;
    int i,j;
    for(i=0;i<n;i++)
    if(v[i]<v[i-1]) {
        aux = v[i];
        j=i-1;
        while((j>=0) && (v[j]>aux)) {
            v[j+1]=v[j];
            j=j-1;
        }
        v[j+1]=aux;
    }
}

Thursday, January 7, 2016

18) Determinarea produsului scalar a doi vectori (subprogram)

Sa se scrie programul care afiseaza produsul scalar a doi vectori folosind un subprogram. Elementele vectorilor vor fi citite de la tastatura.

  

#include <stdio.h>
#include <stdlib.h>

void scalar(float a[20], float b[20], float *produs, int size) {
    int i;
    *produs=0;
    for(i=0;i<size;i++) {
        *produs += a[i]*b[i];
    }
}

int main() {
    float a[20], b[20], produs;
    int i, size;
    printf("Dimensiunea vectorilor: "); scanf("%d", &size);
    for(i=0;i<size;i++) {
        printf("a[%d] = ", i); scanf("%f", &a[i]);
         printf("b[%d] = ", i); scanf("%f", &b[i]);
    }
    scalar(a,b, &produs, size);
    printf("prod scalar: %f", produs);

}







17) Determinarea elementului maxim dintr-un vector + aparitiile sale (subprogram)

Sa se scrie programul care afiseaza elementul maxim dintr-un vector precum si pozitiile pe care apare acesta. Vectorul va fi alocat dinamic iar elementele acestuia se vor citi de la tastatura.

  

#include <stdio.h>
#include <stdlib.h>

void maxim(float *v, float *max, float *aparitii_maxim, int dim) {
    int i, k=0;
    *max = -99999;
    for(i=0;i<dim;i++) {
        if(v[i]>*max) {
            *max = v[i];
            k=1;
            aparitii_maxim[0] = i;
        }
        else if (v[i]==*max) {
            aparitii_maxim[k++] = i;
        }
    }

    printf("Elementul maxim este: %6.1f \n", *max);

    if(k>0) {
        for(i=0;i<k;i++) {
           printf("Maximul apare pe pozitiie: %6.0f \n", aparitii_maxim[i]);
        }
   }

}


int main() {
    float *v, element_maxim, aparitii[20];
    int i, dim;
    printf("Dimensiune vector: "); scanf("%d", &dim);
    v = (float*)malloc(dim*sizeof(float));
    for(i=0;i<dim;i++) {
        printf("v[%d] = ", i); scanf("%f", &v[i]);
    }

    maxim(v, &element_maxim, aparitii, dim);


}







Wednesday, January 6, 2016

13) Inmultirea unui vector cu o matrice (subprogram+alocare dinamica)

Sa se scrie programul care afiseaza rezultatul inmultirii unui vector cu o matrice folosind un subprogram. Elementele matricei si ale vectorului se vor citi de la tastatura.

  

#include <stdio.h>
#include <stdlib.h>

void produs(int a[20][20], int b[], int *c, int dim) {
    int j,k;
    for(j=0;j<dim;j++) {
        c[j] = 0;
        for(k=0;k<dim;k++) {
            c[j] += b[k]*a[k][j];
        }
    }
}


int main() {
    int a[20][20], b[20], *c;
    int i,j,n,m;
     c = (int*)malloc(m*sizeof(int));
    printf("Numar linii: "); scanf("%d", &n);
    printf("Numar coloane: "); scanf("%d", &m);

    for (i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            printf("a[%d][%d] =", i,j); scanf("%d", &a[i][j]);
        }
    }

    for(i=0;i<m;i++) {
        printf("b[%d] =", i); scanf("%d", &b[i]);
    }

    produs(a, b, c, m);
    puts("Vectorul rezultat: ");
    for(i=0;i<m;i++) {
        printf("c[%d] = %d \n",i,c[i]);
    }

    free(c);

}




12) Inmultirea unui vector cu o matrice (subprogram)

Sa se scrie programul care afiseaza rezultatul inmultirii unui vector cu o matrice folosind un subprogram. Elementele matricei si ale vectorului se vor citi de la tastatura.

  

#include <stdio.h>
#include <stdlib.h>

void produs(int a[20][20], int b[20], int dim, int c[20]) {
    int j,k;
    for(j=0;j<dim;j++) {
        c[j] = 0;
            for(k=0;k<dim;k++) {
                c[j] = c[j]+b[k]*a[k][j];
            }
    }
}

int main() {
    int a[20][20], b[20], c[20];
    int i,j,n,m,k;
    printf("Rows: "); scanf("%d", &n);
    printf("Columns: "); scanf("%d", &m);
    for(i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            printf("a[%d][%d] = ", i, j); scanf("%d", &a[i][j]);
        }
    }
    for(i=0;i<m;i++) {
        printf("b[%d] = ", i); scanf("%d", &b[i]);
    }
    produs(a, b, m, c);
    printf("\n");   

    put("Vectorul rezultat este: \n");
    for(i=0;i<m;i++) {
        printf("c[%d] = %d \n", i, c[i]);
    }

}


11) Inmultirea unui vector cu o matrice

Sa se scrie programul care afiseaza rezultatul inmultirii unui vector cu o matrice. Elementele matricei si ale vectorului se vor citi de la tastatura.

#include <stdio.h>
#include <stdlib.h>


int main() {
    int a[20][20], b[20], c[20];
    int i, j, k, n, m; //n - linii, m - coloane
    printf("Numarul de linii: "); scanf("%d", &n);
    printf("Numarul de coloane: "); scanf("%d", &m);
    for(i=0;i<n;i++) {
        for(j=0;j<m;j++) {
            printf("a[%d][%d] = ", i, j); scanf("%d", &a[i][j]);
        }
    }

    for(k=0;k<m;k++) {
        printf("b[%d] = ", k); scanf("%d", &b[k]);
    }

    for(j=0;j<m;j++) {
        c[j] = 0;
        for(k=0;k<m;k++) {
            c[j] += b[k]*a[k][j];
        }
    }



    puts("Vectorul rezultat este: ");
    for(k=0;k<m;k++) {
        printf("c[%d] = %d \n", k, c[k]);
    }



}