Advertisement
BlueBear

parnost.c

Mar 25th, 2014
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.06 KB | None | 0 0
  1. /*
  2.  *  najdenie parnych cisel v jednorozmernom poli
  3.  *  datum: 25.10.2011
  4.  */
  5.  
  6. #include<stdio.h>
  7. #include<stdlib.h>
  8.  
  9. int parne(int x[], int y[], int pocet){
  10.     int i, parne=0;
  11.  
  12.     //cyklus prebehne cele pole x
  13.     for(i=0;i<pocet;i++){
  14.         //porovna prvok v poli ci je parny (ziaden zvysok po deleni 2)
  15.         if(x[i]%2==0){
  16.             //ak je najdeny parny prvok, vlozi sa do pola y a zvysi pocet parnych cisel
  17.             y[parne]=x[i];
  18.             parne++;
  19.         }
  20.     }
  21.     /*
  22.     * ak je parnych cisel menej, nez prvkov v poli x (nie vsetky su parne)
  23.     * vlozi na dalsiu poziciu v poli y cislo 1 (pre neskorsie porovnavanie)
  24.     * usetri nam to dalsiu premennu, ktora si bude pamatat pocet parnych cisel
  25.     * (vo funkcii main ich potrebujeme na 2 miestach)
  26.     * takto sme nepatrne znzili pamatove naroky
  27.     */
  28.     if(parne<pocet)
  29.         y[parne]=1;
  30.  
  31.     return parne;
  32. }
  33.  
  34. int main(void) {
  35.     int pocet, i;
  36.    
  37.     scanf("%d", &pocet);
  38.    
  39.     //malokuje miesto pre pole x (vstupne pole) a y (parne cisla)
  40.     int *x=(int *)malloc(pocet * sizeof(int));
  41.    
  42.     /*
  43.     * pole y moze byt vacsie, nez je treba (ak sa v poli x nachadza aspoj neden neparny prvok)
  44.     * avsak zatial nevieme kolko parnych prvkov pole x bude obsahovat
  45.     * urcite ich ale nebude viac, nez pocet prvkov v poli x
  46.     *
  47.     * ina moznost je, zistti najprv pocet parnych prvkov a potom alokovat miesto pre
  48.     * pole y, to by ale vyzadovalo znovu porovavat prvky pre parnost a vkladat ich do pola y
  49.     *
  50.     * ja som zvolil vykon na ukor pamatovych narokov.
  51.     */
  52.     int *y=(int *)malloc(pocet * sizeof(int));
  53.  
  54.    
  55.     //nacita do pola x prvky
  56.     for(i=0; i<pocet; i++)
  57.         scanf("%d", &x[i]);
  58.  
  59.  
  60.     printf("Povodne pole: ");
  61.     //vypise povodne pole x
  62.     for(i=0; i<pocet; i++)
  63.         printf("%d ",x[i]);
  64.    
  65.  
  66.     //vypise pocet parnych funkcii, ktory ziska ako navratovu hodnotu funkcie parne
  67.     printf("\nPocet parnych prvkov pola: %d\n",parne(x, y, pocet)); /*1*/
  68.    
  69.     printf("Parne cisla: ");
  70.     //vypise prvky pola y
  71.     //ak sa v poli y nachadza 1, znamena to, ze tam nie je viac parnych prvkov
  72.     for(i=0; y[i]!=1 && i<pocet; i++) /*2*/
  73.         printf("%d ",y[i]);
  74.        
  75.     printf("\n");
  76.  
  77.     getchar();
  78.  
  79. return 0;
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement