Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * najdenie parnych cisel v jednorozmernom poli
- * datum: 25.10.2011
- */
- #include<stdio.h>
- #include<stdlib.h>
- int parne(int x[], int y[], int pocet){
- int i, parne=0;
- //cyklus prebehne cele pole x
- for(i=0;i<pocet;i++){
- //porovna prvok v poli ci je parny (ziaden zvysok po deleni 2)
- if(x[i]%2==0){
- //ak je najdeny parny prvok, vlozi sa do pola y a zvysi pocet parnych cisel
- y[parne]=x[i];
- parne++;
- }
- }
- /*
- * ak je parnych cisel menej, nez prvkov v poli x (nie vsetky su parne)
- * vlozi na dalsiu poziciu v poli y cislo 1 (pre neskorsie porovnavanie)
- * usetri nam to dalsiu premennu, ktora si bude pamatat pocet parnych cisel
- * (vo funkcii main ich potrebujeme na 2 miestach)
- * takto sme nepatrne znzili pamatove naroky
- */
- if(parne<pocet)
- y[parne]=1;
- return parne;
- }
- int main(void) {
- int pocet, i;
- scanf("%d", &pocet);
- //malokuje miesto pre pole x (vstupne pole) a y (parne cisla)
- int *x=(int *)malloc(pocet * sizeof(int));
- /*
- * pole y moze byt vacsie, nez je treba (ak sa v poli x nachadza aspoj neden neparny prvok)
- * avsak zatial nevieme kolko parnych prvkov pole x bude obsahovat
- * urcite ich ale nebude viac, nez pocet prvkov v poli x
- *
- * ina moznost je, zistti najprv pocet parnych prvkov a potom alokovat miesto pre
- * pole y, to by ale vyzadovalo znovu porovavat prvky pre parnost a vkladat ich do pola y
- *
- * ja som zvolil vykon na ukor pamatovych narokov.
- */
- int *y=(int *)malloc(pocet * sizeof(int));
- //nacita do pola x prvky
- for(i=0; i<pocet; i++)
- scanf("%d", &x[i]);
- printf("Povodne pole: ");
- //vypise povodne pole x
- for(i=0; i<pocet; i++)
- printf("%d ",x[i]);
- //vypise pocet parnych funkcii, ktory ziska ako navratovu hodnotu funkcie parne
- printf("\nPocet parnych prvkov pola: %d\n",parne(x, y, pocet)); /*1*/
- printf("Parne cisla: ");
- //vypise prvky pola y
- //ak sa v poli y nachadza 1, znamena to, ze tam nie je viac parnych prvkov
- for(i=0; y[i]!=1 && i<pocet; i++) /*2*/
- printf("%d ",y[i]);
- printf("\n");
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement