milanmetal

T12 Niz, prethodnici negativnog, uvecavanje svakog drugog

Mar 29th, 2016
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.49 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define MAX 20
  4.  
  5. void unosNiza(int *niz, int *velicina);
  6. void ispisNiza(int *niz, int velicina);
  7. int prethodeNegativnom(int niz[], int velicina); // vraca broj prethodnika prvog negativnog clana niza
  8. void uvecajElemente(int niz[], int velicina,  int korak, int mnozilac);
  9. int postojiNegativan(int niz[], int velicina);
  10.  
  11. int main(int argc, char *argv[])
  12. {
  13.   // ISPITNI ZADATAK 3 (TEST 12) E1:
  14.   //
  15.   // Dat je niz A od maksimalno 20 celobrojnih elemenata. Učitati n elemenata niza A. Odrediti broj
  16.   // elemenata niza koji prethode prvom negativnom elementu. Ukoliko je taj broj veći od n/3 svaki
  17.   // drugi element niza A uveća 2 puta. Na kraju program treba da ispiše vrednosti elemenata niza.
  18.  
  19.   int n = 0; // ucitavam n elemenata niza
  20.   int A[MAX];
  21.  
  22.   unosNiza(A, &n);
  23.  
  24.   printf("\n\n\t[[[[Ispis PRE:]]]] \n\n");
  25.   ispisNiza(A, n);
  26.  
  27.   printf("\n\n\tPrvom negativnom clanu prethodi : %d elemenata.\n", prethodeNegativnom(A, n));
  28.   printf("\tn/3 iznosi : %d / 3 = %d \n\n", n, n/3); // debugging purposes
  29.   if(prethodeNegativnom(A, n) > (n/3)) {
  30.     uvecajElemente(A, n, 2, 2); // uvecajElemente(niz, velicina_niza, korak, koliko_puta)
  31.   }
  32.   printf("\n\n\t[[[[Ispis POSLE:]]]] \n\n");
  33.   ispisNiza(A, n);
  34.  
  35.   return 0;
  36.   // main
  37.   // main
  38.   // main
  39.   // main zavrsava ovde.
  40. }
  41.  
  42. void uvecajElemente(int niz[], int velicina,  int korak, int mnozilac) {
  43.   int i = 0;
  44.   for (i = 0; i < velicina; i = i + korak) {
  45.     niz[i] = niz[i] * mnozilac;
  46.   }
  47. }
  48.  
  49. void unosNiza(int *niz, int *velicina) {
  50.   do {
  51.     printf("\n\tKoliko clanova niza zelite uneti? (MAX = %d) :", MAX );
  52.     scanf("%d", velicina);
  53.   } while(*velicina < 1 || *velicina > MAX);
  54.  
  55.   int  i = 0;
  56.   for (i = 0; i < *velicina; i++) {
  57.     printf("\tA[%d] = ", i);
  58.     scanf("%d", &niz[i]);
  59.   }
  60. }
  61.  
  62. void ispisNiza(int *niz, int velicina) {
  63.  
  64.   int  i = 0;
  65.   for (i = 0; i < velicina; i++) {
  66.     printf("\tA[%d] = %d\n", i, niz[i]);
  67.   }
  68. }
  69.  
  70. int postojiNegativan(int niz[], int velicina) {
  71.   int i = 0;
  72.   int negativan = 0; // pretpostavim da ne postoji.
  73.   for (i = 0; i < velicina; i++) {
  74.     if (niz[i] < 0) {
  75.      negativan = 1;
  76.     }
  77.   }
  78.   return negativan;
  79. }
  80.  
  81. int prethodeNegativnom(int niz[], int velicina) {
  82.   int i = 0;
  83.   int prethodi = 0;
  84.   if (postojiNegativan(niz, velicina)) {
  85.     for (i = 0; i < velicina; i++) {
  86.       if (niz[i] >= 0) {
  87.         prethodi++;
  88.       } else {
  89.         break;
  90.       }
  91.     }
  92.     return prethodi;
  93.   } else return prethodi;
  94. }
Advertisement
Add Comment
Please, Sign In to add comment