[ proka_92 @ 26.10.2009. 12:46 ] @
Napisati program kojim se ulazni niz celih brojeva menja tako da na kraju sadrzi samo neparne elemente. Napisati funkcije za unos, stampu i menjanje niza.
Ja sam odradio ovo:
Code:
#include<stdio.h>
void unos(int a[], int n){
     int i;
     for(i=0;i<n;i++){
                      printf("%d. element niza je:",i);
                      scanf("%d",&a[i]);}}
void stampa(int a[], int n){
     int i;
     for(i=0;i<n;i++)
                     printf("%d\n",a[i]);}
void neparni(int a[], int n){
     int i,pom;
     for(i=0;i<n;i++){
                      pom=a[i]%2;
                      if(pom=0){
                                   /*ovde bi trebalo da ide nesto sto ce da menja niz*/}}}
main(){
       int a[100],n,i;
       /*ovde ide pozivanje funkcija uz par printf-ova*/
       }
[ X Files @ 26.10.2009. 13:36 ] @
Funkcija:
void neparni(int a[], int n)
... bi bilo bolje da vraca "int", koji je zapravo broj neparnih elemenata:
int neparni(int a[], int n)

Ukratko, treba ti brojac neparnih elemenata koga ces vratiti kao rezultat funkcije, a koristi ti i da formiras nov niz. Alternativa je da se "n" prosledi kao pokazivac, ali to semanticki nije dobro resenje jer gubis jedan podatak koji moze biti od interesa.

Neki PSEUDO kod, netestiran (taman da se malo potrudis da ga spakujes u funkciju), ide otprilike ovako:
Code:

// ...
int brojac_neparnih=0;

for( i=0; i<n; i++)
{
    if( i % 2 == 1)
    {
        a[brojac_neparnih]=a[i];
        brojac_neparnih++;
    }
}
return brojac_neparnih;
// ...



Takodje, obratu paznju na deo tvog koda (koga i ne morasa vise da koristis):
Umesto:
if(pom=0)
Treba:
if(pom==0)