[ Milos88_vkbgd @ 10.11.2010. 01:47 ] @
Code:

#include<stdio.h>
void main(void)
{
  int n,i,max,maxpoz=0,x[30];

  printf("\n Broj elemenata celobrojnog niza X je:");
  scanf("%d",&n);

  printf("\n Unesite niz X:\n\n");
  for(i=0;i<n;i++)
    scanf("%d",&x);

  max=x[0];
  for(i=0;i<n;i++)
    if(x>max)
    {
      max=x;
      maxpoz=i;
    }

  printf("\n\n\t %d. element niza je maksimalan \n",maxpoz+1);
  printf("\t Xmax=%d \n",max);

  system("PAUSE");
}


Uradio sam da na osnovu koliko clanova niza imamo i na osnovu brojeva niza koje ukucam, program ispise poruku na ekranu koji je clan niza maximalan, tj. najveci. Medjutim kada u nizu ponovim 2 ili vise puta isti maximum, program samo ispisuje da je prva cifra maximum, za ostale ne. Da li moze neko da mi objasni sta da popravim/dodam?

Unapred zahvalan.

[Ovu poruku je menjao Mihajlo Cvetanović dana 10.11.2010. u 10:01 GMT+1]
[ Mihajlo Cvetanović @ 10.11.2010. 09:04 ] @
Ako hoćeš da ispišeš sve indekse sa datom vrednošću onda ti treba for petlja. Ako je dati element niza jednak datoj vrednosti onda ispiši indeks elementa. U takvoj situaciji ti ne treba maxpoz.
[ X Files @ 10.11.2010. 09:24 ] @
Ne zaboravi da je x niz:
Citat:

Code:

  for(i=0;i<n;i++)
    scanf("%d",&x);


...pa bi i linija za unos trebalo da glasi scanf("%d",&x[ i ]);. Opet, da istina bude kompletna, u knjigama se savetuje i izbacivanje znaka ampersand (&) kada je unos elemenata nekakvog niza u pitanju, jer je to "interno" već pokazivač...

Slično tome:
Citat:

Code:

  max=x[0];
  for(i=0;i<n;i++)
    if(x>max)
    {
      max=x;
      maxpoz=i;
    }


... if(x[ i ]>max). Dalje, ako si PRVI element niza proglasio za MAX (max=x[0];), onda petlja moze da krene od 1, a ne od 0. Ovo napominjem zbog poštovanja ideje odabranog algoritma, a svejedno, program će raditi u oba slučaja. Sledeće, maxpoz=i; je suvisno (ukloniti i iz deklaranice sa inicijalizacijom), jer se kasnije na osnovu Mihajlovog odgovora ispisuju sve MAX vrednosti, uporedjivanjem sa onim jednim pronadjenim MAX .

Tj, potrebna ti je petlja za prolazak od "pocetka do kraja" niza (kao kod unosa ili odredjivanja jedne maksimalne vrednosti). Kada se trenutna vrednost niza poklopi sa maksimalnom, onda je samo ispises. Tako ce biti ispisane sve maksimalnih vrednosti.

I na kraju, jos jedan savet - algoritam za odredjivanje jedne max vrednosti se moze smestiti i u petlji za unos podataka, ali ako se radi o klasicnim skolskim zadacima, bolje nemoj komplikovati...




[Ovu poruku je menjao X Files dana 10.11.2010. u 10:34 GMT+1]