Naći mesto prvog i poslednjeg pojavljivanja datog broja u uređenom nizu brojeva.
Moj kod ide ovako:
#include <stdio.h>
#include <stdlib.h>
main(){
int *a,i,j,n,b,x;
while(1){
int p1=-1,p2=-1;
/* Odredivanje duzine niza */
printf("Unesite duzinu niza: ");scanf("%d",&n);
if(n<=0)break;
/* Stvaranje niza */
a=malloc(n*sizeof(int));
printf("\nA? ");for(i=0;i<n;scanf("%d",&a[i++]));
/* Sortiranje niza */
for (i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j]){b=a[i];a[i]=a[j];a[j]=b;}
/* Unosnje trazenog broja */
printf("\nUnesite broj: ");scanf("%d",&x);
/* Trazenje prvog pojavljivanja u nizu */
for(j=0;j<n;j++)
if(a[j]==x){
p1=j;break;
}
/* Trazenje poslednjeg pojavljivanja u nizu */
for(i=n;i>0;i--)
if(a[i]==x){
p2=i;
break;
}
/* Ispisivanje rezultata */
printf("\n\n");
if(p1!=-1)
printf("Prvo pojavljivanje na mestu br. %d\n",p1);
if(p2!=-1)
printf("Poslednje pojavljivanje na mestu br. %d\n",p2);
if(p1==-1)
printf("Broj se ne pojavljuje u nizu\n");
printf("\n\n");
free(a);
}
}
Šta mi ovde kod koda ne valja?
Konkretno mislim na nalaženje prvog i poslednjeg broja u nizu.
Ne ispisuje mi tačne vrednosti.
Kad se traženi broj pojavljuje prvi i poslednji put u nizu, onda su vrednosti ok. Kad se nalazi na drugim mestima onda ne ispisuje tačne vrednosti.
Nešto nisam otkucao kako valja.
Hvala