17
NIZOVI (ispitni zadaci) /*Napisati program koji formira niz brojeva NIZ[i], potom od tog niza formira dva podniza: podniz pozitivni[i] od pozitivnih clanova niza NIZ[i] i podniz negativni[i], od negativnih clanova niza NIZ[i]. Zatim sortirati niz pozitivni[i] u rastucem poretku i stampati nizove pozitivni[i] i negativni[i]. Naci sume nizova pozitivni[i] i negativni[i] i stampati njihove vrednosti na standardnom izlazu*/ #include<stdio.h> #define DIM 100 void razmeni(int *a, int *b) { int tmp; tmp=*a; *a=*b; *b=tmp; } void sort(int niz[], int n) { int i, j; for(i=0; i<n-1; i++){ for(j=i; j<n; j++){ if(niz[i]>niz[j]) razmeni(&niz[i], &niz[j]); } } } void main(){ int NIZ[DIM]; int suma_pozitivnih=0; int suma_negativnih=0; int i; int n; int poz=0, neg=0; int pozitivni[DIM]; int negativni[DIM]; printf("Uneti dimenzije niza: "); scanf("%d", &n); printf("Uneti elemente niza: "); for(i=0; i<n; i++) scanf("%d", &NIZ[i]); for(i=0; i<n; i++){ if(NIZ[i]>0){ pozitivni[poz]=NIZ[i]; suma_pozitivnih+=pozitivni[poz]; poz++; } else{ 1

Ispitni zadaci reseni 2003 2004 2005

Embed Size (px)

Citation preview

Page 1: Ispitni zadaci reseni 2003 2004 2005

NIZOVI (ispitni zadaci)

/*Napisati program koji formira niz brojeva NIZ[i], potom od tog niza formira dva podniza: podniz pozitivni[i] od pozitivnih clanova niza NIZ[i] i podniz negativni[i], od negativnih clanovaniza NIZ[i]. Zatim sortirati niz pozitivni[i] u rastucem poretku i stampati nizove pozitivni[i] i negativni[i]. Naci sume nizova pozitivni[i] i negativni[i] i stampati njihove vrednosti na standardnom izlazu*/

#include<stdio.h>#define DIM 100

void razmeni(int *a, int *b){

int tmp;tmp=*a;*a=*b;*b=tmp;

}

void sort(int niz[], int n){

int i, j;for(i=0; i<n-1; i++){

for(j=i; j<n; j++){if(niz[i]>niz[j])

razmeni(&niz[i], &niz[j]);}

}}

void main(){

int NIZ[DIM];int suma_pozitivnih=0;int suma_negativnih=0;int i;int n;int poz=0, neg=0;int pozitivni[DIM];int negativni[DIM];

printf("Uneti dimenzije niza: ");scanf("%d", &n);printf("Uneti elemente niza: ");

for(i=0; i<n; i++)scanf("%d", &NIZ[i]);

for(i=0; i<n; i++){if(NIZ[i]>0){

pozitivni[poz]=NIZ[i];suma_pozitivnih+=pozitivni[poz];

poz++;}else{

negativni[neg]=NIZ[i];suma_negativnih+=negativni[neg];neg++;

}}

printf("Pozitivni clanovi niza su:\n");for(i=0; i<poz; i++)

printf(" %d ", pozitivni[i]);

printf("\nA negativni clanovi niza su:\n");for(i=0; i<neg; i++)

1

Page 2: Ispitni zadaci reseni 2003 2004 2005

printf(" %d ", negativni[i]);printf("\nSuma pozitivnih clanova niza je: %d,\n a suma negativnih clanova niza je: %d\n",

suma_pozitivnih, suma_negativnih);

sort(pozitivni, poz);

printf("Sada je sortirani niz pozitivnih clanova:\n");for(i=0; i<poz; i++)

printf(" %d ", pozitivni[i]);

printf("\n\n");}

/*Zadat je niz realnih brojeva B[n]. Napisati program (funkciju) koja:a) izracunava sumu elemenata niza koji prethode prvoj nuli u nizu*/

#include<stdio.h>#define DIM 100

void main(){

int NIZ[DIM];int suma=0;int i;int n;

printf("Uneti dimenzije niza: ");scanf("%d", &n);printf("Uneti elemente niza: ");

for(i=0; i<n; i++)scanf("%d", &NIZ[i]);

i=0;

while(NIZ[i]!=0){suma+=NIZ[i];i++;

}

printf("Suma niza do prve nule je: %d\n", suma);

}

/*Napisati program koji realizuje sazimanje nizaa) izbacivanjem svakog drugog elementa (nije dozvoljeno koriscenje pomocnog niza)*/

#include<stdio.h>#define DIM 100

void main(){

// int NIZ[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int NIZ[DIM];int proizvod=1;int i, j=0, n;

printf("Uneti dimenzije niza: ");scanf("%d", &n);printf("Uneti elemente niza: ");

for(i=0; i<n; i++)scanf("%d", &NIZ[i]);

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

2

Page 3: Ispitni zadaci reseni 2003 2004 2005

if(i%2==0) { /*Proveri da li je parni indeks*/NIZ[j]=NIZ[i];

j++;}

}

printf("Sada je niz:\n");for(i=0; i<j; i++)

printf("%d\n", NIZ[i]);

}

/*Napisati program koji odredjuje indeks i vrednost prvog clana u nizu koji je najblizi srednjoj vrednosti niza.*/

#include<stdio.h>#include<math.h>#define DIM 10

void main(){

int NIZ[DIM];int suma=0;int i;int n;float prosek;float razlika[10];int najblizi;int pozicija;

printf("Uneti dimenzije niza: ");scanf("%d", &n);printf("Uneti elemente niza: ");for(i=0; i<n; i++)

scanf("%d", &NIZ[i]);

for(i=0; i<n; i++)suma+=NIZ[i];

/*Izracunava se srednja (prosecna) vrednost niza*/prosek=(float)suma/(float)n;

printf("Srednja (prosecna) vrednost elemenata u nizu je: %8.2f\n", prosek);

/*Razlika elemenata niza od srednje vrednosti niza se pamti u nizu razlika[i]*/for(i=0; i<n; i++){

razlika[i]=prosek-NIZ[i];printf("Razlika je: %8.2f\n", razlika[i]);

}

/*Trazi se najblizi element u nizu srednjoj vrednosti niza*/najblizi=NIZ[0];for(i=1; i<n; i++){

if(fabs(razlika[i])<fabs(razlika[i-1])){najblizi=NIZ[i];pozicija=i;

}}

printf("Najblizi element u nizu srednjoj vrednosti clanova niza je %d, koji se nalazi na indeksu %d!\n",najblizi, pozicija);}

MATRICE (ispitni zadaci)

3

Page 4: Ispitni zadaci reseni 2003 2004 2005

/*Napisati program kojim se pojedinacno nalaze sume pozitivnih vrednosti kolona matrice B.Za unosenje elemenata matrice i nalazenje sume koristiti odgovarajuce funkcije*/

#include<stdio.h>#define DIM 100

void main(){

int matrica[DIM][DIM];int suma=0;int i, j, n;

printf("Uneti dimenzije matrice: ");scanf("%d", &n);printf("Uneti elemente matrice:\n");

for(i=0; i<n; i++)for(j=0; j<n; j++) scanf("%d", &matrica[i][j]);

for(j=0; j<n; j++){suma=0;for(i=0; i<n; i++){

if(matrica[i][j]>0)suma+=matrica[i][j];

}printf("Suma u koloni %d je: %d\n", j+1, suma);

}

}

/*Data je celobrojna matrica A dimenzija nxn. Napisati program koji izracunava srednje vrednosti vrsta i stampa sve elemente koji su veci od srednje vrednosti u toj vrsti. Pri resavanju programa koristiti funkcije*/

#include<stdio.h>#define DIM 100

void main(){

int A[DIM][DIM];static int sumaVrste[DIM];int i, j, n;

printf("Uneti dimenzije matrice: ");scanf("%d", &n);printf("Uneti elemente matrice:\n");

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++)

sumaVrste[i]+=A[i][j];

printf("Srednje vrednosti redova matrice su:\n");for(i=0; i<n; i++)

printf("%f\n", (float)sumaVrste[i]/n);

printf("Elementi veci od prosecne vrednosti u vrstama matrice su:\n");for(i=0; i<n; i++){

printf("\n");for(j=0; j<n; j++){

4

Page 5: Ispitni zadaci reseni 2003 2004 2005

if((float)A[i][j] > sumaVrste[i]/n)printf("%d ", A[i][j]);

}}

printf("\n");

}

/*Data je celobrojna matrica A dimenzija nxn. Napisati program za unos elemenata matrice i formirati niz C koji se dobija kada se sumiraju pozitivni elementi po vrstama matrice*/

#include<stdio.h>#define DIM 100

void main(){

int A[DIM][DIM];static int C[DIM];int i, j, n;

printf("Uneti dimenzije matrice: ");scanf("%d", &n);printf("Uneti elemente matrice:\n");

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(A[i][j]>0)C[i]+=A[i][j];}

}

printf("%Kreiran je niz:\n");for(i=0; i<n; i++)

printf("%d\n", C[i]);

}

STRUKTURE (ispitni zadaci)

/*Definisati strukturu Cokolada sa sledecim podacima clanovima: vrsta, cena, tezina, kolicina. Napisati program kojim se unose podaci o raznim vrstama cokolade preko standardnog ulaza i izracunava prosecna cena svih nabavljenih cokolada.*/

#include<stdio.h>#define DIM 100

struct cokolada{char vrsta[20];float cena;float tezina;int kolicina;

};

void main(){int n;struct cokolada nizCokolada[DIM];int i;float prosecnaCena, sumaCena=0;

printf("Unesite broj vrsta cokolade: ");

5

Page 6: Ispitni zadaci reseni 2003 2004 2005

scanf("%d", &n);

for(i=0; i<n; i++){printf("Unesite vrstu cokolade: ");scanf("%s", &nizCokolada[i].vrsta);printf("Unesite cenu cokolade: ");scanf("%f", &nizCokolada[i].cena);printf("Unesite tezinu cokolade: ");scanf("%f", &nizCokolada[i].tezina);printf("Unesite kolicinu cokolade: ");scanf("%d", &nizCokolada[i].kolicina);

sumaCena+=nizCokolada[i].cena;}

prosecnaCena=sumaCena/n;

printf("Prosecna cena cokolade je: %8.2f\n", prosecnaCena);}

/*Napisati program kojim se citaju broj fudbalskih ekipa, za svaku ekipu: ime, broj osvojenih bodova i gol razlika, a zatim se ispisuje tabela. Ako dve ekipe imaju isti broj bodova bolja je ona ekipa koja ima vecu gol razliku. Zadatak resiti pomocu funkcija citanje struktura, sortiranjue struktura, ispis sortiranih struktura*/

#include<stdio.h>

#define DIM 100

typedef struct ekipa{char ime[20];int brojBodova;int golRazlika;

};

void razmeni(struct ekipa *a, struct ekipa *b){

struct ekipa tmp;tmp=*a;*a=*b;*b=tmp;

}

void sort(struct ekipa niz[], int n){

int i, j;for(i=0; i<n-1; i++){

for(j=i+1; j<n; j++){if (niz[i].brojBodova<niz[j].brojBodova)

razmeni(&niz[i], &niz[j]);else if (niz[i].brojBodova==niz[j].brojBodova){

if (niz[i].golRazlika<niz[j].golRazlika)razmeni(&niz[i], &niz[j]);

}}

}}

int main(){

int i, n;struct ekipa tim[DIM];

printf("Unesite broj ekipa: ");scanf("%d", &n);

6

Page 7: Ispitni zadaci reseni 2003 2004 2005

for(i=0; i<n; i++){printf("Uneti ime ekipe: ");scanf("%s", tim[i].ime);fflush(stdout);

printf("Uneti broj bodova: ");scanf("%d", &tim[i].brojBodova);

printf("Uneti gol razliku: ");scanf("%d", &tim[i].golRazlika);

}

printf("Sortirani niz je:\n");

sort(tim, n);for(i=0; i<n; i++)

printf("%s%10d%10d\n", tim[i].ime, tim[i].brojBodova, tim[i].golRazlika);

return 0;}

/*Napisati program koji ucitava niz od n struktura tipa ZAPOSLENI koja sadrzi polja: ime, godine_staza i plata. Sortirati niz prema godinama staza i ispisati ime i godine staza svih zaposlenih cija je plata veca od 10.000 din.*/

#include<stdio.h>

#define DIM 100

typedef struct zaposleni{char ime[20];int godineStaza;float plata;

};

void razmeni(struct zaposleni *a, struct zaposleni *b){

struct zaposleni tmp;tmp=*a;*a=*b;*b=tmp;

}

void sort(struct zaposleni niz[], int n){

int i, j;for(i=0; i<n-1; i++){

for(j=i+1; j<n; j++){if (niz[i].godineStaza<niz[j].godineStaza)

razmeni(&niz[i], &niz[j]);}

}}

int main(){

int i, n;struct zaposleni radnici[DIM];float granicaPlate=10000.00;

printf("Unesite broj zaposlenih: ");scanf("%d", &n);

for(i=0; i<n; i++){printf("Uneti ime zaposlenog radnika: ");

7

Page 8: Ispitni zadaci reseni 2003 2004 2005

scanf("%s", radnici[i].ime);fflush(stdout);

printf("Uneti godine staza: ");scanf("%d", &radnici[i].godineStaza);

printf("Uneti platu: ");scanf("%f", &radnici[i].plata);

}

printf("Sortirani niz je:\n");

sort(radnici, n);for(i=0; i<n; i++)

if(radnici[i].plata>granicaPlate)printf("%s%10d\n", radnici[i].ime, radnici[i].godineStaza);

return 0;}

DATOTEKE

/*Napisati program koji iz tekstualne datoteke SLOVA.DAT broji koliko ima slova A u svakom redu i od tih brojeva formira i ispisuje niz C i odredjuje najveci element niza C.*/

#include<stdio.h>

int main(){

FILE *in;int i;int j;int C[100];int brojacSlova_a=0;char znak;int Cmax; /* Maksimalna vrednost u nizu C*/

in=fopen("slova.txt", "r");if(!in){

printf("Ulazna datoteka ne postoji!\n");return 1;

}

j=0; /* j broji redove datoteke */

while(!feof(in)){znak=fgetc(in);

if(znak=='a')brojacSlova_a++;

if(znak=='\n'){C[j]=brojacSlova_a;

j++;/* j broji redove datoteke */brojacSlova_a=0;

}}

Cmax=C[0];for(i=0; i<j; i++){

printf("%d\t%d\n", i, C[i]);if(C[i]>Cmax)

Cmax=C[i];}

printf("Maksimalni broj slova 'a' u nizu C je: %d\n", Cmax);

8

Page 9: Ispitni zadaci reseni 2003 2004 2005

fclose(in);

return 0;}

/*Napisati program za kopiranje svih neparnih redova datoteke PRIMER.DAT u datoteku NEPARNI.DAT.*/

#include<stdio.h>

int main(){

FILE *in;FILE *out;char red[80];int i;

in=fopen("primer.txt", "r");if(!in){

printf("Ulazna datoteka ne postoji!\n");return 1;

}

out=fopen("neparni.txt", "w");if(!out){

printf("Izlazna datoteka nije otvorena!\n");return 1;

}

i=0;while(!feof(in)){

fgets(red, 80, in);if(i%2==0){

fprintf(out, "%s", red);printf("%s", red);

}i++;

}

fclose(in);fclose(out);

return 0;}

/*Datoteka imenik.txt sastoji se od slogova sa poljima ime, tel i adresa. Napisati program za formiranje datoteke i unos slogova. Unos se prekida kada se unese sifra KRAJ*/

#include<stdio.h>#include<string.h>

int main(){

typedef struct imenik{char ime[20];char tel[10];char adresa[20];

};

int i;char sifra[5];FILE *ulaz;struct imenik Imenik;

9

Page 10: Ispitni zadaci reseni 2003 2004 2005

ulaz=fopen("imenik.txt", "w");if(!ulaz){

printf("Datoteka nije otvorena!\n");return 1;

}

for(i=0; i<100; i++){printf("Uneti ime: ");scanf("%s", Imenik.ime);fprintf(ulaz, "%-20s", Imenik.ime);fflush(stdout);

printf("Uneti telefon: ");scanf("%s", Imenik.tel);fprintf(ulaz, "%10s", Imenik.tel);fflush(stdout);

printf("Uneti adresu: ");scanf("%s", Imenik.adresa);fprintf(ulaz, "%20s\n", Imenik.adresa);fflush(stdout);

printf("Da li unosite jos podataka?");scanf("%s", sifra);

if(!strcmp(sifra, "KRAJ"))break;

}

fclose(ulaz);

return 0;}

/*Definisati strukturu Automobil sa sledecim podacima clanovima: marka, godina proizvodnje, godProiz, registarski broj. Napisati program kojim se unose podaci o n automobila u datoteku Auto.txt i racuna ukupna vrednost zadate marke automobila.*/

#include<stdio.h>#include<string.h>

#define DIM 100

struct automobil{char marka[20];int godProiz;float cena;char regBr[8];

};

int main(){int n;struct automobil nizAutomobil[DIM];int i;float suma=0;char trazenaMarka[20];int tacno;FILE *out;

if((out=fopen("automobili.txt", "w"))==NULL){printf("Izlazna datoteka nije otvorena!\n");return 1;

}

10

Page 11: Ispitni zadaci reseni 2003 2004 2005

printf("Unesite broj automobila: ");scanf("%d", &n);

for(i=0; i<n; i++){printf("Unesite marku automobila: ");scanf("%s", &nizAutomobil[i].marka);fprintf(out, "%s\n", nizAutomobil[i].marka);

printf("Unesite godinu proizvodnje automobila: ");scanf("%d", &nizAutomobil[i].godProiz);fprintf(out, "%d\n", nizAutomobil[i].godProiz);

printf("Unesite cenu automobila: ");scanf("%f", &nizAutomobil[i].cena);fprintf(out, "%8.2f\n", nizAutomobil[i].cena);

printf("Unesite registarski broj: ");scanf("%s", &nizAutomobil[i].regBr);fprintf(out, "%s\n", nizAutomobil[i].regBr);

fprintf(out, "\n");printf("\n");

}

printf("Unesite marku automobila cija se ukupna cena trazi: ");scanf("%s", trazenaMarka);

for(i=0; i<n; i++){if((tacno=strcmp(nizAutomobil[i].marka, trazenaMarka)==0))

suma+=nizAutomobil[i].cena;}

printf("Ukupna cena automobila marke %s je: %8.2f\n", trazenaMarka, suma);

fclose(out);

return 0;}

/*Napisati program na programskom jeziku C koji iz datog fajla ULAZ.TXT izdvaja i stampa najduzu rec koja pocinje slovom "K".*/

#include<stdio.h>#include<string.h>

int main(){FILE *in;char rec[20];char maxRec[20];int duzina;int maxSlova=0;

if((in=fopen("proba.txt", "r"))==NULL){printf("Ulazna datoteka nije otvorena!\n");return 1;

}

while(!feof(in)){fscanf(in, "%s", rec);

11

Page 12: Ispitni zadaci reseni 2003 2004 2005

duzina=(int)strlen(rec);// printf("%s\t%d\n", rec, duzina);

if(rec[0]=='k'){// printf("%s\t%d\n", rec, duzina);

if((int)strlen(rec)>maxSlova){maxSlova=strlen(rec);strcpy(maxRec, rec);

}}

}

printf("Najduza rec koja pocinje slovom 'k' u fajlu je rec ' %s ' i ona ima %d slova!\n", maxRec, maxSlova);

fclose(in);return 0;

}

/*Napisati program na programskom jeziku C koji iz datog fajla ULAZ.TXT cita reci i odredjuje prosecan broj slova u recima parne duzine.*/

#include<stdio.h>#include<string.h>

int main(){FILE *in;char rec[20];int duzina;int ukupnaDuzina=0;int prosek;int brojReci=0;

if((in=fopen("proba.txt", "r"))==NULL){printf("Ulazna datoteka nije otvorena!\n");return 1;

}

while(!feof(in)){fscanf(in, "%s", rec);duzina=(int)strlen(rec);

if(duzina%2==0){ukupnaDuzina+=duzina;brojReci++;printf("%s\t%d\n", rec, duzina);

}}

prosek=ukupnaDuzina/brojReci;

printf("\n\nU ulaznom fajlu ima %d reci sa parnim brojem slova,\n",brojReci);printf("koje ukupno imaju %d slova!\n",ukupnaDuzina);printf("Prosecna duzina reci sa parnim brojem slova u fajlu je %d!\n\n",prosek);

fclose(in);return 0;

}

Resenja Programski jezici I maj 2005.1. zadatakNapisati program za formiranje niza mnozenjem pozitivnih elemenata po vrstama matrice. Koristiti funkcije za ucitavanje matrice, formiranuje niza i ispisivanje niza na standardnom izlazu.*/

12

Page 13: Ispitni zadaci reseni 2003 2004 2005

#include<stdio.h>#define DIM 20

void ucitajMatricu(int matr[][DIM], int n);

void pomnoziPozitivne(int matr[][DIM], int n, int niz[]);

void pisiNiz(int niz[], int n);

void main(){int A[DIM][DIM];int C[DIM];int n;int proizvod=1;

printf("Uneti dimenzije matrice: ");scanf("%d", &n);

ucitajMatricu(A, n);

pomnoziPozitivne(A, n, C);

printf("Dobijen je niz:\n");

pisiNiz(C, n);}

void ucitajMatricu(int matr[][DIM], int n){

int i,j;printf("Uneti elemente matrice:\n");

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

scanf("%d", &matr[i][j]);}

void pomnoziPozitivne(int matr[][DIM], int n, int niz[]){

int i,j;int proizvod;for(i=0; i<n; i++){

proizvod=1;for(j=0; j<n; j++){

if(matr[i][j]>0){proizvod*=matr[i][j];

}}niz[i]=proizvod;

}}

void pisiNiz(int niz[], int n){

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

printf("%d\n", niz[i]);}

5. zadatakDat je niz celih brojeva A dimenzija n. Napisati funkciju na programskom jeziku C koja vraca zbir poslednjih 8 clanova niza A.

Uradjen ceo program.

#include<stdio.h>

13

Page 14: Ispitni zadaci reseni 2003 2004 2005

#define DIM 100

void main(){int A[DIM];int i, n;int zbir=0;

printf("Unesite broj elemenata niza:\n");scanf("%d", &n);

printf("Unesite elemenateniza:\n");for(i=0; i<n; i++)

scanf("%d", &A[i]);

for(i=n-1; i>n-9; i--)zbir+=A[i];

printf("Zbir zadnjih osam elemenata niza je: %d\n", zbir);}

ili kao funkcija:

int zbirZadnjihOsam(int niz[], int n){

int i;int zbir=0;for(i=n-1; i>n-9; i--)

zbir+=niz[i];

return zbir;}

6. zadatakNa standardnom ulaza se unosi string s. Napisati program na programskom jeziku C za nalazenje i stampanje na ekran zbira ASCII kodova svih znakova unetog stringa.

#include<stdio.h>#include<string.h>

void main(){char s[256];int i;int zbirASCII=0;

printf("Unesite jednu recenicu:\n");scanf("%s", s);

for(i=0; i<(int)strlen(s); i++)zbirASCII+=(int)s[i];

printf("Zbir ASCII kodova datog stringa je: %d\n", zbirASCII);}

14