Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //prvi zadatak
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdarg.h>
- char * moj_itoa(int n)
- {
- char *str=(char*)calloc(100,sizeof(char));
- sprintf(str,"%d",n);
- return str;
- }
- char *formiraj(int n,...)
- {
- va_list a;
- va_start(a,n);
- char * str=(char*)calloc(100,sizeof(char));
- int pom=0;
- for(int i=0;i<n;i++)
- {
- pom = va_arg(a,int);
- strcat(str,moj_itoa(pom));
- }
- va_end(a);
- return str;
- }
- int main()
- {
- printf("%s",formiraj(3,123,456,789));
- return 0;
- }
- //drugi zadatak
- #include <stdio.h>
- #include <stdlib.h>
- int paran(int n)
- { if(n<0)
- n=-n;
- return ((n%2)==0)?1:0; }
- int pozitivan(int n)
- { return (n>0)?1:0; }
- void serija(int* niz, int n, int(*s)(int), int **pocetak, int *duzina)
- {
- int trenutni_pocetak=0, pocetak_najduze_serije=0;
- int duzina_trenutna =0, duzina_najduze_serije =0;
- for(int i=0;i<n;i++)
- { if((*s)(niz[i]))
- duzina_trenutna++;
- else
- { duzina_trenutna = 0;
- trenutni_pocetak = i+1; }
- if(duzina_trenutna > duzina_najduze_serije)
- { duzina_najduze_serije = duzina_trenutna;
- pocetak_najduze_serije = trenutni_pocetak; }
- }
- *duzina = duzina_najduze_serije;
- *pocetak = niz + pocetak_najduze_serije;
- }
- int main()
- {
- int n;
- printf("Unesite duzinu niza : "); scanf("%d",&n);
- int niz[n],*pocetak,duzina;
- for(int i=0;i<n;i++)
- { printf("Unesite %d. element : ",i+1);
- scanf("%d",niz+i); }
- //Parni
- serija(niz,n,paran,&pocetak,&duzina);
- printf("\nSerija parnih brojeva :\n");
- for(int i=0;i<duzina;i++)
- printf("%d ",pocetak[i]);
- //Pozitivni
- serija(niz,n,pozitivan,&pocetak,&duzina);
- printf("\nSerija pozitivnih brojeva :\n");
- for(int i=0;i<duzina;i++)
- printf("%d ",pocetak[i]);
- return 0;
- }
- //treci zadatak
- #include <stdio.h>
- #include <stdlib.h>
- int moj_strlen(char *x)
- {
- int i=0;
- while(x[i]!='\0')
- i++;
- return i;
- }
- int moj_atoi(char *str)
- {
- int suma = 0;
- int duzina = moj_strlen(str);
- for (int i=duzina-1,stepen=1; i>=0; i--,stepen*=10)
- suma+=(str[i]-'0')*stepen;
- return suma;
- }
- char*spoji(char *str1,char *str2)
- {
- int len1=moj_strlen(str1);
- int len2=moj_strlen(str2);
- for(int i=0;i<=len2;i++)
- str1[len1+i]=str2[i];
- return str1;
- }
- int poredi(const char *x,const char *y)
- {
- while(*x)
- {
- if(*x!=*y)
- break;
- x++;
- y++;
- }
- return *(const unsigned char*)x-*(const unsigned char*)y;
- }
- int saberi(int b1, int b2)
- {
- return (b1+b2);
- }
- void spoji_saberi(int argc,char *argv[],char*(*dodaj)(char*,char*),int (*saberi)(int,int))
- {
- int i=1,suma=0;
- char* izlaz=(char*)calloc(100,sizeof(char));
- if(argc>2)
- while(i<argc)
- {
- if(poredi(argv[i],"-s")==0)
- {
- i++;
- while(i<argc&&(poredi(argv[i],"-b")!=0))
- {
- izlaz=(*dodaj)(izlaz,argv[i]);
- i++;
- }
- }
- else if(poredi(argv[i],"-b")==0)
- {
- i++;
- while(i<argc&&(poredi(argv[i],"-s")!=0))
- {
- suma=(*saberi)(suma,moj_atoi(argv[i]));
- i++;
- }
- }
- else
- i++;
- }
- printf("Suma je : %d\n",suma);
- printf("String je : %s\n",izlaz);
- }
- int main(int argc, char *argv[])
- {
- // 14 char *argv2[] = {"-b", "1", "3", "5", "-s", "2", "4", "6543","-b", "1", "5", "-s","21", "abc"};
- spoji_saberi(argc,argv,spoji,saberi);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement