Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pronalazenje elementa niza.

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pronalazenje elementa niza.

[ Pregleda: 2823 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
93.87.50.*



+4 Profil

icon Pronalazenje elementa niza.26.10.2010. u 15:44 - pre 164 meseci
Pozdrav svima!Zadatak je sledeci:Napisati program kojim se u datom nizu a[10] pronalazi element jednak vrednosti "dati_broj" i prikazuje na ekranu njegov indeks.
Evo ga resenje koje meni koji sam poceo da ucim nizove ne znaci mnogo pa bih Vas zamolio da mi objasnite odredjene linije programa:
Code:

#include<stdio.h>
static int a[]={0,0,0,0,0};
int i,dati_broj,indeks=-1;<----------------------------zasto je promenljivoj "indeks" zadata vrednost -1?

main()
{

 printf("\nUnesi niz od 5 brojeva: \n");<----------------cemu ovo kada se u zadatku trazi niz koji ima 10 elemenata???


  for(i=o,i<=4,i++);<-------------------ovo kapiram

   {

   printf("\n%d",i);<------------------------kapiram

   scanf("%d",&a[i]);<---------------------??????????

   }

   printf("Unesi broj koji trazimo u nizu:");<--------------jasno

   scanf("%d",&dati_broj);<-------------------------jasno

   i=0;<------------------------jasno,prva vrednost brojaca je 0

  do

     if(a[i]==dati_broj)indeks=i;-----------------------???????

     i++;

    }

  while(i<=4 && indeks<0);<----------------------???????????
  
    if(indeks>=0)<----------------------------------???????????

    printf("\nIndeks unetog broja je:%d",indeks);

 else

    printf("\nU nizu nema odgovarajuceg broja\n");
 }
  



Unapred hvala!
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Pronalazenje elementa niza.26.10.2010. u 16:18 - pre 164 meseci
Redni broj u nastavku teksta je redni broj strelice u kodu:

1. Vrednost -1 za index je specijalna vrednost koja označava da broj nije pronađen. Ako je broj pronađen onda će vrednost promenljive index biti indeks tog broja (to jest imaće vrednost od nule na više)

2. Program je napisan za zadatak sa pet brojeva, a ne sa deset. U nekoliko mesta u kodu se to vidi.

...

5. Tako se u niz "a" na mestu "i" upisuje vrednost pomoću funkcije scanf. Funkciji scanf mora da se daje adresa promenljive, da bi funkcija scanf mogla nešto da upiše u tu adresu. Operator & služi da vrati adresu onoga što ide posle, ali sudeći po tački 7 to ti je već jasno. Možda je jasnije kad se dodaju zagrade: &(a[ i ]).

...

9. Ako je pronađen broj onda se indeks tog broja čuva u promenljivoj index.

10. Petlja se vrti pet puta (od 0 do 4), ali se izlazi iz petlje i pre kraja ako je broj pronađen (to jest index prestane da bude -1).

11. Ako je broj pronađen (index >= 0) onda napiši pod kojim je indeksom, a ako nije onda napiši da nije pronađen.
 
Odgovor na temu

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
93.87.50.*



+4 Profil

icon Re: Pronalazenje elementa niza.28.10.2010. u 01:14 - pre 164 meseci
Hvala Mihajlo!Ali opet me nešto muči:u pragramu se kaže da se unese niz od 5 broja:

printf("\nUnesi niz od 5 brojeva: \n")

for(i=o,i<=4,i++);

{

printf("\n%d",i);

scanf("%d",&a);

Šta bi se desilo ako bih upisao u nizu brojeve veće od 4?npr.10,11,12,13,79.Ne mogu da vidim kako se program izvršava jer ne mogu da ga pokrenem u dev-c++,evo gde je greška:



Zbog čega je ovde problem?I da ponovim pitanje,da li niz mora da ima iskljucivo brojeve manje ili jednake sa 4?

POZDRAV!
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.mbb.telenor.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Pronalazenje elementa niza.28.10.2010. u 01:42 - pre 164 meseci
i bi trebalo da bude jednako nuli na pocetku, a ne slovu o.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
93.87.50.*



+4 Profil

icon Re: Pronalazenje elementa niza.28.10.2010. u 02:01 - pre 164 meseci
Jes' vala.A šta je sada ovo???Sada je ovde sigurno nula
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.mbb.telenor.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Pronalazenje elementa niza.28.10.2010. u 02:02 - pre 164 meseci
nemas ; posle scanf funkcije.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
93.87.50.*



+4 Profil

icon Re: Pronalazenje elementa niza.28.10.2010. u 02:14 - pre 164 meseci
OK;) A sada?Blizu je kraj

 
Odgovor na temu

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
93.87.50.*



+4 Profil

icon Re: Pronalazenje elementa niza.28.10.2010. u 02:21 - pre 164 meseci
Sada je bila problem zagrada i sada program radi,ali evo kako to izgleda :


Ovakvo izvršavanje nema veze sa mozgom!

I sta je sada ovo???


[Ovu poruku je menjao Novice93 dana 28.10.2010. u 03:47 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pronalazenje elementa niza.28.10.2010. u 07:14 - pre 164 meseci
Code (c):

#include <stdio.h>
#include <stdlib.h> // <--- Potrebno zbog: system( "PAUSE" );

// Kada u kodu na vise mesta imamo KONSTANTU treba to tako i definisati...
// Konkretno, imamo 5 elemenata, pa kasnije neku vrednost 4, za koju se ne
// zna da li je i u kakvoj je vezi sa brojem 5. Kada se uvede konstanta,
// onda je sve jasno
#define BROJ_ELEMENATA 5

// Ovako kaze standard:
// * treba da ima povratnu vrednost (int),
// * eksplicitno reci da nema argumente (void), ako nema argumente
int main( void )
{
    // static int a[] = { 0, 0, 0, 0, 0 };
    // nepotrebno:
    // 1. da bude VAN glavne funkcije main
    // 2. da bude static
    // 3. da bude incijalizovano, jer cemo svakako samim unosom dodeliti vrednosti
    // ZATO PISEMO:
    int a[BROJ_ELEMENATA];
    int i, dati_broj, indeks=-1;

    printf( "\nUnesi niz od 5 brojeva:\n" );

    // dakle, od i=0 do i<BROJ_ELEMENATA, nista CETVORKA

    //for( i=0; i<BROJ_ELEMENATA; i++ ); // <--- NIKAKO TACKA ZAREZ, JER SE PETLJA VRTI "U MESTU", NE UZIMA BLOK U OBZIR !!!!!!!!
    for( i=0; i<BROJ_ELEMENATA; i++ )
    {
         // printf( "\n%d", i );
         // Jasnije reci sta je na ekranu
         printf( "Unesite %d. broj:", i+1 ); // <--- stavili smo i+1, da bi na ekranu brojanje pocelo od JEDINICE:
         scanf( "%d", &a[i] );
    }

   printf( "Unesi broj koji trazimo u nizu:" );
   scanf( "%d", &dati_broj );

   // "i" inicijalizujemo na pocetnu vredost, jer nakon "for" petlje, vise nije NULA
   i=0;

   do
   {
       if( a[i] == dati_broj )
           indeks = i; // <--- ovime smo (ako je uslov ispunjen) definitivno dodelili vrednost vecu od -1 (minimalna vrednost indeksa je nula)
       i++;
   } while ( i < BROJ_ELEMENATA && indeks < 0 );
 
    if ( indeks >= 0 )
        printf("\nIndeks unetog broja je:%d.\n", indeks ); // <--- dodat prelaz u drugi red
    else // <--- ako je ostalo -1, jer trazeni broj nije pronadjen u listi unetih
        printf("\nU nizu nema odgovarajuceg broja.\n");
   
    system( "PAUSE" );
    return EXIT_SUCCESS;
   
}
 

 
Odgovor na temu

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
*.dialup.neobee.net.



+4 Profil

icon Re: Pronalazenje elementa niza.30.10.2010. u 01:17 - pre 164 meseci
Hvala Vladimire!Ja se izvinjavam zbog svoje gluposti ,ali moze li mi neko objasniti cemu ova petlja for:
for( i=0; i<BROJ_ELEMENATA; i++ )
{
printf( "\n%d", i );
printf( "Unesite %d. broj:", i+1 );
scanf( "%d", &a );
i zasto posle toga ponovo inicijalizujemo i=0?
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
*.dynamic.sbb.rs.

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Pronalazenje elementa niza.30.10.2010. u 01:44 - pre 164 meseci
Sluzi da se unese niz brojeva iz kojih ce se kasnije izvlaciti element niza.
Ako si potpuni pocetnik u C-u najbolje je da pogledas top temu na ovom forumu i ovaj tutorijal.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
93.87.50.*



+4 Profil

icon Re: Pronalazenje elementa niza.30.10.2010. u 17:44 - pre 164 meseci
Ma shvatio sam jos nocas kada sam postovao,hteo sam da obrisem post,medjutim izmena nije dozvoljena nocu valjda.Znas kako,programiranje ucim iz uzbenika za 2.razred elektrotehnicke skole.Knjiga je (po meni) jako lose napisana,bar sto se tice prakticnog dela dok je teorija na mestu.O tome govori i ova tema odnosno resenje zadatka ciji sam kod prepisao u prvom postu iz iste.Da mi "X Files" nije uradio prepravku koda,nikada ne bih ni ukapirao,zasto?Pa zato jer program pisan na osnovu koda iz knjige NE RADI!Imas okacenu sliku.A da sam pocetnik,jesam,to govori i moj nick ,ono,jos sam beba koja nije prohodala ,ali se trudim i uporan sam.
Prirucnik sam skinuo kao i knjigu u pdf-u "C programski jezik" i ljudi,sta da vam kazem sem hvala!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.dynamic.sbb.rs.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Pronalazenje elementa niza.30.10.2010. u 18:18 - pre 164 meseci
Citat:

Code:

for( i=0; i<BROJ_ELEMENATA; i++ )
{
   printf( "\n%d", i );
   printf( "Unesite %d. broj:", i+1 );
   scanf( "%d", &a );

i zasto posle toga ponovo inicijalizujemo i=0?


"for" petlja sadrzaj bloka {...} izvrsava odredjeni broj puta, pri cemu se u konkretnom primeru promenljiva "i" svaki put uvecava za jedan.

U prvom prolazu u petlji, vrednost i=0, u drugom prolazu i=1, ... , u poslednjem prolazu i=4. A kad petlja zavrsi svoj rad i program nastavi da se izvrsava, "i" ce imati cak vrednost 5 (da ne detaljisem zasto), i kao takva ce biti vidljiva u nastavku programa.

E sad, sledi ovaj kod (zapamti da i=5), i pretpostavi da NISMO inicijalizovali i na NULU:

Code:

   do
   {
       if( a[i] == dati_broj )
           indeks = i; // <--- ovime smo (ako je uslov ispunjen) definitivno dodelili vrednost vecu od -1 (minimalna vrednost indeksa je nula)
       i++;
   } while ( i < BROJ_ELEMENATA && indeks < 0 );


Ideja je da krenemo od prvog do poslednjeg elementa i pronadjemo indeks vrednosti, ako se ona nalazi negde u nizu.

Ako je i=5, (a tako je ostalo odranije) onda algoritam nece raditi jer treba krenemo od prvog (0) do polsednjeg (BROJ_ELEMENATA-1) broja. Testiraj sam.


Ovo oko petlji i promenljivih je bas jesnostavno. Napravi razliku izmedju:
1. deklaracije (uvodjenja promenljive u "igru", radi se samo jednom u bloku):
int i;

2. inicijalizacije (po potrebi):
i=10;

3. deklaracije + inicijalizacije (radi se uz deklaraciju)
int i=10;


Ovo pod 1 ili 3 se moze desiti recimo na pocetku bloka:
Code:

int main( void )
{
   int i;
   int j=0;

   // ...
}


ili (u C++) recimo cak uz "for":

Code:

int main( void )
{
   // ...
   for ( int i=0; i<10; i++ )
   {
      // ...
   }
}


U C jeziku, "for" po standardu ne dozvoljava direknu deklaraciju, pa ostaje samo inicijalizacija:
Code:

int main( void )
{
   int i;
   // ...
   for ( i=0; i<10; i++ )
   {
      // ...
   }
}



[Ovu poruku je menjao X Files dana 30.10.2010. u 19:30 GMT+1]
 
Odgovor na temu

Novice93
ucenik
SMF

Član broj: 270667
Poruke: 12
93.87.50.*



+4 Profil

icon Re: Pronalazenje elementa niza.30.10.2010. u 20:49 - pre 164 meseci
Jasno!Evo kako sada programcic sljaka:


Dakle,indeks prvog elementa je nula,drugog 1 i u ovom slucaju treceg 2.
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Pronalazenje elementa niza.

[ Pregleda: 2823 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.