Zadatak u C-u

poruka: 58
|
čitano: 11.408
|
moderatori: Lazarus Long, XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Zadatak u C-u

Molim vas, možete li mi pomoći, dobio sam ovaj zadatak za sutra a početnik sam u programiranju pa ako bi mi tko mogao pomoći?

zadatak je:

 

Napisati program u kojem korisnik unosi vrijednosti prosječnih dnevnih temperatura zraka za određeni vremenski period. Ako se unese vrijednost manja od -50 ili veća od +50, korisnik dobiva mogućnost da upiše 0, 1 ili 2, gdje će 0 značiti da želi prekinuti unos (break), 1 da želi stvarno iskoristiti tu temperaturu, a 2 da je krivo upisao temperaturu te da želi nastaviti s unosom (continue). Potrebno je ispisati ukupan broj dana u razdoblju te najveću, najmanju i prosječnu vrijednost temperature u danom periodu.
Za zadani program nacrtati dijagram toka.

 
0 0 hvala 0
15 godina
protjeran
offline
Zadatak u C-u

Još samo nisi napisao i glazbenu želju. I dobro, koji dio ovog zadatka ti nije jasan? Dokle si stigao pa ne znaš dalje?

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
RE: Zadatak u C-u

Zadatak sam samo copy-paste.

Ne znam kako da napravim dio zadatka gdje dobivam mogućnosti odabira 1,2,3 tj. ako upotrijebim naredbu break preskače mi daljnje izvođenje.

Ne treba mi glazbena a ni dijagram toka, to je lako napraviti, vec sam napravio.

16 godina
neaktivan
offline
RE: Zadatak u C-u
stjepan0072 kaže...

Zadatak sam samo copy-paste.

Ne znam kako da napravim dio zadatka gdje dobivam mogućnosti odabira 1,2,3 tj. ako upotrijebim naredbu break preskače mi daljnje izvođenje.

Ne treba mi glazbena a ni dijagram toka, to je lako napraviti, vec sam napravio.

Što preskače? Ako misliš da izlazi iz petlje, to je i smisao. Daj kod koji si napisao ovdje.
16 godina
offline
RE: Zadatak u C-u

Kako si postavio uvjete?? Kad zelis nesto izjednaciti koristis "==" mozda si to zaboravio... Samo daj kod koji sada imas pa cemo smislit nesto :)

16 godina
neaktivan
offline
Zadatak u C-u

Obično dajem udicu, a ne ribu, ali eto... ovo je na brzinu. Možda nije 100% najbolje, ali provjeri.

int main()
{
    volatile int flag=0;
    int total = 0;
    int tmax = -500;
    int tmin = 500;
    int tavg = 0;
    int ttmp = 0;
    int cntn = 0;
    int menu = 0;
    while(flag==0)
    {
        scanf("%d", &ttmp);
        if(ttmp>50 || ttmp <-50)
        {
            printf("unijeli ste preveliku brojku, odaberite akciju (0.kraj, 1.prihvati, 2.ponovno):\n ");
            scanf("%d", &menu);
            if(menu == 0) {flag = 1; break;}
            if(menu == 2) {  printf("ponovno: ");scanf("%d", &ttmp);}
        }
        cntn++;
        total += ttmp;
        if(ttmp>tmax || cntn == 0) tmax = ttmp;
        if(ttmp<tmin || cntn == 0) tmin = ttmp;
        tavg = total/cntn;
    }
    printf("tdays: %d\n", cntn);
    printf("tmax: %d\n", tmax);
    printf("tmin: %d\n", tmin);
    printf("tavg: %d\n", tavg);
    system("pause");
    return 0;
}

LOL @ http://www.youtube.com/watch?v=Y_uCjnuY9D4
Moj PC  
0 0 hvala 0
15 godina
protjeran
offline
Zadatak u C-u

ja bih ipak maknuo "volatile" jer to samo može izazvati grešku. i mislim da je greška što mu se ponudilo gotovo rješenje a da nije sa svoje strane pokazao nikakav rad i trud.

Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Zadatak u C-u

dečki hvala ali ja sam početnik i prvi put čujem naredbu volatile.

rješio sam na drugi način pomoću if naredbi.

radio sam u virtualnom linuxu pa ne mogu kopirati kod daa vidite.

koju okolinu vi koristite za programiranje u C-u u Windowsima?

 
0 0 hvala 0
16 godina
offline
RE: Zadatak u C-u

Mi smo na faksu radili u dev c++. Link-- http://www.bloodshed.net/devcpp.html

15 godina
neaktivan
offline
RE: Zadatak u C-u

volatile upozorava da se neki podatak može promjeniti u programu bez
upozorenja.

Označava nestabilnost objekta koji može biti promjenjen izvana bez upozorenja.
Sintaksa za volatile je ista kao i za const
volatile se stavlja u program kod prekidnih rutina kao u tvom programu .

Inače se u praksi "izbjegava".

Private
Poruka je uređivana zadnji put pon 2.3.2009 22:06 (Private).
15 godina
protjeran
offline
RE: Zadatak u C-u
Private kaže...

volatile upozorava da se neki podatak može promjeniti u programu bez
upozorenja.

Označava nestabilnost objekta koji može biti promjenjen izvana bez upozorenja.
Sintaksa za volatile je ista kao i za const
volatile se stavlja u program kod prekidnih rutina kao u tvom programu .

Inače se u praksi "izbjegava".

Uopće se ne slažem.

 

1) volatile nema ulogu prometnog znaka i nikoga na ništa ne upozorava niti je to njegova primarna namjena. Ako se na nešto želiš upozoriti napišeš si komentar sa strane, jer niti si išta posebno upozoren na one varijable koje nemaju volatile.

 

2) volatile nema veze s "nestabilnošću objekta" jer takvo što kao pojam u programiranju ne postoji.

 

3) prekidna rutina nije naredba if, niti se volatile koristi kod prekidnih rutina.

 

volatile predstavlja podatak ili objekt koji se može promijeniti od strane operacijskog sustava, sklopovlja ili na bilo koji drugi način nepoznat prevoditelju.

Koristi se npr. tamo gdje se radi sa dijeljenom memorijom kojoj može pristupiti više procesa. Prilikom pristupa takvom podatku prevoditelj neće raditi pretpostavku o njegovom sadržaju jer je možda već u međuvremenu izmjenjen, već će nanovo zatražiti provjeru vrijednosti. Ovo će jako loše utjecati na moguće optimizacije i zato se u praksi izbjegava.

15 godina
neaktivan
offline
Zadatak u C-u

Tracer, negdje sam procitao da si napisao knjigu o programiranju, koji je tocno naslov te knjige, i da li je ima u pdf formatu? Gdje se može kupiti?

 
0 0 hvala 0
16 godina
neaktivan
offline
Zadatak u C-u

Moram se ispričati za pomutnju koja je stvorena. Onaj volatile gore je njemu posve nepotreban (neće stvarati probleme). Stavio sam ga mehanički jer sam imao nešto skroz deseto na umu s ovom petljom, a kod sam pisao u par minuta u notepadu i slagao ga navrat na nos.

Isprika još jednom.

LOL @ http://www.youtube.com/watch?v=Y_uCjnuY9D4
Poruka je uređivana zadnji put uto 3.3.2009 0:18 (naxeem).
Moj PC  
0 0 hvala 0
15 godina
neaktivan
offline
Zadatak u C-u

ja cu sutra prepisati kod kojim sam ja napravio, pa da vidite.

 
0 0 hvala 0
15 godina
protjeran
offline
RE: Zadatak u C-u
stjepan0072 kaže...

Tracer, negdje sam procitao da si napisao knjigu o programiranju, koji je tocno naslov te knjige, i da li je ima u pdf formatu? Gdje se može kupiti?

15 godina
neaktivan
offline
RE: Zadatak u C-u

Samo nisam htio ići u detalje ali eto išao si ti ,a kad već sve spomeneš detalje,volatile se upotrbeljava i pri sistemskom
programiranju i podaci se dakle ne upisuju u registar(jer spominješ djeljenu memoriju pa eto).. jer se radi o objektu koji se u svaki trenutak može promijeniti.
Mislim da nisam ništa loše rekao o volatile .A citirao  sam bar u dvije rečenice autore knjiga a pobijajući mene pobijaš i njih.Strašan si!

I ja se ispričavam(autoru) što sam uopće nešto reko o volatile jer bilo je to brzopleto od mene ali eto.

Private
Poruka je uređivana zadnji put uto 3.3.2009 5:59 (Private).
15 godina
protjeran
offline
RE: Zadatak u C-u
Private kaže...

Samo nisam htio ići u detalje ali eto išao si ti ,a kad već sve spomeneš detalje,volatile se upotrbeljava i pri sistemskom
programiranju i podaci se dakle ne upisuju u registar(jer spominješ djeljenu memoriju pa eto).. jer se radi o objektu koji se u svaki trenutak može promijeniti.
Mislim da nisam ništa loše rekao o volatile .A citirao  sam bar u dvije rečenice autore knjiga a pobijajući mene pobijaš i njih.Strašan si!

I ja se ispričavam(autoru) što sam uopće nešto reko o volatile jer bilo je to brzopleto od mene ali eto.


Naravno da sam strašan, a možda ćeš i ti biti jednog dana kada napokon budeš znao programirati i ne budeš krivo učio ljude Namigiva. Ja barem znam i razumijem ono o čemu pišem a ti očito ne znaš tuđe niti prepisati kako spada.
Poruka je uređivana zadnji put uto 3.3.2009 10:09 (Tracer).
15 godina
neaktivan
offline
RE: Zadatak u C-u
Tracer kaže...
stjepan0072 kaže...

Tracer, negdje sam procitao da si napisao knjigu o programiranju, koji je tocno naslov te knjige, i da li je ima u pdf formatu? Gdje se može kupiti?

Jooj, pa ja sam dobio prvo izdanje te knjige... Iz nje sam se naucio pogresno izrazavati... 
Prvo i osnovno, za scanf i printf se nikako ne moze reci da su naredbe. To su funkcije. Cin i cout takodjer nisu naredbe nego objekti. To su prve dvije stvari koje mi padaju na pamet, samim pogledom na kazalo.
Ali svaka cast, ja se nikada ne bih mogao natjerati i napisati knjigu i sigurno bih napravio vise pogresaka. 
S štovanjem, brahle!
15 godina
protjeran
offline
RE: Zadatak u C-u
brahle kaže...
Tracer kaže...
stjepan0072 kaže...

Tracer, negdje sam procitao da si napisao knjigu o programiranju, koji je tocno naslov te knjige, i da li je ima u pdf formatu? Gdje se može kupiti?

Jooj, pa ja sam dobio prvo izdanje te knjige... Iz nje sam se naucio pogresno izrazavati... 
Prvo i osnovno, za scanf i printf se nikako ne moze reci da su naredbe. To su funkcije. Cin i cout takodjer nisu naredbe nego objekti. To su prve dvije stvari koje mi padaju na pamet, samim pogledom na kazalo.
Ali svaka cast, ja se nikada ne bih mogao natjerati i napisati knjigu i sigurno bih napravio vise pogresaka. 
 Znam da sam negdje u knjizi baš pisao o ovome ali se ne mogu sjetiti gdje. Uglavnom, naravno da scanf i printf su funkcije ali nije pogrešno reći niti da su naredbe. Štoviše, početniku će biti lakše u tom dijelu knjige shvatiti pojam "naredba" nego "funkcija" i iz tog razloga sam tako pisao jer se i tim terminologijama služe u početnim fazama školovanja. Isto vrijedi i za cin i cout. Kasnije kako napreduješ jasno ćeš početi razlikovati funkcije i objekte.

I naravno, zahvaljujem na primjedbama ;) Moguće je uvijek da ima grešaka i tu nema previše pomoći ako ih na vrijeme ne primjetim, ali većinu tih stvari sam ispravio za 2. izdanje.

EDIT:
I samo da napomenem, apsolutno svaka primjedba je dobrodošla, pa čak bila ona i zlonamjerna i sve ih možete poslati na mail zeljko.kovacevic@tvz.hr

jer svakako mi je u interesu da zbog svih vas ispravim sve eventualne pogreške, bile one terminološke ili stručne jer bez obzira na sav svoj trud i trud mojih recezenata uvijek se može dogoditi propust.
Poruka je uređivana zadnji put uto 3.3.2009 13:03 (Tracer).
16 godina
neaktivan
offline
Zadatak u C-u

Tracer, kad smo kod volatilea, probaj malo ovo kompajlirati:

 

#include <iostream>
using namespace std;

class Tracer
{
public:
    Tracer(){spremnik = 0;}
    virtual ~Tracer(){delete metak;}
    int spremnik;
    int* metak;
};

void Pucaj(Tracer kalasnjikov)
{
    cout<<kalasnjikov.spremnik<<endl<<*kalasnjikov.metak<<endl;
}

void main()
{
    Tracer kalasnjikov; kalasnjikov.spremnik = 1; kalasnjikov.metak = new int(500);   
    Pucaj(kalasnjikov);
    cout<<*kalasnjikov.metak<<endl;
}


 

Javi mi kako je prošlo Nevinašce

LOL @ http://www.youtube.com/watch?v=Y_uCjnuY9D4
Moj PC  
0 0 hvala 0
15 godina
protjeran
offline
RE: Zadatak u C-u

Problem je što si funkciji Pucaj vrijednosti predao preko call by value tj. sama funkcija kreira novi objekt tipa Tracer pa u njega kopira one stare podatke i još pri tome nije dinamički alociran metak (za kopiju unutar funkcije). Pokušaj ovo:

 

void Pucaj(Tracer& kalasnjikov)
{
    cout<<kalasnjikov.spremnik<<endl
    <<*kalasnjikov.metak<<endl;
}

Poruka je uređivana zadnji put uto 3.3.2009 13:43 (Tracer).
16 godina
neaktivan
offline
Zadatak u C-u

Možeš li to riješiti ne dirajući tijelo funkcije?

LOL @ http://www.youtube.com/watch?v=Y_uCjnuY9D4
Moj PC  
0 0 hvala 0
15 godina
protjeran
offline
Zadatak u C-u

Jedno od rješenja koje sam pokušao je ovo:

 

#include <iostream>
using namespace std;

class Tracer
{
public:
    Tracer(){spremnik = 0;}
    virtual ~Tracer(){delete metak;}
    int spremnik;
    static int* metak;
};
int* Tracer::metak = NULL;

void Pucaj(Tracer kalasnjikov)
{
    cout<<kalasnjikov.spremnik<<endl<<*kalasnjikov.metak<<endl;
}

void main()
{
    Tracer kalasnjikov;
    kalasnjikov.spremnik = 1;
    kalasnjikov.metak = new int(500);
    cout<<*kalasnjikov.metak<<endl;     //500
    Pucaj(kalasnjikov);                 // 1 500
    cout<<*kalasnjikov.metak<<endl;     // promjena vrijednosti!
}

 

..iako mi se čini da bi trebalo raditi.. ne radi :D nakon poziva funkcije vrijednost se neočekivano promjenila.

 

i zato jedino rješenje koje trenutno vidim je preko call by reference. Ili ono gore što sam napravio ili mala modifikacija ovog gornjeg code-a:

 

#include <iostream>
using namespace std;

class Tracer
{
public:
    Tracer(){spremnik = 0;}
    virtual ~Tracer(){delete metak;}
    int spremnik;
    static int* metak;
};
int* Tracer::metak = NULL;

void Pucaj(Tracer* kalasnjikov)
{
    cout<<kalasnjikov->spremnik<<endl<<*kalasnjikov->metak<<endl;
}

void main()
{
    Tracer kalasnjikov;
    kalasnjikov.spremnik = 1;
    kalasnjikov.metak = new int(500);
    cout<<*kalasnjikov.metak<<endl;     //500
    Pucaj(&kalasnjikov);                 // 1 500
    cout<<*kalasnjikov.metak<<endl;     // 500
}

 

Znam da si nešto imao na umu s volatile ali ne pada mi ništa trenutno na pamet...

Poruka je uređivana zadnji put uto 3.3.2009 14:57 (Tracer).
Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
Zadatak u C-u

Zanimljiv je zadatak jelda?

Kladio sam se da nećeš riješiti problem; nebi ga riješila većina. Problem je u razumijevanju problema.

Inače, najbolja solucija je "popraviti" copy konstruktor.

 

#include <iostream>
using namespace std;

class Tracer
{
public:
    Tracer(){spremnik = 0;}
    virtual ~Tracer(){delete metak;}
    int spremnik;
    int* metak;
    Tracer(Tracer& c){spremnik=c.spremnik; metak = new int(*c.metak);}
};

void Pucaj(Tracer kalasnjikov)
{
    cout<<kalasnjikov.spremnik<<endl<<*kalasnjikov.metak<<endl;
}

void main()
{
    Tracer kalasnjikov; kalasnjikov.spremnik = 1; kalasnjikov.metak = new int(500);  
    Pucaj(kalasnjikov);
    cout<<*kalasnjikov.metak<<endl;
}

LOL @ http://www.youtube.com/watch?v=Y_uCjnuY9D4
Moj PC  
0 0 hvala 0
15 godina
protjeran
offline
RE: Zadatak u C-u

Svaka čast ;) Rješenja radi. Naveo si me na krivi trag jer si spominjao volatile pa o ovome nisam ni razmišljao. Iako ako pogledaš ono moje prvo tj. :

 

void Pucaj(Tracer& kalasnjikov){
    cout<<kalasnjikov.spremnik<<endl<<*kalasnjikov.metak<<endl;
}

 

to je vrlo slična stvar. Čak ovdje niti nemaš potrebu za dodatnom alokacijom memorije.

 

EDIT:

Skužio sam problematiku...

Poruka je uređivana zadnji put uto 3.3.2009 15:56 (Tracer).
16 godina
neaktivan
offline
Zadatak u C-u

Destruktor dealocira tu varijablu...

 

edit: hehe zakasnio sam :D

Poruka je uređivana zadnji put uto 3.3.2009 16:02 (itf4n).
 
0 0 hvala 0
16 godina
neaktivan
offline
Zadatak u C-u

Gdje je sad bio problem? Pa piše ti gore u čemu je štos.

LOL @ http://www.youtube.com/watch?v=Y_uCjnuY9D4
Moj PC  
0 0 hvala 0
15 godina
protjeran
offline
RE: Zadatak u C-u
naxeem kaže...

Gdje je sad bio problem? Pa piše ti gore u čemu je štos.

 Sve 5. Nije mi bilo jasno zašto moje rješenje sa statičkim pokazivačem nije radilo dok nisam vidio onaj destruktor.
16 godina
neaktivan
offline
RE: Zadatak u C-u

Taj destruktor je radio problem od starta. Uništi zajednički pointer. :)

LOL @ http://www.youtube.com/watch?v=Y_uCjnuY9D4
15 godina
protjeran
offline
Zadatak u C-u

Da.. zadatak je smišljeno i stručno napravljen da u maksimalnoj mjeri stvori komplikacije :)

Moj PC  
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice