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

[Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina

[ Pregleda: 2740 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Danijel Bulic
Danijel Bulic
Split

Član broj: 140925
Poruke: 116
*.adsl.net.t-com.hr.



+4 Profil

icon [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina15.01.2010. u 19:44 - pre 173 meseci
Opet ja :D

2. Unesi tri cjelobrojna podatka. U funkciji max pronadji najveci broj. U funkciji As izracunaj arit. sredinu. Najveci broj i arit. sredinu ispisati u fji main.


Code:
#include <stdio.h>
#include <stdlib.h>

int arit (int brojevi[])
{
    int sredina, i;
    sredina = brojevi[i]/2;
    return sredina;
}
int main(int argc, char *argv[])
{
  int podatak[3];
  scanf ("%d\n", podatak);
  printf ("Aritmeticka sredina je %d\n", arit(podatak));
  system("PAUSE");    
  return 0;
}


Mislim da je problem pri unosenju podataka nisam bas ove nizove shvatio ili se ne moze unositi ovako kako sam ja zamislio. I ako nije problem mala uputa za pronalazenje najveceg broja, ne treba pisati f-ju samo uputa.

Hvala
ex. malak
 
Odgovor na temu

Picsel
Beograd

Član broj: 39817
Poruke: 440
95.180.74.*



+7 Profil

icon Re: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina15.01.2010. u 20:05 - pre 173 meseci
Ucitavaj
Code:
scanf("%d %d %d",&podatak[0],&podatak[1],&podatak[2]

ili
Code:
for (i=0; i<3; i++) scanf("%d",&podatak[i])

"[ ]" oznacava poziciju u nizu.

Fali ti ciklus u funkciji koja racuna aritmeticku sredinu, a i posto imas 3 broja, onda delis sa 3, ne sa 2. Takodje, sredina ne mora biti celobrojna, pa za tip ove funkcije i za promenljivu sredina, koristi float/double tip (a i u printf u mainu koristi format za float tip). Ciklus ovako
Code:
for (i=0; i<3; i++)
  sredina+=brojevi[i]/3.0;


Za funkciju max, jednostavno stavi da je na pocetku maximum = podatak[0], a onda proveris za ostale clanove niza da li su veci od maximum. Ako je neki clan veci, onda njega stavis da je maximum, i nastavis sa proverama dok ne dodjes do kraja niza.
U tvom slucaju moze da se odradi i sa par if-ova, bez ciklusa, posto ima samo 3 broja.
 
Odgovor na temu

Danijel Bulic
Danijel Bulic
Split

Član broj: 140925
Poruke: 116
*.adsl.net.t-com.hr.



+4 Profil

icon Re: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina15.01.2010. u 20:53 - pre 173 meseci
Code:
#include <stdio.h>
#include <stdlib.h>

float arit (int brojevi[])
{
    float sredina;
    int i;
    for (i=0;i<3;i++)
    sredina += brojevi[i]/3.0;
    return sredina; 
}
int main(int argc, char *argv[])
{
  int podatak[2],i;
  for (i=0; i < 3; i++)
  scanf ("%d", &podatak[i]);
  printf ("Aritmeticka sredina je %d\n", arit(podatak));
  system("PAUSE");    
  return 0;
}


Evo ga prepravljen ali mi ne racuna dobro sredinu. I zasto + kod sredine, jel to zbog petlje ?
ex. malak
 
Odgovor na temu

Picsel
Beograd

Član broj: 39817
Poruke: 440
95.180.74.*



+7 Profil

icon Re: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina15.01.2010. u 22:38 - pre 173 meseci
Stavi da je sredina=0 na pocetku funkcije.
A float brojevi se ne ispisuju sa %d vec sa %f.

Inace, ako imas tri broja a, b i c, onda je aritmeticka sredina (a+b+c)/3, odnosno sredina=a/3+b/3+c/3. Zato je + kod sredine, stalno dodajes trecinu sledeceg broja u nizu (moglo se i napisati sredina=brojevi[0]/3.0+brojevi[1]/3.0+brojevi[2]/3.0, ili sredina=(brojevi[0]+brojevi[1]+brojevi[2])/3.0).
 
Odgovor na temu

Danijel Bulic
Danijel Bulic
Split

Član broj: 140925
Poruke: 116
*.adsl.net.t-com.hr.



+4 Profil

icon Re: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina16.01.2010. u 11:06 - pre 173 meseci
Zahvaljujem na pomoci, evo ako nekoga bas zanima (u sto ne vjerujem) zavrsen kod.

Code:

#include <stdio.h>
#include <stdlib.h>

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

float arit (int brojevi[])
{
    float sredina = 0;
    int i;
    for (i=0;i<3;i++)
    sredina += brojevi[i]/3.0;
    return sredina; 
}
int main(int argc, char *argv[])
{
  int podatak[3],i;
  for (i=0; i < 3; i++)
  scanf ("%d", &podatak[i]);
  printf ("Aritmeticka sredina je %f\n", arit(podatak));
  printf ("Najveci broj je %d\n", max(podatak));
  system("PAUSE");    
  return 0;
}



[Ovu poruku je menjao malak dana 16.01.2010. u 13:15 GMT+1]
ex. malak
 
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: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina16.01.2010. u 12:44 - pre 173 meseci
U funkciji max koju koristis:
* nigde nemas granicu od 3 elementa
* prvi element si (do EDITA) uvek inicijalizovao sa max
* vracao se iz funkcije jos u prvom koraku

Evo ti tri varijante MAX funkcije:
// NETESTIRANO !!!
Code:

/* varijanta 1: broj elemenata je u samoj funkciji*/
int max1 (int brojevi[])
{
    int i,max;
    max = brojevi[0];
    for (i=1; i<3; i++)
    {
        if ( brojevi[i] >= max )
            max = brojevi[i];
    }
    return max;
}

/* varijanta 2: broj elemenata prosledjujemo kao parametar*/
int max2 (int brojevi[], int n)
{
    int i,max;
    max = brojevi[0];
    for (i=1; i<n; i++)
    {
        if ( brojevi[i] >= max )
            max = brojevi[i];
    }
    return max;
}

/* varijanta 3: ne koristimo uopste petlju, vec uzimamo u obzir sve slucajeve*/
int max3 (int brojevi[])
{
    if ( brojevi[0] >= brojevi[1] && brojevi[0]>= brojevi[2] )
        return brojevi[0];
    else if ( brojevi[1] >= brojevi[2] )
        return brojevi[1];
    else
        return brojevi[2];
}



Kod odredjivanja aritmeticke sredine:
Citat:
Picsel:Inace, ako imas tri broja a, b i c, onda je aritmeticka sredina (a+b+c)/3, odnosno sredina=a/3+b/3+c/3

...strateski bolje je da prvo sve saberes pa podelis sa 3. Manje je racunanja a moze napraviti i razliku u tacnosti reultata u nekim slucajevima (usled zaokruzivanja).

 
Odgovor na temu

Danijel Bulic
Danijel Bulic
Split

Član broj: 140925
Poruke: 116
*.adsl.net.t-com.hr.



+4 Profil

icon Re: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina16.01.2010. u 13:16 - pre 173 meseci
Hvala na ispravci, vidim da sam ja to dobro zakomplicirao. Tek sam kasnije ukapirao da sam prvi element stavio kao max.
ex. malak
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: [Zadatak] Tri cjelobrojna podatka, max i aritmeticka sredina

[ Pregleda: 2740 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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