[ veljko77 @ 20.02.2005. 12:53 ] @
Poceo sam da ucim C-e iz Krausove knjige i dosao sam do primera u kome se racuna povrsina trougla. Ukucao sam izvorni kod u C-u, izkompajlirao ali neradi. Zasto?

Kao kompajler koristim Bloodshed Dev-C++ jer sam na ES-u procitao da ga preporucuju za pocetnike!!!

Hvala unapred!
Veljko

p.s. Kod se nalazi na strani 48. a izgleda ovako :


/* Povrsina trougla u ravni */

#include <stdio.h>
#include <math.h>

main ()
{
double xA, yA, xB, yB, xC, yC, a, b, c, s, P;

/* Temena trougla: */
printf ("Unesite koordinate temena trougla !\n");

printf ("Unesite prvo teme!? ");
scanf ("%1f%1f", &xA,&yA);

printf ("Unesit drugo teme!? ");
scanf ("%1f%f", &xB, &yB);

printf ("Unesite trece teme!? ");
scanf ("%1f%f", &xC, &yC);

/* Stranice trougla: */
a = sqrt (pow(xB-xC,2) + pow(yB-yC,2));
b = sqrt (pow(xC-xA,2) + pow(yC-yA,2));
c = sqrt (pow(xA-xB,2) + pow(yA-yB,2));

/* Povrsina trougla: */
s = (a + b + c) / 2;
P = sqrt (s * (s-a) * (s-b) * (s-c));
printf ("Povrsina trougla je: %f\n", P);
}
[ Marko Stankovic @ 20.02.2005. 13:06 ] @
Ispred main-a stavi void jer ti f-ja ne vraca vrednost. Koliko vidim ostatak je ok. Napisi koju ti gresku javlja kompajler pa da vidimo o cemu je rec.
[ srki @ 20.02.2005. 13:11 ] @
http://www.elitesecurity.org/tema/76765-Pravilnik-za-forum

Citat:

Kada šaljete izvorni kod, potrudite se da ga pošaljete u tekstu poruke. Kod uokvirite oznakama [ code ] [ /code ] kako bi se ispravno prikazivao drugim korisnicima.
U vašem je interesu da taj kod neko drugi može lako i brzo da isproba. Ako vam prevodilac javlja grešku, obavezno je pošaljite zajedno s programom.
[ leka @ 20.02.2005. 15:55 ] @
veljko, program treba da izgleda ovako:
Code:

/* wprog.c */
/* Povrsina trougla u ravni */

#include <stdio.h>
#include <math.h>

int main ()
{
  double xA, yA, xB, yB, xC, yC, a, b, c, s, P;

  /* Temena trougla: */
  printf ("Unesite koordinate temena trougla !\n");
  
  printf ("Unesite prvo teme!? ");
  scanf ("%1f%1f", &xA,&yA);
  
  printf ("Unesit drugo teme!? ");
  scanf ("%1f%f", &xB, &yB);
  
  printf ("Unesite trece teme!? ");
  scanf ("%1f%f", &xC, &yC);
  
  /* Stranice trougla: */
  a = sqrt (pow(xB-xC,2) + pow(yB-yC,2));
  b = sqrt (pow(xC-xA,2) + pow(yC-yA,2));
  c = sqrt (pow(xA-xB,2) + pow(yA-yB,2));
  
  /* Povrsina trougla: */
  s = (a + b + c) / 2;
  P = sqrt (s * (s-a) * (s-b) * (s-c));
  printf ("Povrsina trougla je: %f\n", P);
 
  return 0;  


Prema standardu main() funkcija MORA da vrati int vrednost. Prema konvenciji ta vrednost treba da bude 0 ako je izvrsavanje programa proteklo bez greske. Ta vrednost ima i makro definisan u stdlib.h - EXIT_SUCCESS tako da mozes da pises i
Code:
#include <stdlib.h> // ovo treba da ide skupa sa ostalim #include linijama
.
.
.
return EXIT_SUCCESS; // ovo ide na kraj main() funkcije, ako tokom programa nije bilo problema.




dejan@gnu ~/prj/cxx/win32
$ make
i386-mingw32-gcc -o wprogc.exe wprog.c

dejan@gnu ~/prj/cxx/win32
$ ls
Makefile Makefile~ wprog.c wprogc.exe

Kao sto se vidi, program se kompajlira bez ikakvih problema.
[ veljko77 @ 21.02.2005. 06:42 ] @
E, sada, imam drugi problem!

Kada ga izkompajliram i pokrenem preko run opcije iz Bloodshed Dev-C++ i kada unesem koordinate temena trougla, program izracuna povrsinu I ODMA SE VRATI U DEV-C++ TAKO DA NEVIDIM REZULTAT, ODNOSNO NEVIDIM STA JE URADIO.

Znam da se program moze poterati i iz command.com ili msdos-a, ali da li postoji opcija da se to uradi iz samog Dev-C++?

Hvala
Veljko!
[ veljko77 @ 21.02.2005. 08:02 ] @
I, jos, nesto ...
Da li neko moze da mi kaze sta vrsi linija "int main(void)" u kodu koji je dat u prilogu

Code:


#include <stdio.h>
       
 int main(void) 
 {
     printf("Hello world\n");
     return 0;
 }
       




U Krausovoj knjizi pise da postoji vise "vrsta" glavnih programa (npr. void mai(void)) pa mi nije jasno sta te linije rade. Da li mi neko moze objasniti namenu za ova dva primera int main(void) i void main(void)?

Hvala unapred
Veljko
[ srki @ 21.02.2005. 08:16 ] @
Citat:
veljko77: E, sada, imam drugi problem!

Kada ga izkompajliram i pokrenem preko run opcije iz Bloodshed Dev-C++ i kada unesem koordinate temena trougla, program izracuna povrsinu I ODMA SE VRATI U DEV-C++ TAKO DA NEVIDIM REZULTAT, ODNOSNO NEVIDIM STA JE URADIO.


Veljko, ja sam ti zbog toga ostavio link ka pravilniku jer je ovo standardno pitanje koje pocetnici stalno postavljaju a imas link ka odgovoru u pravilniku. Nemoj da se ljutis ali ipak bi bilo bolje da prvo pogledas tu temu i ostale top teme.

Pozdrav
[ del-boy @ 21.11.2005. 19:26 ] @
Citat:
U Krausovoj knjizi pise da postoji vise "vrsta" glavnih programa (npr. void mai(void)) pa mi nije jasno sta te linije rade. Da li mi neko moze objasniti namenu za ova dva primera int main(void) i void main(void)?


void je tip promenljive koji ne predstavlja ništa! Malo čudno zvuči, ali tako je! Kada funkcija vraća void znači da ne vraća ništa. Kada joj kao argument prosleđuješ void znači da nema argumenata! U suštini to je to!

A ovaj drugi primer ( int main(void) ) znači da funkcija main vraća vrednost tipa int i da nema argumenata! Kao i kod ostalih f-ja!

Ako si učio pascal, void ispred imena funkcije se poklapa sa pascalovim procedurama, jer ni one ne vraćaju vrednost!
[ opmo @ 23.11.2006. 00:34 ] @
Da bi video rezlutat programa (sta uradi) dodaj sledecu liniju u kod pre return 0; linije :
system("PAUSE"); (ili bez znakova navodnika unutar zagrade,ne secam se bas:))
[ DjoleReject @ 24.11.2006. 15:03 ] @
main() funkciju ne poziva ni jedna druga funkcija u tvom programu, nego sam operativni sistem. Iz operativnog sistema njoj mozes poslati neke argumente (to ces uskoro uciti), a sam main() OS-u vraca neku vrednost. To u vecini slucajeva nije bitno, ali treba da znas da je ustanovljena konvencija koja kaze da kad je povratna vrednost main-a 0, to je znak OS-u da je program uspesno izvrsen i da problema nije bilo.
Uzmi zdravo za gotovo sledece stvari:
- int main() je nacin kako se pise main funkcija.
- return 0; je poslednji red u toj funkciji
[ hajduk7 @ 29.05.2007. 01:15 ] @
Citat:
opmo: Da bi video rezlutat programa (sta uradi) dodaj sledecu liniju u kod pre return 0; linije :
system("PAUSE"); (ili bez znakova navodnika unutar zagrade,ne secam se bas:))

Zaboravio si da mu kazes da treba da ukljuci datoteku stdlib.h na ovaj nacin
Code:
#include <stdlib.h>
inace system funkcija nece raditi.