Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.68 KB | None | 0 0
  1. //prvi zadatak
  2.  
  3.  
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <stdarg.h>
  8. char * moj_itoa(int n)
  9. {
  10. char *str=(char*)calloc(100,sizeof(char));
  11. sprintf(str,"%d",n);
  12. return str;
  13. }
  14.  
  15.  
  16. char *formiraj(int n,...)
  17. {
  18. va_list a;
  19. va_start(a,n);
  20. char * str=(char*)calloc(100,sizeof(char));
  21. int pom=0;
  22. for(int i=0;i<n;i++)
  23. {
  24. pom = va_arg(a,int);
  25. strcat(str,moj_itoa(pom));
  26. }
  27. va_end(a);
  28. return str;
  29. }
  30. int main()
  31. {
  32. printf("%s",formiraj(3,123,456,789));
  33. return 0;
  34. }
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. //drugi zadatak
  49.  
  50.  
  51.  
  52. #include <stdio.h>
  53. #include <stdlib.h>
  54.  
  55.  
  56. int paran(int n)
  57. { if(n<0)
  58. n=-n;
  59. return ((n%2)==0)?1:0; }
  60.  
  61. int pozitivan(int n)
  62. { return (n>0)?1:0; }
  63.  
  64. void serija(int* niz, int n, int(*s)(int), int **pocetak, int *duzina)
  65. {
  66. int trenutni_pocetak=0, pocetak_najduze_serije=0;
  67. int duzina_trenutna =0, duzina_najduze_serije =0;
  68. for(int i=0;i<n;i++)
  69. { if((*s)(niz[i]))
  70. duzina_trenutna++;
  71. else
  72. { duzina_trenutna = 0;
  73. trenutni_pocetak = i+1; }
  74. if(duzina_trenutna > duzina_najduze_serije)
  75. { duzina_najduze_serije = duzina_trenutna;
  76. pocetak_najduze_serije = trenutni_pocetak; }
  77. }
  78. *duzina = duzina_najduze_serije;
  79. *pocetak = niz + pocetak_najduze_serije;
  80. }
  81.  
  82. int main()
  83. {
  84. int n;
  85. printf("Unesite duzinu niza : "); scanf("%d",&n);
  86. int niz[n],*pocetak,duzina;
  87. for(int i=0;i<n;i++)
  88. { printf("Unesite %d. element : ",i+1);
  89. scanf("%d",niz+i); }
  90.  
  91. //Parni
  92. serija(niz,n,paran,&pocetak,&duzina);
  93. printf("\nSerija parnih brojeva :\n");
  94. for(int i=0;i<duzina;i++)
  95. printf("%d ",pocetak[i]);
  96.  
  97. //Pozitivni
  98. serija(niz,n,pozitivan,&pocetak,&duzina);
  99. printf("\nSerija pozitivnih brojeva :\n");
  100. for(int i=0;i<duzina;i++)
  101. printf("%d ",pocetak[i]);
  102.  
  103. return 0;
  104. }
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115. //treci zadatak
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122.  
  123. #include <stdio.h>
  124. #include <stdlib.h>
  125.  
  126. int moj_strlen(char *x)
  127. {
  128. int i=0;
  129. while(x[i]!='\0')
  130. i++;
  131. return i;
  132. }
  133. int moj_atoi(char *str)
  134. {
  135. int suma = 0;
  136. int duzina = moj_strlen(str);
  137. for (int i=duzina-1,stepen=1; i>=0; i--,stepen*=10)
  138. suma+=(str[i]-'0')*stepen;
  139. return suma;
  140. }
  141. char*spoji(char *str1,char *str2)
  142. {
  143. int len1=moj_strlen(str1);
  144. int len2=moj_strlen(str2);
  145. for(int i=0;i<=len2;i++)
  146. str1[len1+i]=str2[i];
  147. return str1;
  148. }
  149. int poredi(const char *x,const char *y)
  150. {
  151. while(*x)
  152. {
  153. if(*x!=*y)
  154. break;
  155. x++;
  156. y++;
  157. }
  158. return *(const unsigned char*)x-*(const unsigned char*)y;
  159. }
  160. int saberi(int b1, int b2)
  161. {
  162. return (b1+b2);
  163. }
  164.  
  165.  
  166. void spoji_saberi(int argc,char *argv[],char*(*dodaj)(char*,char*),int (*saberi)(int,int))
  167. {
  168. int i=1,suma=0;
  169. char* izlaz=(char*)calloc(100,sizeof(char));
  170. if(argc>2)
  171. while(i<argc)
  172. {
  173. if(poredi(argv[i],"-s")==0)
  174. {
  175. i++;
  176. while(i<argc&&(poredi(argv[i],"-b")!=0))
  177. {
  178. izlaz=(*dodaj)(izlaz,argv[i]);
  179. i++;
  180. }
  181. }
  182. else if(poredi(argv[i],"-b")==0)
  183. {
  184. i++;
  185. while(i<argc&&(poredi(argv[i],"-s")!=0))
  186. {
  187. suma=(*saberi)(suma,moj_atoi(argv[i]));
  188. i++;
  189. }
  190. }
  191. else
  192. i++;
  193. }
  194. printf("Suma je : %d\n",suma);
  195. printf("String je : %s\n",izlaz);
  196. }
  197.  
  198. int main(int argc, char *argv[])
  199. {
  200. // 14 char *argv2[] = {"-b", "1", "3", "5", "-s", "2", "4", "6543","-b", "1", "5", "-s","21", "abc"};
  201. spoji_saberi(argc,argv,spoji,saberi);
  202. return 0;
  203. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement