Osnovi programiranja

  • Published on
    19-Jan-2016

  • View
    43

  • Download
    0

Embed Size (px)

DESCRIPTION

osnovi programiranja fakultet elektrotehnike prva godina drugi semestar

Transcript

<ul><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>1</p><p>UZORCI</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>2</p><p> 5</p><p> 5 4 5</p><p> 5 4 3 4 5</p><p> 5 4 3 2 3 4 5</p><p>5 4 3 2 1 2 3 4 5</p><p>1. Zadatak</p><p>Napisati program koji na ekran raunara ispisuje dati uzorak proizvoljnog broja redova uz pomo petlji. Broj redova zadaje korisnik.( Dat je primjer za 5 redova ).</p><p>#includevoid main(){ int i,j; int red; printf("Unesite broj redova: "); scanf("%d",&amp;red); for(i=0;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>3</p><p>5. Zadatak</p><p>Neka program od korisnika uita veliko slovo i na izlazu (ekranu) odtampa trougao po datom pravilu. Primjer trougla za uitano slovo 'E'.</p><p>#includevoid main(){ char znak; int i,j; printf("Unesite veliko slovo: "); scanf("%c",&amp;znak); for(i='A';ii;j--) putchar(' '); for(j='A';j='A';j--) putchar(j); putchar('\n'); }}</p><p>6. Zadatak</p><p>Napisati program koji na ekran raunara ispisuje dati uzorak proizvoljnog broja redova uz pomo petlji. Broj redova zadaje korisnik.( Dat je primjer za 5 redova ).</p><p>#include #include int main() { int i,j,n; printf("Unesite broj redova\n"); scanf("%d",&amp;n); for(i=0;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>4</p><p>9. Zadatak</p><p>Napisati program koji na ekran raunara ispisuje dati uzorak proizvoljnog broja redova uz pomo petlji. Nije dozvoljeno koristiti naredbe tipa printf() i sl. (Dat je primjer uzorka za 5 redova.)</p><p>#includevoid main(){ char znak; int i,j; printf("Unesite veliko slovo: "); scanf("%c",&amp;znak); for(i='A';i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>5</p><p>13. Zadatak</p><p>Napisati program koji na ekran raunara ispisuje dati uzorak proizvoljnog broja redova uz pomo petlji. Broj redova zadaje korisnik.</p><p>#include void main(){</p><p>int i;int k;int br_red;printf("Unesite broj redova: ");scanf("%d",&amp;br_red);for(i=1;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>6</p><p>16. Zadatak</p><p>Napisati program koji na ekran ispisuje slijedei uzorak proizvoljne irine, tj. znak do koga se ispisuje uzorak unosi korisnik sa tastature. Primjer za slovo 'E'.</p><p>#include#includevoid main(){ char ZNAK; int i,j; printf("Unesite veliko slovo: "); scanf("%c",&amp;ZNAK); if(ZNAK&gt;='a'&amp;&amp; ZNAK</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>7</p><p>19. Zadatak</p><p>Napisati program koji na ekran raunara ispisuje dati uzorak proizvoljnog broja redova uz pomo petlji. Broj redova zadaje korisnik.</p><p>#includeint main(void){ int i,j,n; printf("Unesi broj redova:\n"); scanf("%d",&amp;n); for(i=1;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>8</p><p>FUNKCIJE, POKAZIVAII</p><p>NIZOVI</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>9</p><p>20. Zadatak</p><p>Napisati rekurzivnu funkciju prototipa int aniz(int a0, int d, int n);koja rauna n-ti lan aritmetikog niza. N-ti lan aritmetikog niza se rauna prema formuli: </p><p>#include int aniz(int a0, int d, int n) { if (n == 0) return a0; else return d + aniz(a0, d, n-1);}int main () { int a0, d, n, nclan; while (1) { printf ("\nUpisite nulti clan, diferenciju i indeks" </p><p>"zadanog clana :");scanf ("%d %d %d", &amp;a0, &amp;d, &amp;n);if (n &lt; 0) break;nclan = aniz (a0, d, n);printf ("\n %d. clan aritmetickog niza, s nultim "</p><p>"clanom %d i diferencijom %d: %d \n", n, a0,d, nclan);</p><p> }printf ("\nNegativni indeks clana %d\n", n);return 0;</p><p>}</p><p>21. Zadatak</p><p>Napisati funkviju koja ima prototip void naopako(char *); a vri inverziju redoslijeda slova u zadatoj rijei.</p><p>#include #define MAX 20void naopako(char *);void main() {</p><p>char unos[MAX];printf("Unesite rijec:");gets(&amp;unos);</p><p>naopako(&amp;unos);printf("Rijec naopako: %s\n",unos);</p><p>}</p><p>void naopako(char *niz){char tmp[MAX];int n,k,i=0;while ((tmp[i]=niz[i])) {</p><p>i++;}n=0;for(k=i-1; k&gt;=0;k--) {</p><p>niz[n]=tmp[k];n++;</p><p>}}</p><p>22. Zadatak</p><p>Napisati i testirati fnkciju prototipa unsigned long bit_count (unsigned long value); koja vraa broj binarnih jedinica u binarnoj reprezentaciji broja value.</p><p>#includeunsigned long bit_count(unsigned long value);void main(){ int num_bit; num_bit=bit_count(79); printf("%d\n",num_bit); }unsigned long bit_count(unsigned long value) { int count=0; while(value=0) { if(value&amp;1) count++; value&gt;&gt;1; } return count; }</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>10</p><p>23. Zadatak</p><p>Napisati funkciju koja ima prototip void zamijeni(double *,double *); a vri zamjenu varijabli tipa double.</p><p>#includevoid zamijeni(double *,double *);void main(void) { double x=9,y=7; printf("prije pozivanja funkcije\nx=%lf\ty=%if\n",x,y); zamijeni(&amp;x,&amp;y); printf("poslije pozivanja funkcije\nx=%lf\ty=%if\n",x,y); }void zamijeni(double *a,double *b) { double pom; pom=*a; *a=*b; *b=pom; }</p><p>24. Zadatak</p><p>Napisati funkciju iji je prototip dat sa float suma_niza ( float *,int n);Koja nalazi sumu elemenata niza realnih brojeva.</p><p>#includefloat suma_niza ( float *,int n);void main (void){ int i=0,n; float niz[20]; printf("Unesite zeljeni broj elemenata niza (max" </p><p>"20):\n"); scanf("%d",&amp;n); printf("Unesite elemente niza: \n"); for(i;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>11</p><p> prvi=niz+rbr1-1; zadnji=niz+rbr2-1; suma=psuma(prvi,zadnji); printf("Parcijalna suma niza je: %d\n",suma); }int psuma(int*start, int*kraj) { int rezultat=0; while(start</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>12</p><p>}double *najveci(double f_niz[],int N){</p><p>int i;double *pnajveci;pnajveci = f_niz;for(i=1;i *pnajveci)*pnajveci = *(f_niz+i);</p><p>}return pnajveci;</p><p>}</p><p>30. Zadatak</p><p>Napisati funkciju koja vraa pokaziva na najvei lan cjelobrojnog niz. U glavnom programu unijeti niz te pozvati funkciju i ispisati najvei lan.</p><p>#include#define MAX 100int *najveci(int *, int);void main() { int A[MAX]; int i,n,*pmax; do{ printf("Unesite dimenziju niza: "); scanf("%d", &amp;n); } while(nMAX); printf("Unesite elemente cjelobrojnog niza: \n"); for(i=0;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>13</p><p>32. Zadatak</p><p>Napisati funkciju iji je prototip dat sa int EX_ILI(int x,int y); koja prihvata dva argumenta x i y ije vrijednosti mogu biti 1 ili 0. Data funkcija treba simulirati rad ekskluzivnog ILI kola. Rad funkcije testirati u glavnom programu. </p><p>#include int EX_ILI(int x, int y);void main(){</p><p>int x,y;do{</p><p>printf("Unesite X: ");scanf("%d",&amp;x);</p><p>}while (x1);do{</p><p>printf("Unesite Y: ");scanf("%d",&amp;y);</p><p>}while (y1 );printf("Ekskluzivno ili: %d\n",EX_ILI(x,y));</p><p>}int EX_ILI(int x, int y){</p><p>int rez;rez = !x &amp; y | x &amp; !y;return rez;</p><p>}</p><p>33. Zadatak</p><p>Napisati funkciju iji je prototip dat sa double skal_pro (double a[], double b[], int n);koja izraunava skalarni proizvod dva vektora a i bdimenzija 1xn. U glavnom programu testirati napisanu funkciju.</p><p>#include double skal_pro(double a[],double b[],int n);void main(){</p><p>double a[20],b[20];int dim;int i;printf("Unesite dimenziju vektora: ");scanf("%d",&amp;dim);printf("Unesite clanove vektora a:\n");for (i=0;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>14</p><p>35. Zadatak</p><p>Napisati funkciju iji je prototip dat sa: char *spoji(char* s, char *t); koja spaja stringove s i t tako da na kraj stringa s nadovee string t. Vraena vrijednost iz funkcije je pokaziva na rezultujui string. (Napomena: Nije dozvoljeno koritenje funkcija iz .)</p><p>#includechar *spoji(char *s,char *t);void main(){ char string1[50]; char string2[50]; printf("Unesite prvi string:"); gets(string1); printf("Unesite drugi string:"); gets(string2); printf("Rezultujuci string je: %s\n", spoji(string1,string2));}char *spoji(char *s,char *t) { int i=0,j=0; while(s[i]) i++; while((s[i]=t[j])) { i++; j++; } s[i]='\0'; return s;}</p><p>36. Zadatak</p><p>Uitati dvije rijei. U glavnom programu ispisati zbroj njihovih duljina. Duljinu rijei izraunati u funkciji.</p><p>#includeint zbroj (char *p1, char *p2){</p><p>int i, br = 0;for (i=0;i</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>15</p><p>38. Zadatak</p><p>Napisati funkciju iji je prototip dat sa: int str_cmp(char* s,char *t); koja provjerava da li su stringovi s i t leksikografski jednaki. Ukoliko su stringovi jednaki funkcija vraa vrijednost 1, a u suprotnom vraa indeks prvog znaka gdje se stringovi razlikuju. U glavnom programu unijeti dva proizvoljna stringa, te provjeriti rad napisane funkcije. Za svaki mogui sluaj obezbijediti prikladan ispis.</p><p>#define MAX 10#include int str_cmp(char *s, char *t);void main(){</p><p>char s1[MAX],s2[MAX];int iRet;printf("Unesite prvi string: ");gets(s1);printf("Unesite drugi string: ");gets(s2);iRet = str_cmp(s1,s2);switch (iRet){case -1:</p><p>printf("Stringovi su leksikografski jednaki\n");</p><p>break;default:</p><p>printf("Stringovi se razlikuju od indeksa" "%d\n",iRet);</p><p>}}int str_cmp(char *s, char *t){</p><p>int i=0;while((s[i] == t[i]) &amp;&amp; s[i] &amp;&amp; t[i])</p><p>i++;if (s[i] == t[i])</p><p>return -1;return i;</p><p>}</p><p>39. Zadatak</p><p>Napisati funkciju iji je prototip dat sa: void ukloni_razmake (char* str); koja iz primljenog stringa str uklanja razmake. Na primjer, ako se funkciji proslijedi string " Ja Sam Student " nakon izlaska iz funkcije ovaj string treba da izgleda "JaSamStudent". U glavnom programu testirati napisanu funkciju.</p><p>#include void ukloni_razmake(char *str);void main(){</p><p>char uneseni[100];printf("Unesite string za konverziju: ");gets(uneseni);ukloni_razmake(uneseni);printf("Nakon ukalanjanja razmaka string </p><p>izgleda:\n%s\n",uneseni);</p><p>}void ukloni_razmake(char *str){</p><p>int i=0,j=0,br=0;char pom;while(str[i]!='\0'){</p><p>if(str[i]==' ')br++;</p><p>else{pom=str[i];str[j]=pom;j++;</p><p>}i++;}str[j]='\0';</p><p>}</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>16</p><p>40. Zadatak</p><p>Napisati funkciju sa prototipon int rijeci (char *) kao rezultat vraa broj rijei u stringu. U sluaju pojavljivanja veeg broja uzastopnih praznih mjesta tretirati ih kao jedno prazno mjesto. Takoe napisati I glavni program koji e demonstrirati rad funkcije. </p><p>#include int broj_rijeci(char *);void main(){ char str [100]; int brojac; printf ("\nUnesite jednu recenicu: "); gets(str); brojac=broj_rijeci(str); printf ("\nBroj rijeci u stringu je: %d\n",brojac);}int broj_rijeci(char* str){ int brojac = 0; int razmak = 1; while (*str != NULL){ if ((*str == ' ') || (*str == '\t')){ if (! razmak){ brojac++; razmak = 1; } }else razmak = 0; str++; } if (! razmak) brojac++; return brojac;}</p><p>41. Zadatak</p><p>Napisati funkciju zamijeni koja kao parametar uzima pokaziva na string , a koja zamjenjuje sva prazna mjesta znakom '-' i vraa broj takvih zamijenjenih mjesta. Napisati program koji demonstrira rad ove funkcije.</p><p>#include int zamijeni(char *);void main(){ char recenica [100]; int n; printf ("\nUnesite jednu recenicu: ");</p><p> gets(recenica); n=zamijeni(recenica); printf ("\nIzmijenjena recenica: \n%s \nBroj praznih" " mjesta je: %d\n", recenica,n);}int zamijeni(char *recenica){ int n = 0; while (*recenica != 0){ if ((*recenica == ' ')){ n++; *recenica = '-'; } recenica++; } return n;}</p><p>42. Zadatak</p><p>Napisati funkciju iji je prototip dat sa: char izbaci(char* str, int n);koja iz stringa str izbacuje znak koji se u stringu nalazi na mjestu i, a kao povratnu vrijednost vraa izbaeni znak. Npr. ukoliko se funkciji proslijedi string "petak" i broj 4, nakon provedenog izbacivanja string treba glasiti "peta", a vraena vrijednost 'k'. (Napomena: Nije dozvoljeno koritenje funkcija iz .)</p><p>#include char* izbaci(char *, int );void main(){ char p [100]; int n,c; printf ("\nUnesite jedan string: "); scanf ("%s", p); getchar(); printf ("\nNa kojem mjestu treba znak izbaciti: "); scanf ("%d", &amp;c); n=c-1; izbaci(p,n); printf ("\nString ima slijedeci izgled: %s\n",p);}char* izbaci(char* p, int n) {</p><p>while (p[n+1] != '\0')p[n++]=p[n+1];</p><p>p[n]='\0';return p;</p><p>}</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>17</p><p>43. Zadatak</p><p>Napisati funkciju sa prototipom int prebroji(char *, char); koja kao rezultat vraa broj pojavljivanja datorg karaktera u stringu. Ukoliko se dati karakter ne nalazi u stringu funkcija vraa -1. Takoe napisati glavni program koji e demonstrirati rad kreirane funkcije.</p><p>#include int prebroji(char *, char );int main(){</p><p>char string[80],znak;printf ("\nUnesite jednu rijec: ");scanf ("%s", string);getchar();printf ("\nKoji karakter treba prebrojati: ");scanf ("%c", &amp;znak);</p><p> if(*string==znak) printf ("\n\nBroj karaktera %c je: %d\n", znak, prebroji(string,znak)); else printf("\n\t\t-1\n\n}");}int prebroji(char* string, char znak){</p><p>int b=0;while(*string!='\0'){</p><p>if (*string==znak)b++;</p><p>string++;}return b;</p><p>44. Zadatak</p><p>Napisati funkciju brsamoglasnika koja nalazi duinu stringa. Funkcija prihvata jedan parametar, a to je pokaziva na poetak stringa. Funkcija vraa broj pojavljivanja samoglasnika u stringu. Funkciju treba realizovati bez koritenja funkcije strlen(). (samoglasnici su: A, E, I, O i U)</p><p>#include int duzina(char* string) {</p><p>int d=0;while (*string++!='\0') d++;return d;</p><p>}int samogl(char* string) {</p><p>int s=0;while (*string!='\0') { if (*string=='a' || *string=='e' ||*string=='i'||</p><p> *string=='o' || *string=='u' || *string=='A'|| *string=='E' || *string=='I' || *string=='O'|| *string=='U')</p><p>s++;string++;</p><p>}return s;</p><p>}int main(){</p><p>char a[80],c;printf ("\nUnesite jednu rijec: ");scanf ("%s", a);getchar();printf ("\n\nUnesena rijec sadrzi %d karaktera\n"</p><p> "Broj samoglasnika je: %d\n", duzina(a), samogl(a));</p><p>return 0;}</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>18</p><p>MATRICE I DATOTEKE</p></li><li><p>Fakultet Elektrotehnike | sudo_s@live.com</p><p>O</p><p>snov</p><p>i ra</p><p>unar</p><p>stva </p><p>II</p><p>19</p><p>45. Zadatak</p><p>#include void main(){</p><p>FILE * dat1;char rijec[100];char slovo;printf("Unesite rijec(maksimalno 100 karaktera): ");gets(rijec);if ((dat1=fopen("datoteka.txt","w"))==NULL){</p><p>printf("Datoteku neije moguce otvoriti \n");return;</p><p>}fputs(rijec,dat1);fclose(dat1);if ((dat1=fopen("datoteka.txt","r"))==NULL){</p><p>printf("Datoteku neije moguce otvoriti \n");return;</p><p>}while(fscanf(dat1,"%c",&amp;slovo) !=EOF)</p><p>printf("%c\n",slovo);}</p><p>46. Zadatak</p><p>U binarnoj datoteci brojevi.bin nalaze se upisani brojevi tipa double. Unaprijed se ne zna koliko ih ima. Napisati program koji e pronai sumu i srednju vrijednost zapisanih brojeva. Na ekranu ispisati izraunate vrijednosti.</p><p>#include void main(){</p><p>FILE * dat1;double broj;int count=0;double suma=0;double srednja;if ((dat1=fopen("brojevi.bin","rb"))==NULL){</p><p>printf("Datotek...</p></li></ul>