Šta je novo?

Pomoć, zadatak u Turbo C

ValerianT

Slavan
Učlanjen(a)
26.10.2008
Poruke
20
Poena
304
Struktura KANDIDAT kojim se opisuje kandidat na prijemnom ispitu sadrži sledeće podatke:
  • ime učenika
  • poene po osnovu opšteg uspeha
  • poene sa testa iz matematike (0-20)
  • poene sa testa iz srpskog (0-20)
Opisati niz od 200 struktura tipa KANDIDAT. Napisati program kojim se za N kandidata na prijemnom:
  • ispisuje imena kandidata koji su položili kvalifikacioni ispit. Kandidat je položio kvalifikacioni ispit, ako ima 10 ili više poena na testovima iz srpskog i matematike
  • ispisuju podaci o kandidatu koji je najbolje uradio test iz matematike
  • ispisuje rang-listu
 
Postavi ono sto si dosad uradio. Za koji deo ti treba pomoc?
 
Profesor nam je dao slican zadatak, pa da na osnvu njega odradimo ovaj

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

#define N 4
#define D 40

typedef struct reka
{
   char naziv[D];
   int duzina;
} Reka;

void citajpod(Reka reke[]);

int main()
{
    Reka reke[N];
    int n=0;
    int i, max, najduza;
    clrscr();
    /*
    printf("Unesi podatke o rekama: \n\n");
    do
    {
	printf("Unesite podatke o %d. reci:\n", n+1);

	printf("Naziv: ");
	fgets(reke[n].naziv, D, stdin);
	fflush(stdin);
	if (strncmp(reke[n].naziv, "...", 3) == 0)
	   break;
	do {
	    printf("Duzina: ");
	    scanf("%d", &reke[n].duzina);
	    fflush(stdin);
	} while (reke[n].duzina <= 0);
	  n++;

    } while (n < N);
    */
    citajpod(reke);
    max = -1;
    for (i=0; i<N; i++)
	if (reke[i].duzina > max)
	{
	    max = reke[i].duzina;
	    najduza = i;
	}

    printf("Najduza reka je: %s", reke[najduza].naziv);
    printf("Dugacka je: %d km\n", reke[najduza].duzina);

    getch();
    return;
}
void citajpod(Reka reke1[])
{
    FILE*infile;
    char ime_fajla[40] = "d:/podaci.txt";

    int i;
    if((infile = fopen(ime_fajla,"r")) == NULL)
    {
      perror("\nGreska pri otvaranju fajla! ");
      return;
    }

    for(i=0; i<N; i++)
    {
       fscanf(infile, "%d,%s\n" , &reke1[i].duzina, &reke1[i].naziv);
       printf("\n%s", reke1[i].naziv);
    }
    fclose(infile);
}
 
Poslednja izmena od urednika:
Lepo rece IgorHW.
Nemoj ocekivati da ti neko odavde resi kompletan zadatak.
Ali ako si krenuo sam da ga resavas, i zaglavio se, napisi gde si se zaglavio, pomoci cemo...
 
Ajde danas mi se nesto programiralo :D. Evo ti kod (iako su ti rekli da ti niko nece uraditi):

Kod:
//PROGRAM Prijemni (rang lista kandidata, poeni...)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>


int br_kandidata;
struct kandidat
{
	char ime[20];
	char prezime[20];
	float opsti;
	float matem;
	float srp;
};

void ucitaj(kandidat *lista, int *broj_kandidata)
{
	FILE *fajl;
	int i=0;
	if ((fajl=fopen("lista.txt","r"))==0)
		printf("Greska pri ucitavanju liste\n");
	else
		while (!feof(fajl))
		{
			fscanf(fajl,"%s%s%f%f%f", &lista[i].ime, &lista[i].prezime, &lista[i].opsti, &lista[i].matem, &lista[i].srp);  
			i++;
		};
	*broj_kandidata=i;
	fclose(fajl);
};


void sortiraj_listu(kandidat *lista)
{

	char pom[20];
	int imax;
	float ukupnoimax, ukupnoj, k;

	for(int i=0;i<br_kandidata;i++)
	{
		imax=i;
		for(int j=i+1;j<br_kandidata;j++)
		{
			ukupnoimax=lista[imax].opsti + lista[imax].matem + lista[imax].srp;
			ukupnoj=lista[j].opsti + lista[j].matem + lista[j].srp;
			if (ukupnoimax < ukupnoj)
				imax=j;
		};

		strcpy(pom,lista[i].ime);
		strcpy(lista[i].ime, lista[imax].ime);
		strcpy(lista[imax].ime, pom);

		strcpy(pom,lista[i].prezime);
		strcpy(lista[i].prezime, lista[imax].prezime);
		strcpy(lista[imax].prezime, pom);

		k=lista[i].opsti;
		lista[i].opsti=lista[imax].opsti;
		lista[imax].opsti=k;
		
		k=lista[i].matem;
		lista[i].matem=lista[imax].matem;
		lista[imax].matem=k;

		k=lista[i].srp;
		lista[i].srp=lista[imax].srp;
		lista[imax].srp=k;
	}

}

void stampaj_polozili(kandidat *lista)
{
	printf("Polozili su: \n");
	for(int i=0;i<=br_kandidata;i++)
		if ((lista[i].matem>=10) && (lista[i].srp>=10))
			printf("%s %s -> Matematika: %2.2f Srpski: %2.2f\n", lista[i].ime, lista[i].prezime, lista[i].matem, lista[i].srp);
	printf("------------------------------------------------------------\n");
}

void stampaj_sort_listu(kandidat *lista)
{
	printf("Rang lista: \n");
	for(int i=0;i<br_kandidata;i++)
		printf("%d %s %s -> Matematika: %2.2f Srpski: %2.2f\n", i+1, lista[i].ime, lista[i].prezime, lista[i].matem, lista[i].srp);
}



void main()
{
	kandidat lista[200];

	ucitaj(lista, &br_kandidata);  // ucitavanje liste kandidata (funkcija automatski vraca broj kandidata u listi)
	
	sortiraj_listu(lista);

	stampaj_polozili(lista);

	printf("Test iz matematike najbolje je uradio: %s %s -> %2.2f\n", lista[0].ime, lista[0].prezime, lista[0].matem);
	printf("-------------------------------------------------------------\n");

	stampaj_sort_listu(lista); //ovde se sabiraju i poeni opsteg uspeha, znaci zato se lista ne pokalapa direkto sa poenima na prijemnog (razlika je u opstem uspehu)
	printf("\n");

}

Dokument u kome je sacuvana neuredjena rang lista je: lista.txt. Njen sadrzaj:
Kod:
Miki Mihajlovic 60 20 20
Pera Peric 50 15.2 17.1
Djoka Djokic 43.12 9.4 6.3
Ana Anic 30 19.4 13.5

Ajde sad se lepo zahvali i predlozi me za moderatora ovog dela foruma :D:D:D
Znaci to je otrprilike to. Kompajlirao sam u Visual C++, ali sam koristio sintaksu C-a (tj. nema nikakvih dodataka iz C++). Uz minimalno prilagodjavanje mozes i u Turbo C-u da iskompajliras. Ako sam negde nesto malo pogresio, potrudi se pa ispravi, mrzelo me da ga detaljno testiram (valjda je i ovo sto sam napisao dovoljno;)). takodje ti postavljam kod i fajl kao attachement da bas nista ne moras da uradis :smoke:
 

Prilozi

  • Prijemni.rar
    1.1 KB · Pregleda: 28
Poslednja izmena:
Ajde danas mi se nesto programiralo :D. Evo ti kod (iako su ti rekli da ti niko nece uraditi)

e fakat "nam" rusis tezu! :d

ja ovo ne bih nikad uradio. ne zato sto me mrzi (a mrzi me), nego me nervira sto se cesto javi neko sa skolskim zadatkom iz jezika na kome ne ume da bekne i ocekuje da mu se uradi sve. ne nervira me (previse :d) on sam, kao npr. ValerianT, nego budjavo skolstvo i uopste situacija na trsistu rada kod nas.

zasto ne ume da bekne? ili ga neko nije naucio (los kadar), ili nije hteo da nauci jer mu verovatno ne treba (losi planovi i programi), ili jednostavno ne moze (lose trziste rada gde je neko ko ne moze "primoran" da juri diplomu i sto je najgore daju mu je na kraju - opet skolstvo).

al' ok, svaka cast za trud i pomoc neznancu, tu nema sta da se prigovori! :) svakako je to korisnije za drustvo, bar za sada, od mene dr*adzije. :D
 
Ajde danas mi se nesto programiralo :D. Evo ti kod (iako su ti rekli da ti niko nece uraditi):

Joj znaci, imas straaaaaasno los stil kodiranja... obavezno promeni :)

obavezno
if (blabla)
{
}

for (blabla)
{
}

posle } ne treba ;

#define _CRT_SECURE_NO_WARNINGS
takodje ne treba za turboC

sto se tice koda:
- ucitaj ne vraca kod greske tako da i ako pukne ostatak se nastavlja... sort nece da prodje jer je prva petlja na uslov < 0 , medjutim stampanje prolazi jer je uslov na <= 0 tako da ce random lokacije iz memorije da budu ispisane na ekran...

- kako su sve strukture iste velicine (staticke) onda ne moras da u sortiranju radis strcpy nad elementima vec uradis memcpy nad celom strukturom tipa
struct Kandidat *a, *b;
memcpy(a,b,sizeof(Kandidat)
i resio si problem krace i efikasnije

- cuvati niz od 100 struktura je bez veze... bolje cuvaj 100 pokazivaca jer sortiranje onda ide trivijalno bez memcpy-a.. ako mora bas 100 struktura onda memcpy

btw. koja je razlika izmedju memory copy i memory move ? :)

- po starom c standardu iz 99 nisam bas siguran da
struct Kandidat
{
};
posle mozes da instanciras sa
Kandidat niz[100];

trebalo bi sa
struct Kandidat niz[200]

- po unosu iz fajla bi trebalo da ispitas da li su vrednosti u zadatim intervalima jer je to navedeno u uslovu zadatka 0-20 poena i sl...
sta ce se desiti ukoliko ime i prezime imaju vise od 20 karaktera ?

- pri otvaranju fajla za citanje obavezno stavi mod "rt" da se zna da se ne cita iz binarnog fajla.. ne znam sta je default al opet ...

ajd da ne smaram... polozio si :p
 
Poslednja izmena:
Ajdemo redom:D:
obavezno
if (blabla)
{
}

for (blabla)
{
}

Sto se toga tice, ove zagrade ne donose neku preteranu preglednost. Ja sam u pocetku uvek stavljao zagrade, ali ovi na faxu asistenti i profesori koji pregledjuju testove obozavaju skraceno da pisu, tj. bez zagrada ali sa obaveznim
uvlacenjem(narravno kada samo jedna naredba sledi posle uslova/petlje).

------------------
Dalje:
posle } ne treba ;
tacno je, u pravu si. Primetices da sam negde stavio a negde nisam ;. To nema nikakvog uticaja na kod (nego dok sam pisao kod radio sam jos ponesto pa nisam bas 100% bio skoncentrisan).

----------
#define _CRT_SECURE_NO_WARNINGS
takodje ne treba za turboC
I to je ok. Naglasio sam da sam kompajlirao u Visual C++ 2008, i rekao da u Turno C treba minimalne izmene da se odrade. Ovo ne mora ni u C++, ali sam to ukljucio da mi ne dosadjuje sa 20 glupih warninga kako je neka funkcija stara i da probam da koristim drugu, noviju.

Za , i <= sam se zeznuo, nisam detaljno pregledao kod kao sto sam i rekao. Inace program se korektno izvrsio kad sam isprobao, nije ispisivao gluposti sa nekih memorijsklih adresa, pa sam onako otprilike reko "Dobro je, kolko para tolko i muzike - da je meni licno trebalo 3 puta bih proverio :D".

Zatim memcpy moze, ali ce profesor vise ceniti rucno prebacivanje iako je duze i u pisanju i u izvrsavanju (jer ce time da se vidi da zna ucenik sta radi i kako gde prebacuje). Ja licno ne znam nista o Turbo C-u, pa sam se trudio da zadrzim sto nizi nivo da bi sto lakse moglo da se prebaci tamo.

Za stare standarde me ne pitaj, to me niti interesuje niti sam negde citao o tome. Znam da moze onako kako sam ja pisao i da je to ok, pa sam time zadovoljan.

Sto se tice ispitivanja uslova, mogao sam ja jos 50 redova da dodam i da probam da ucinim program id*ot-proof ali to definitivno nije moguce. Uvek ima budala koje mogu da urade stvari koje normalnom coveku nikad na pamet ne padnu :D. Takodje me je mrzelo da kucam toliko. To neka uzme ovaj sto mu je domaci, pa neka ispituje sve od reda.

Zatim znas li neko ime koje ima vise od 20 karaktera :D (mislim na srpsko ime)?
Ime i prezime su odvojeni, svakom po 20 karaktera.

Default za otvaranje fajlova je bas ovaj, tj. ocekuje text. I cak ni warning ne daje :banana:

Ocigledno cu sledeci put morati da napisem ne programce nego ceo Windows za obicno skolsko zadace :D. I naravno, Pre Alfa, Alfa, Beta, RTM pa tek onda Final. A kad krenem sa SP-ovima da pucam, kao Windows 2000 :D


Salim se, svaka kritika je uvazena i dobrodosla. Nadam se da se ovim poslom bavis, pa da sam dobio kritike od profesionalca, a ne od amatera ili hobiste. Ja ovime planiram da se bavim, ali tek dok zavrsim fax, znaci jos dobre 4 godine:(. Sad sam tek prva (eto i to je bezveze - prva godina zajednicka za sve pa onda jos 4 godine strucnog).
To je Sid lepo istakao: "(lose trziste rada gde je neko ko ne moze "primoran" da juri diplomu i sto je najgore daju mu je na kraju - opet skolstvo)" Dopunio bih samo da kad bi sve nestrucne predmete izbacili i fokusirali se na ono sto je direktno povezano sa buducom profesijom i mnogo vise vremena posvetili tome, mnogo bi bili bolji rezultati. A ne, preopterete decu sa istorijom, geografijom,... pa onda kad bude testiranje (ono medjunarodno), nasa deca su na dnu liste sto se poznavanja prirodnih nauka tice. Pa naravno kad samo bubaju neke stvari koje ih ne zanimaju, samo da bi polozili, pa nemaju vremna za prave stvari (cak i toliko nauce da bubaju da onda krenu da to primenjuju i sa prirodnim naukama, a to je ocigledno kako se zavrsi...). Nego dobro, dzabe mi to pricamo, a i tema nije bila skolstvo vec problem u C-u.
 
Poslednja izmena:
Kod:
Pa ovako, prvo kako se pisu uslovi :


if (uslov1)
{
    a();
}
else // if (uslov1) kao referenca na koji uslov ili negacija if (!uslov1) po volji
{
     if (uslov2)
     {
          b();
     }
     else // if (uslov2)
     {
         c();
     }
}
sve jasno ko dan...
------------------------------------
greske koje se izbegavaju
if (uslov1)
     if(uslov2)
        a();
else
     b();

i recimo
if (uslov1)
    a();b();

isto vazi i za while i for...
-----------------------------------

Ispitivanje granicnih slucajeva je kljucna stvar.. Ime <20 karaktera, prezime<20 karaktera, poeni >=0 i <= 20, broj rekorda u fajlu < 200, fajl otvoren uspesno/neuspesno, alokacija memorije uspesna/neuspesna

ovo je neophodno ako hoces da pravis kvalitetan software.. ako neko koristi tvoj kod kao osnovu on moze da podrazumeva da ti vrsih te provere pa ako se osloni na to moze da nastane haos.

pre alpha, alpha, beta.. sve ove verzije moraju da se prave sa ukljucenim uslovima..
ako ih izostavi programer mirko iz tima 5 u alpha verziji i pera iz tima 6 u pre alfa ko ce posle da prati sta je ko trebao jos da doda... znaci na prvom mestu je kvalitet.
---------------------------------------

pa evo neka udata zena se preziva
Suvočesmaković-Milovanovic

znaci nikako ne pretpostavljati u ovakvim situacijama... ako je ogranicenje 20 karaktera testiraj na 20.. ako je 256 testiraj na 256... sta god da odaberes za duzinu ok je dokle god testiras to sto si odabrao
---------------------------------------
ukoliko ti nisi autor datoteke onda moras i nju da parsiras i vidis da li je formatirana kako treba tipa :
ime nesto prezime 5435 %$#@ 20.5 120 blabla <html> ~~~

program puca ako ovo stoji zapisano
---------------------------------------

To sto studiras je za svaku pohvalu.. Sve sto je jako bitno je da pored toga sto naucis tamo usvojis i svoje neke standarde kojih ce da se drzis.. Za**** budzenja koda, precice i sl.. radi sve kao da je za space shuttle i da ti leti glava ako nesto eksplodira..
---------------------------------------

Profesionalac vs Amater je pitanje za posebnu diskusiju... svako ko zaradjuje od programiranja je profesionalac a ko ne zaradjuje je amater... puno ljudi koji slabo programiraju su profesionalci a takodje i puno koji ne zaradjuju nista su amateri koji kidaju...
---------------------------------------

Sto se mene tice, poso mi je takav da moram da vodim racuna na svaku liniju ma koliko deluje naivno inaci mi pukne BSOD :(
 
Poslednja izmena:
Kod:
pa evo neka udata zena se preziva
Suvočesmaković-Milovanovic

Pa gde si video udatu zenu da se prijavljuje za upis u srednju skolu :D?


Kod:
ukoliko ti nisi autor datoteke onda moras i nju da parsiras i vidis da li je formatirana kako treba tipa :
ime nesto prezime 5435 %$#@ 20.5 120 blabla <html> ~~~ 

program puca ako ovo stoji zapisano
Jeste, ali da li mislis da je parsiranje neophodno za ovu vrstu zadttka (nivoa obrazovanja i ovu vrstu programa - demonstracija rada sa strukturama?)




Kod:
Profesionalac vs Amater je pitanje za posebnu diskusiju... svako ko zaradjuje od programiranja je profesionalac a ko ne zaradjuje je amater... puno ljudi koji slabo programiraju su profesionalci a takodje i puno koji ne zaradjuju nista su amateri koji kidaju...
Ovo je vrlo zanimljivo, u potpunosti se slazem, cak znam i neke primere ljudi sa diplomom koji su zadnji program napravili pre par godina:d


Kod:
Sto se mene tice, poso mi je takav da moram da vodim racuna na svaku liniju ma koliko deluje naivno inaci mi pukne BSOD :(
Sta to programiras pa dobijas BSOD? Drajvere neke pravis mozda? Za nVidiu:)?
 
A bre ljudi, niste me opomenuli, nacinio sam malu gresku. Po zadatku je trebalo prikazati onog ucenika koji je najbolje uradio test iz matematike a ne najbolje rangiranog ucenika. Nepaznja, nema sta....

Dakle ja sam stavio
Kod:
printf("Test iz matematike najbolje je uradio: %s %s -> %2.2f\n", lista[0].ime, lista[0].prezime, lista[0].matem);
, a trebala je da se stavi petlja koja ce da ide redom i da proverava ko je najbolje uradio test iz matematike (jer bi ovaj red koda samo stampao najbolje rangiranog kandidata tj. prvo mesto). To znaci da je neko mozda imao 10 poena iz matematike samo a ostalo MAX i bio bi odstampan kao da je najbolje uradio matematiku, iako je mozda neko imao 20 poena iz matematike ali na uspehu i iz srpskog najmanji moguci broj poena.
Dakle neka to bude mali zadatak za mladjanog Valerijana :D

@genuine: Toliko si se posvetio nacinu pisanja da si osnovnu gresku prevideo. Ocigledno toliko uzivas u programiranju da volis da doteras kod do perfekcionizma, sto i nije lose. Ali ipak na prvom mestu mora da bude da program daje tacan rezultat.
 
@genuine: Toliko si se posvetio nacinu pisanja da si osnovnu gresku prevideo. Ocigledno toliko uzivas u programiranju da volis da doteras kod do perfekcionizma, sto i nije lose. Ali ipak na prvom mestu mora da bude da program daje tacan rezultat.

Pravo da ti kazem nisam ni citao tekst zadatka, tj. sta se trazi.. samo sam gledao liniju po liniju.. mogu da ti nadjem jos 50 gresaka i problema ali ovaj sustinski je najmanji :p
 
Ima fora, ako postoji slucaj - realna situacija, ili stanje u kome tvoj program moze da se nadje a nije testirano a da pri tome nastane haos, to je greska.... recimo pritisnem esc - izadjem iz programa, pritisnem enter- udjem u potprogram, pritisnem oba - kvrc.
 
To sto ti radis to nije programiranje nego izivljavanje, cini mi se. Nadam se da to sto programiras stvarno zahteva toliko detaljisanje i ispitivanje najraznoraznijih losih slucajeva.

Ti kad bi trebao da napravis program za sabiranje 2 cela broja u C-u, taj bi program bio dugacak makar 200 linija koda dok ti If-ujes sve moguce i nemoguce slucajeve. Nadam se da oni koji ti placaju za taj posao kojim se bavis stvarno zahtevaju takav pristup, a da te ne placaju samo za ispitivanje onoga sto je korisnik uneo.
 
Pa ako pises mission critical aplikacije neophodno je razraditi sve mogucnosti. Zamisli da pises program koji upravlja radom vestackog srca pacijentu koji ceka operaciju i zbog glupe greske u programu covek izgubi zivot. Da li bi smeo da prihvatis posao razvoja takvog programa?

Kada dostignes odredjeni nivo programiranja, vodjenje racuna o kvalitetu code-a je potpuno prirodna stvar.
 
Pa ako pises mission critical aplikacije neophodno je razraditi sve mogucnosti. Zamisli da pises program koji upravlja radom vestackog srca pacijentu koji ceka operaciju i zbog glupe greske u programu covek izgubi zivot. Da li bi smeo da prihvatis posao razvoja takvog programa?

Kada dostignes odredjeni nivo programiranja, vodjenje racuna o kvalitetu code-a je potpuno prirodna stvar.

U redu je. To sam i rekao vec, da ako bas mora da pazi na takve stvari onda je ok.
Ali ako treba da napise ovakvko skolsko programce, da li onda treba toliko da detaljise? Sta mislis da li ce profesor to da zahteva od njega, da proveri dal neko nije pritisnuo za vreme unosa Esc, a potom i Enter i onda je prso program?

Dal se i vestacko srce programira?:zgran::trust:
 
Pa ajde recimo ICD (implantable cardioverter defibrillator) uredjaj koji treba da ti resetuje srce ako poludi, recimo ode u ritam koji je opasan po zivot.... Primera vertrikularna tahikardija ili ventrikularna fibrilacija jos gore..
eto uzmemo za primer ventrikularnu fibrilaciju... to je ritam u kome srce se haoticno grci.. na ekg-u to izgleda kao signal koji je random... bez paterna, tj.. ponavljanja.. fizicki srce izgleda ko vreca crva koji haoticno idu...
i ti lepo kazes
while (haoticno_kretanje_srca())
{
opali_shock();
sacekaj_malo();
}

eto, jako logican kod koji nema veze sa mozgom..

1. haoticno_kretanje_srca().. gleda dal je ekg signal takav da je ono gore ispunjeno, tj. random signal... recimo pretpostavka da covek je elektricar i udje u trafo stanicu nesto da popvravi... magnetno polje u njoj mu razvali koliko mu indukuje napona u elektrodama sto ako uredjaj nije svestan moze da vidi kao random... medjutim, svaki shum takvog tipa mora da prodje analizu, da li je taj shum fizioloske prirode ili je indukovan od strane okruzenja.. pa onda to od strane okruzenja, koje sve vrste sumova mogu da se nahvataju i kako to obraditi...
drugo... ako jeste los ritam... kad opaliti, postoji li tacka za sinhronizaciju, postoji li kriterijum koliko puta opaliti, stanje baterije, sl.. kako otkriti dal je uredjaj pogresio.. sta ako se covek mrda dok ima fibrilaciju, dal to znaci da je u stvari losa odluka doneta ili se ceo trese u vozu recimo.. a sta ako se otkacila elektroda koja daje informacije o signalu srca...

eto primer koliko nesto sto je ocigledno, ako nije detaljno razradjeno moze da zezne stvar...
ovaj primer nema veze sa programiranjem, ali prikazuje jedno .. a to je ako zeznes neki corner case covek dobije nepotreban shok i baterija se oslabi i coveku se nanese psihicka trauma..

primer kako je Ariane 5 zveknula sa neba je

float x;
short a=(short)x;

medjutim kod koji deluje ok, je doveo do probijanja opsega a i bum..

znaci treba razmisljati o scenarijima upotrebe pre kodiranja, nije svaki if potreban ako ne postoji scenario upotrebe.. ako postoji situacija koja moze da dovede sistem u to stanje onda mora..

kod embedded sistema, tj. mikrokontrolera postoji poseban tajmer koji generise prekide na odredjene intervale (watchdog timer).. ukoliko software u prekidnoj rutini ne resetuje tajmer jer je zabagovao, kontroler se automatski resetuje komplet...
 
Poslednja izmena:
Pa obojica ste u pravu... Prvo, postavka zadatka ima mnogo rupa, a sa druge strane genuine ti je dao smernice kako da codiras tako da te ne boli glava kad trazis greske.

Meni se par puta desilo da napisem neku rutinicu.. npr da podeli ulazni string na drive, path, filename i ext, i rutina proradi iz prve. To mi deluje potpuno neverovatno da napisem 10+ redova programa, a da nema neka greska.

Evo jednog primera:
Kod:
if (func1() || func2())
{
 // uradi nesto_1
}
else
{
 // uradi nesto2
}
func1 i func2 treba da se obavezno izvrse. Kompajler prilikom optimizacije ce izvrsiti func1 i ako je true ona nece izvrsiti func2 jer je uslov zadovoljen. Zbog ovakvih i slicnih situacija treba primenjivati patterne u programiranju koji ti "garantuju" da neces upasti u ovakve situacije. Rec garantuje sam stavio pod navode, jer se pravila uvek mogu iskriviti.
 
Nazad
Vrh Dno