1. Napisati program na C-u kojim se od dva celobrojna niza A i B, dimenzija M i
N, respektivno, formira niz C tako da se niz C prvo popunjava elementima niza B ija je vrednost vea od vrednosti poslednjeg elementa niza A, a zatim se popunjava elementima niza A koji su deljivi brojem 3. Dimenzije M i N kao i elemente nizova A i B uneti sa tstature. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z1() { printf("Unesite velicinu prvog niza m:\n"); fflush(stdout); int m = 0; scanf("%d",&m); printf("Unesite velicinu drugog niza n:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int* nizA = malloc(m*sizeof(int)); int* nizB = malloc(n*sizeof(int)); int i,j, maxa; maxa = 0; printf("Unos niza A: \n"); fflush(stdout); for(i=0;i<m;i++) { scanf("%d",&nizA[i]); if (maxa < nizA[i]) maxa=nizA[i]; } printf("Unos niza B: \n"); fflush(stdout); for(i=0;i<n;i++) { scanf("%d",&nizB[i]); }; j=0; int k; k=n+m; int* nizC = malloc(k*sizeof(int)); for(i=0;i<n;i++) { if (nizB[i]>maxa) { nizC[j]= nizB[i]; j++; } } for(i=0;i<m;i++) { if (nizA[i]%3==0) { nizC[j]= nizA[i]; j++; } } // j sada predstavlja velicinu niza c printf("Niz C: \n"); for(i=0;i<j;i++) { printf("%d ", nizC[i]); } return 0; } 2. Napisati program na C-u kojim se od stringova A i B, koji se inicijalizuju p ri deklaraciji i koji predstavljaju vae ime odnosno prezime, formira string C koji se sastoji od vaeg imena i prezimena, zajedno, a kao poveznik meu njima se koristi donja crtica. Npr. za studenta Petar Petrovic, string C treba da izgleda: Petar_Petrovic. Na ekranu tampati stringove A, B i C. Resenje: #include <stdio.h> #include <string.h> int kl2_pon_z2() { char ime[20]; strcpy(ime, "Petar"); char prezime[20]; strcpy(prezime, "Petrovic"); char c[50]; strcpy(c,ime); strcat(c, "_"); strcat(c,prezime); printf("Ime: %s\n", ime); printf("Prezime: %s\n", prezime); printf("Puno ime i prezime: %s\n", c); return 0; } 3. Napisati program na programskom jeziku C kojim se u celobrojni niz A iji su el ementi sortirani u opadajui redosled, umee 5 novih brojeva. Obezbediti da posle um etanja svakog broja niz ostane sortiran. Rezultujui niz tampati na ekranu. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z3() { printf("Unesite velicinu niza A:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int* nizA = malloc((n+5)*sizeof(int)); int i, temp, j, k; printf("Unos niza A: \n"); fflush(stdout); // elemente niza A sotiracemo prilikom unosa, // tako sto cemo svaki uneti element prvo upisati u // privremenu promenjivu for(i=0;i<n;i++) { scanf("%d",&temp); j = 0; for(k=0;k<i;k++) // pronaci cemo poziciju prvog elemnta niza koji je manji od te mp (j) { if(temp < nizA[j]) j++;}; if (i == 0) nizA[j] = temp; else{ for (k=i; k>j; k--) nizA[k]=nizA[k-1]; // pomeraj u desno svih elemenata pocev o d j }; nizA[j] = temp; // unos novog elementa niza }; printf("Trenutno stanje niza A: \n"); for (i=0; i<n; i++) printf("%d ",nizA[i]); printf("\n"); printf("Unesite 5 novih elemenata niza A:\n"); fflush(stdout); for (i=0; i<5; i++) { // postuipak je slican kao prolikom predhodnog unosa scanf("%d",&temp); j = 0; for(k=0;k<n+i;k++) { if(temp < nizA[j]) j++;}; for (k=n+i; k>j; k--) nizA[k]=nizA[k-1]; nizA[j] = temp; }; printf("Stanje niza A posle ubacivanja novih elemenata: \n"); for (i=0; i<n+5; i++) printf("%d ",nizA[i]); return 0; } 4. Napisati program na C-u kojim se od elemenata celobrojne matrice A, koji se n alaze ispod glavne i desno od sporedne dijagonale, formira celobrojni niz B. Red matrice A uneti sa tastature, a na ekran tampati matricu A i dobijeni niz B. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z4() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int a[n][n]; int i,j;
printf("Unesite elemente matrice:\n"); fflush(stdout);
for(j=n-1; j>0; j--) for(i=n-j; i<n; i++) if (j>i) { b[k]= a[i][j]; // sa desne strane sporedne dijagonale k++; // ali ne i ispod glavne, da ne bismo unosili } // neke elemente dva puta printf("Ispis matrice:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%d ",a[i][j]); printf("\n"); }
return 0; } 5. Napisati program na C-u kojim se generie i tampa matrica A reda N (maksimalna v rednost za N je 7) na sledei nain: Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z5() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); char a[n][n]; int i,j; char c = 'a';
return 0; } DRUGI KOLOKVIJUM - PONOVO1 ***************** je jako slican onom gore ********************* DRUGI KOLOKVIJUM: 1. Napisati program na C-u kojim se vri mnoenje elemenata dva niza istih dimenzija , tako da se sabira prvi element prvog niza sa poslednjim elementom drugog niza, drugi element prvog niza sa pretposlednjim elementom drugog niza, itd. Elementi nizova su realni brojevi. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_z1() { int n,i; double p,*a,*b;
return 0; } 2. Napisati program na C-u kojim se od stringa A, koji se unosi sa tastature i koji se sastoji od malih i velikih slova engleskof alfabeta , formiraju dva stri nga B i C koji se sastoje od malih, odnosno, velikih slova stringa A, respektivn o. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_z2() { char a[100],b[100],c[100]; // u ovom slucaju je bolje definisati nizove na ovaj nacin int i,k=0,l=0; printf("Unesi string: "); fflush(stdout); gets(a); for (i=0;i<strlen(a);i++) { if (a[i] >= 0x41 && a[i] <= 0x5A) c[k++] = a[i]; // ubacivanje u niz c velik ih slova if (a[i] >= 0x61 && a[i] <= 0x7A) b[l++] = a[i]; // ubacivanje u niz b malih slova } c[k]='\0';b[l]='\0'; // dodavanje null karaktera na kraj stringova
printf("Niz koji se sastoji smo od malih slova: \n"); puts(b); printf("Niz koji se sastoji smo od velikih slova: \n"); puts(c);
return 0; } 3. Na programskom jeziku C napisati program kojim se na osnovu skupova A, B i C, formira skup D=(B unija C)\A, pri emu su A, B i C celobrojni skupovi, dimenzija N. tampati skupove A, B, C i D. Resenje: #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 4 int uskupu(int *a,int n,int x) // provera da li se element x nalazi u nizu a { int i; for(i=0;i<n;i++) if(a[i]==x) return 1; return 0; } int main() { int n,i,k=0; int *a,*b,*c,*d; printf("Unesi broj elemenata skupova: "); fflush(stdout); scanf("%d",&n); a = malloc(n*sizeof(int)); b = malloc(n*sizeof(int)); c = malloc(n*sizeof(int)); d = malloc(2*n*sizeof(int));
printf("Uneste elemente skup a: "); fflush(stdout); for(i=0;i<n;i++) scanf("%d",&a[i]);
printf("Uneste elemente skup b: "); fflush(stdout); for(i=0;i<n;i++) scanf("%d",&b[i]);
printf("Unesite elemente skupa c: "); fflush(stdout); for(i=0;i<n;i++) scanf("%d",&c[i]);
for(i=0;i<n;i++) if(!uskupu(a,n,b[i])) d[k++]=b[i]; for(i=0;i<n;i++) if(!uskupu(b,n,c[i])) d[k++]=c[i]; d = realloc(d,k*sizeof(int));
printf("Sledeci element se nalaze u skupovima b i c ali ne i u skupu a:\n"); for(i=0;i<k;i++) printf("%d ",d[i]);
return 0; } 4. Napisati program na C-u kojim se izraunava suma elemenata matrice A, NxN, izna d glavne dijagonale i proizvod elemenata matrice A, desno od sporedne dijagonale . Elemente matrice A inicijalizovati prilikom deklaracije matrice. Resenje: #include<stdio.h> #include<stdlib.h> int kl2_z4() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int a[n][n]; int i,j,s=0,p=1; printf("Unesi matricu: \n"); fflush(stdout); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) for(j=0;j<n;j++) { if(i<j) s+=a[i][j]; // suma elemenata ispod glavne dijagonale if(i+j>=n) p*=a[i][j]; // proizvod elemenata desno od sporedne dijagonale } printf("Suma elemenata iznad glavne dijagonale je: %d\n",s); printf("Proizvod elemenata desno od sporedne dijagonale je: %d\n",p); return 0; } 5. Napisati program na C-u kojim se generie i tampa matrica A reda N na sledei nain: Resenje: #include<stdio.h> #include<stdlib.h> int kl2_z5() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int a[n][n],i,j,k=1;
for(i=0;i<n;i++) // ispis matrice { for(j=0;j<n;j++) printf("%d ",a[i][j]); printf("\n"); } return 0; } DRUGI KOLOKVIJUM - PONOVO 1. Napisati program na C-u kojim se od dva celobrojna niza A i B, dimenzija M i N, respektivno, formira niz C tako da se niz C prvo popunjava elementima niza B ija je vrednost vea od vrednosti poslednjeg elementa niza A, a zatim se popunjava elementima niza A koji su deljivi brojem 3. Dimenzije M i N kao i elemente nizova A i B uneti sa tstature. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z1() { printf("Unesite velicinu prvog niza m:\n"); fflush(stdout); int m = 0; scanf("%d",&m); printf("Unesite velicinu drugog niza n:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int* nizA = malloc(m*sizeof(int)); int* nizB = malloc(n*sizeof(int)); int i,j, maxa; maxa = 0; printf("Unos niza A: \n"); fflush(stdout); for(i=0;i<m;i++) { scanf("%d",&nizA[i]); if (maxa < nizA[i]) maxa=nizA[i]; } printf("Unos niza B: \n"); fflush(stdout); for(i=0;i<n;i++) { scanf("%d",&nizB[i]); }; j=0; int k; k=n+m; int* nizC = malloc(k*sizeof(int)); for(i=0;i<n;i++) { if (nizB[i]>maxa) { nizC[j]= nizB[i]; j++; } } for(i=0;i<m;i++) { if (nizA[i]%3==0) { nizC[j]= nizA[i]; j++; } } // j sada predstavlja velicinu niza c printf("Niz C: \n"); for(i=0;i<j;i++) { printf("%d ", nizC[i]); } return 0; } 2. Napisati program na C-u kojim se od stringova A i B, koji se inicijalizuju p ri deklaraciji i koji predstavljaju vae ime odnosno prezime, formira string C koji se sastoji od vaeg imena i prezimena, zajedno, a kao poveznik meu njima se koristi donja crtica. Npr. za studenta Petar Petrovic, string C treba da izgleda: Petar_Petrovic. Na ekranu tampati stringove A, B i C. Resenje: #include <stdio.h> #include <string.h> int kl2_pon_z2() { char ime[20]; strcpy(ime, "Petar"); char prezime[20]; strcpy(prezime, "Petrovic"); char c[50]; strcpy(c,ime); strcat(c, "_"); strcat(c,prezime); printf("Ime: %s\n", ime); printf("Prezime: %s\n", prezime); printf("Puno ime i prezime: %s\n", c); return 0; } 3. Napisati program na programskom jeziku C kojim se u celobrojni niz A iji su el ementi sortirani u opadajui redosled, umee 5 novih brojeva. Obezbediti da posle um etanja svakog broja niz ostane sortiran. Rezultujui niz tampati na ekranu. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z3() { printf("Unesite velicinu niza A:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int* nizA = malloc((n+5)*sizeof(int)); int i, temp, j, k; printf("Unos niza A: \n"); fflush(stdout); // elemente niza A sotiracemo prilikom unosa, // tako sto cemo svaki uneti element prvo upisati u // privremenu promenjivu for(i=0;i<n;i++) { scanf("%d",&temp); j = 0; for(k=0;k<i;k++) // pronaci cemo poziciju prvog elemnta niza koji je manji od te mp (j) { if(temp < nizA[j]) j++;}; if (i == 0) nizA[j] = temp; else{ for (k=i; k>j; k--) nizA[k]=nizA[k-1]; // pomeraj u desno svih elemenata pocev o d j }; nizA[j] = temp; // unos novog elementa niza }; printf("Trenutno stanje niza A: \n"); for (i=0; i<n; i++) printf("%d ",nizA[i]); printf("\n"); printf("Unesite 5 novih elemenata niza A:\n"); fflush(stdout); for (i=0; i<5; i++) { // postuipak je slican kao prolikom predhodnog unosa scanf("%d",&temp); j = 0; for(k=0;k<n+i;k++) { if(temp < nizA[j]) j++;}; for (k=n+i; k>j; k--) nizA[k]=nizA[k-1]; nizA[j] = temp; }; printf("Stanje niza A posle ubacivanja novih elemenata: \n"); for (i=0; i<n+5; i++) printf("%d ",nizA[i]); return 0; } 4. Napisati program na C-u kojim se od elemenata celobrojne matrice A, koji se n alaze ispod glavne i desno od sporedne dijagonale, formira celobrojni niz B. Red matrice A uneti sa tastature, a na ekran tampati matricu A i dobijeni niz B. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z4() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int a[n][n]; int i,j;
printf("Unesite elemente matrice:\n"); fflush(stdout);
for(j=n-1; j>0; j--) for(i=n-j; i<n; i++) if (j>i) { b[k]= a[i][j]; // sa desne strane sporedne dijagonale k++; // ali ne i ispod glavne, da ne bismo unosili } // neke elemente dva puta printf("Ispis matrice:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%d ",a[i][j]); printf("\n"); }
return 0; } 5. Napisati program na C-u kojim se generie i tampa matrica A reda N (maksimalna v rednost za N je 7) na sledei nain: Resenje: #include <stdio.h> #include <stdlib.h> int kl2_pon_z5() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); char a[n][n]; int i,j; char c = 'a';
return 0; } DRUGI KOLOKVIJUM - PONOVO1 ***************** je jako slican onom gore ********************* DRUGI KOLOKVIJUM: 1. Napisati program na C-u kojim se vri mnoenje elemenata dva niza istih dimenzija , tako da se sabira prvi element prvog niza sa poslednjim elementom drugog niza, drugi element prvog niza sa pretposlednjim elementom drugog niza, itd. Elementi nizova su realni brojevi. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_z1() { int n,i; double p,*a,*b;
return 0; } 2. Napisati program na C-u kojim se od stringa A, koji se unosi sa tastature i koji se sastoji od malih i velikih slova engleskof alfabeta , formiraju dva stri nga B i C koji se sastoje od malih, odnosno, velikih slova stringa A, respektivn o. Resenje: #include <stdio.h> #include <stdlib.h> int kl2_z2() { char a[100],b[100],c[100]; // u ovom slucaju je bolje definisati nizove na ovaj nacin int i,k=0,l=0; printf("Unesi string: "); fflush(stdout); gets(a); for (i=0;i<strlen(a);i++) { if (a[i] >= 0x41 && a[i] <= 0x5A) c[k++] = a[i]; // ubacivanje u niz c velik ih slova if (a[i] >= 0x61 && a[i] <= 0x7A) b[l++] = a[i]; // ubacivanje u niz b malih slova } c[k]='\0';b[l]='\0'; // dodavanje null karaktera na kraj stringova
printf("Niz koji se sastoji smo od malih slova: \n"); puts(b); printf("Niz koji se sastoji smo od velikih slova: \n"); puts(c);
return 0; } 3. Na programskom jeziku C napisati program kojim se na osnovu skupova A, B i C, formira skup D=(B unija C)\A, pri emu su A, B i C celobrojni skupovi, dimenzija N. tampati skupove A, B, C i D. Resenje: #include<stdio.h> #include<stdlib.h> #include<string.h> #define N 4 int uskupu(int *a,int n,int x) // provera da li se element x nalazi u nizu a { int i; for(i=0;i<n;i++) if(a[i]==x) return 1; return 0; } int main() { int n,i,k=0; int *a,*b,*c,*d; printf("Unesi broj elemenata skupova: "); fflush(stdout); scanf("%d",&n); a = malloc(n*sizeof(int)); b = malloc(n*sizeof(int)); c = malloc(n*sizeof(int)); d = malloc(2*n*sizeof(int));
printf("Uneste elemente skup a: "); fflush(stdout); for(i=0;i<n;i++) scanf("%d",&a[i]);
printf("Uneste elemente skup b: "); fflush(stdout); for(i=0;i<n;i++) scanf("%d",&b[i]);
printf("Unesite elemente skupa c: "); fflush(stdout); for(i=0;i<n;i++) scanf("%d",&c[i]);
for(i=0;i<n;i++) if(!uskupu(a,n,b[i])) d[k++]=b[i]; for(i=0;i<n;i++) if(!uskupu(b,n,c[i])) d[k++]=c[i]; d = realloc(d,k*sizeof(int));
printf("Sledeci element se nalaze u skupovima b i c ali ne i u skupu a:\n"); for(i=0;i<k;i++) printf("%d ",d[i]);
return 0; } 4. Napisati program na C-u kojim se izraunava suma elemenata matrice A, NxN, izna d glavne dijagonale i proizvod elemenata matrice A, desno od sporedne dijagonale . Elemente matrice A inicijalizovati prilikom deklaracije matrice. Resenje: #include<stdio.h> #include<stdlib.h> int kl2_z4() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int a[n][n]; int i,j,s=0,p=1; printf("Unesi matricu: \n"); fflush(stdout); for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&a[i][j]); for(i=0;i<n;i++) for(j=0;j<n;j++) { if(i<j) s+=a[i][j]; // suma elemenata ispod glavne dijagonale if(i+j>=n) p*=a[i][j]; // proizvod elemenata desno od sporedne dijagonale } printf("Suma elemenata iznad glavne dijagonale je: %d\n",s); printf("Proizvod elemenata desno od sporedne dijagonale je: %d\n",p); return 0; } 5. Napisati program na C-u kojim se generie i tampa matrica A reda N na sledei nain: Resenje: #include<stdio.h> #include<stdlib.h> int kl2_z5() { printf("Unesite dimenziju matrice:\n"); fflush(stdout); int n = 0; scanf("%d",&n); int a[n][n],i,j,k=1;