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

Tabela[] u returnu funkcije

[es] :: C/C++ programiranje :: C/C++ za početnike :: Tabela[] u returnu funkcije

[ Pregleda: 3368 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Jcod3r
Serif Durakovic
Student
IUTA - DUT Informatique

Član broj: 46936
Poruke: 64
*.dsl.club-internet.fr.

Sajt: iuta.univ-lyon1.fr


Profil

icon Tabela[] u returnu funkcije18.12.2007. u 17:30 - pre 171 meseci
Pozdrav !

Kako da napravim fukciju koja trazi max u tabeli?

Code:
#include <stdio.h>
#include <stdlib.h>
#define DIM 20

void Izlaz(char * poruka)
{
    printf("Greska : %s\n", poruka);
    exit(0);    
}

int main(void)
{
    int Tabela[DIM];
    int    i = 0,max=-9,min=99;
    printf("Unesite brojeve : \n");
    
    for(i = 0;i < DIM; i++)
    {
        printf("\t%d : ", i+1);
        scanf("%d", &Tabela[i]);
        if(Tabela[i]<-9 || Tabela[i]>99)
            Izlaz("Unesite brojeve od -9 do 99 !");
    }
    
    printf("\nTabela ima sledece vrijednosti :\n");
    for(i = 0;i < DIM; i++) 
    {
        printf("%d ",Tabela[i]);
        
    }
    for(i = 0; i < DIM; i++)
    {
        if( Tabela[i] > max)
           max = Tabela [i];
    }
    
    for(i = 0;i < DIM;i++)
    {
        if(Tabela[i]<min)
        min = Tabela[i];    
    }
    
    printf("\n\n\tMax vrijednost u tabeli je:  %d\n", max);
    printf("\n\n\tMin vrijednost u tabeli je:  %d\n", min);
    system("pause");
    return 0;
}


I stvarno ne znam zasto nam profa neda da programiramo sa blokovima {}...
Jedno je sigurno, sve je nesigurno :)
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4890
*.dynamic.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+633 Profil

icon Re: Tabela[] u returnu funkcije18.12.2007. u 19:08 - pre 171 meseci
Recimo:
Code:

int max_tabele( int tabela[], int broj_elemenata )
{
   int i, max=0;
   if ( broj_elemenata > 0 )
   {
      max=tabela[0];
      for( i=1; i<broj_elemenata; i++ )
         if( tabela[i]>max)
            max=tabela[i];
   }
   return ( max );
}

i poziv:
Code:

// ...
printf("\n\n\tMax vrijednost u tabeli je:  %d\n", max_tabele(&Tabela[0], DIM) );
// ...


P.S.
Sta je ovo znacilo:
Citat:

I stvarno ne znam zasto nam profa neda da programiramo sa blokovima {}...

Koristio si blokove u svakom slucaju. A ako je pitanje bilo zasto u funkciji a ne u main-u, odgovor je radi vezbanja.

Sto se tice koda:
Code:

    for(i = 0; i < DIM; i++)
    {
        if( Tabela[i] > max)
           max = Tabela [i];
    }
    
    for(i = 0;i < DIM;i++)
    {
        if(Tabela[i]<min)
        min = Tabela[i];    
    }

... on se moze racionalizovati:
Code:

    for(i = 0; i < DIM; i++)
    {
        if(Tabela[i]>max)
           max=Tabela[i];
        if(Tabela[i]<min)
           min=Tabela[i];    
    }

 
Odgovor na temu

Jcod3r
Serif Durakovic
Student
IUTA - DUT Informatique

Član broj: 46936
Poruke: 64
*.dsl.club-internet.fr.

Sajt: iuta.univ-lyon1.fr


Profil

icon Re: Tabela[] u returnu funkcije18.12.2007. u 19:59 - pre 171 meseci
Hvala na odgovoru, nisam znao kako da pozovem tabelu iz funkcije:)

Sto se tice blokova, rekao nam je profa da nikako ne koristimo ako je moguce, jer to samo komplikuje.Tip je unix os orijentirani programer i valjda ima razlog sto nam je to rekao, kao i za funkcije(sto se program podijeli na vise manjih -funkcija- sve je laksi za odrzavanje) :)

Evo jedan od primjera (nisam ga preveo) kako nas uci :
Code:
#include <stdio.h>
#include <stdlib.h>

void termine(char *telMessage)
{
    printf("ERREUR : %s\n",telMessage);
    exit(0);
}/*termine*/

int cetteBase(void)
{
    int leNb=0;
    printf("Saisir un nombre positif : ");
    if (scanf("%d",&leNb)!=1)
        termine("Saisie incorrecte");
    return leNb;
}/*cetteBase*/

void afficherTable(int telBase)
{
    int lIndice=0;
    printf("\t\tTable de multiplication par %d \n",telBase);
    for(lIndice=0;lIndice<=10;++lIndice)
        printf("\t\t\t%2d x %2d = %3d \n",telBase,lIndice,telBase*lIndice);
}

int main(void)
{
    int laBase=0;

    for(laBase=cetteBase();laBase>=0;laBase=cetteBase())
        afficherTable(laBase);
    printf("Au revoir \n");
    system("PAUSE");
    return 0;
}/*main*/


[Ovu poruku je menjao cameleo2401 dana 18.12.2007. u 21:27 GMT+1]
Jedno je sigurno, sve je nesigurno :)
 
Odgovor na temu

heheh
Split

Član broj: 5705
Poruke: 39
*.adsl.net.t-com.hr.

ICQ: 91014514
Sajt: www.heheh.freedothosting...


Profil

icon Re: Tabela[] u returnu funkcije19.12.2007. u 01:15 - pre 171 meseci
jos bi lakse bilo napisat prototip funkcije i pisat ih iza main-a
mislim, dakle jesam...
 
Odgovor na temu

Jcod3r
Serif Durakovic
Student
IUTA - DUT Informatique

Član broj: 46936
Poruke: 64
*.dsl.club-internet.fr.

Sajt: iuta.univ-lyon1.fr


Profil

icon Re: Tabela[] u returnu funkcije19.12.2007. u 21:04 - pre 171 meseci
Citat:
heheh: jos bi lakse bilo napisat prototip funkcije i pisat ih iza main-a:)


Upravi si :)

Nego kako sad da nadjem pored max-a drugi max tj. dva najveci broja u tabeli ???

?
Jedno je sigurno, sve je nesigurno :)
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp15.bih.net.ba.



Profil

icon Re: Tabela[] u returnu funkcije20.12.2007. u 17:18 - pre 171 meseci
Mozes na slijedeci nacin: kreirati varijable max1 i max2, te proslijediti njihove adrese funkciji koja ce na njihova mjesta zapisati ta 2 broja. Tako je po meni lakse nego da u funkciji napravis niz od 2 elementa pa da ih vratis iz funkcije...

Evo funkcije:

Code:


void maximum_tabele(int tabela[], int broj_elemenata, int *max_manji, int *max_veci)
{
 int i;
 
 if (broj_elemenata > 0)
  {
    for(i=0; i < broj_elemenata; i++)
     {
      if(tabela[i] > *max_veci)
       {
        *max_manji = *max_veci;
        *max_veci = tabela[i];
       }
      else 
       if(tabela[i] > *max_manji)
       {
        *max_manji = tabela[i];
       }
     }
  }
}



Par samo savjeta sto se tice preglednosti, posveti malo paznje estetici pisanja koda, preglednosti. Malo sam uredio main() funkciju, ovo je naravno samo moj nacin koji se razlikuje od programera do programera, tako da nista ne uzimas zdravo za gotovo, samo pokusavam pomoci...

Code:


int main(void)
{
    int Tabela[DIM];
    int i = 0, max = -9, min = 99;
    printf("Unesite brojeve : \n");
    
    for(i = 0; i < DIM; i++)
    {
     printf("\t%d : ", i+1);
     scanf("%d", &Tabela[i]);
      
      if(Tabela[i] < -9  ||  Tabela[i] > 99)
       Izlaz("Unesite brojeve od -9 do 99 !");
    }
    
    printf("\nTabela ima sledece vrijednosti :\n");
    for(i = 0; i < DIM; i++) 
     printf("%d ", Tabela[i]);
    
    
    // kreiranje varijabli max1 i max2
    int max_manji = -9, max_veci = -9;
    
    //pozivanje funkcije sa adresama  
    maximum_tabele(&Tabela[0], DIM, &max_manji, &max_veci);
    
    
    for(i = 0; i < DIM; i++)
     if(Tabela[i] < min)
      min = Tabela[i]; 
    
    printf("\nTabela ima sledece vrijednosti :\n");
    for(i = 0; i < DIM; i++) 
     printf("%d ", Tabela[i]);
    
    printf("\n\n\tMax_manji u tabeli je:  %d\n", max_manji);
    printf("\n\n\tMax_veci u tabeli je:  %d\n", max_veci);
    printf("\n\n\tMin vrijednost u tabeli je:  %d\n", min);
    
    system("pause");
    return 0;
}



I da, sto se tice naredbe system("pause"), imas je na kraju main(), ali je nemas na kraju Izlaz(). Ako je vec koristis na kraju main() (ne znam u koje svrhe, osim pauziranja programa na kraju izvrsavanja, jer XP samo zatvori prozor ako nema ono Press any key...), treba ti i na kraju Izlaz():

Code:


void Izlaz(char * poruka)
{
    printf("Greska : %s\n", poruka);
    system("pause");
    exit(0);    
}



P.S sve savjete dajem u najboljoj namjeri, ali nisam u zivotu kompajlirao linije koda eksplicitno za C, samo za C++, ipak mislim da bi trebalo da radi :=)
 
Odgovor na temu

Jcod3r
Serif Durakovic
Student
IUTA - DUT Informatique

Član broj: 46936
Poruke: 64
*.dsl.club-internet.fr.

Sajt: iuta.univ-lyon1.fr


Profil

icon Re: Tabela[] u returnu funkcije20.12.2007. u 21:57 - pre 171 meseci
Hvala na velikom trudu u paznji posveceno mom pitanju :)
Jedno je sigurno, sve je nesigurno :)
 
Odgovor na temu

Sephiroth?
Balkan @ net

Član broj: 79406
Poruke: 82
*.bi2.dlp3.bih.net.ba.



Profil

icon Re: Tabela[] u returnu funkcije20.12.2007. u 23:17 - pre 171 meseci
I slijedeci put... That's why we are here for...
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Tabela[] u returnu funkcije

[ Pregleda: 3368 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

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