C++ pomoć

poruka: 15
|
čitano: 3.213
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
neaktivan
offline
C++ pomoć

Može mi netko pomoći napraviti program za pretvaranje mjernih jednica

kmph-mph

Celsius- Farenhiet

inch-cm

ft-m

 
0 0 hvala 0
17 godina
neaktivan
offline
RE: C++ pomoć

Prodji neki najosnovniji tutorial za GUI i moralo bi ti bit jasno i samome kao to napraviti.

16 godina
neaktivan
offline
RE: C++ pomoć

Jedino što ti treba je kako se preračunava iz jednih u druge, i malo cin-a i cout-a za upis i ispis. Koji dio od ta dva te muči ? :D

16 godina
neaktivan
offline
RE: C++ pomoć

Prvo ne znamo ni koliko znanje o navedenom problemu imaš(tj. znanje pseudokoda)..zatim da li ti trebaju funkcije ili samo unos pa izračun bez funkcija.
Potrebno ti je samo znati koliko je inch u cm (google?)....zatim to lijepo upotrijebiš u pretvaranju ,a svi ostali upiti se mogu izvesti iz istog postupka.
Nitko više baš i ne da gotova rješenja iako se radi o vrlo vrlo laganom zadatku....savjetujem da pokažeš neki kod da se vidi koliko znaš a ne  samo "dajte rješenje"?

Private
Poruka je uređivana zadnji put pon 15.3.2010 18:27 (Private).
16 godina
neaktivan
offline
C++ pomoć

Fala van rjeseno je.

 
0 0 hvala 0
17 godina
neaktivan
offline
C++ pomoć

Da ne otvaram novu temu, pitat ću ovdje. Riječ je o rekurzijama. :D Naime, ne bi me ovo niti mučilo da nisam slučajno pogriješio u pisanju koda. Evo koda:

 

#include <stdio.h>

int fact(a)
{
    if(a == 0) return 1;
    else return (a * fact(a - 1));
}

int main()
{
    int n;

    printf("Unesite 'n': ");
    scanf("%d", &n);

    printf("Faktorijela od %d je: %d", n, fact(n));

    return 0;
}

 

Ovo je najjednostavnija rekurzija, računanje faktorijela. Dok sam pisal kod, slučajno sam gore kod ovog if uvjeta napisal return 0;. Kod izvršavanja programa, svako rješenje mi je bilo 0. Kad sam skužio i stavio tu return 1 sve je bilo ok. Onda reko, aj da vidim ako stavim return 2, na moje iznenađenje rezultat je bio poduplan (za unos pet rezultat je bio 240 umjesto točnih 120). Za return 3 je bio 360. Mene zanima zašto je to tak? Gledam po netu, ništa nema konkretno. Ili ja ne kontam dobro tu rekurziju ili ne kontam pojam stack-a ili ne kontam return value funkcije, stvarno ne znam. Ako bi netko mogao to lijepo objasnit?

 

EDIT: Skontal sam, više manje; dakle, svaka funkcija kad sebe samu pozove ona izračuna vrijednost koju treba vratiti sve dok ne dođe do osnovnog slučaja (n = 0), onda tek počinje vraćati te vrijednosti. Kad dođe do n = 0, tj. a = 0, ovaj if je točan i on vrati vrijednost 1 koja se pak množi sa prijašnjom vrijednošću koja je 1, onda se ta jedinica vrati i množi se sa 2 itd. Na kraju vrati predzadnji rezultat množen sa vrijednošću koju korisnik (u ovom gornjem programu) unese. Dakle, od ovog troje šta sam nabrojio nisam shvaćao rekurziju i to ne dobro, nego uopće! Uglavnom, jel to to šta sam sad natrkeljal? (više manje :)

http://3.141592653589793238462643383279502884197169399375105820974944592.com/index314.html
Poruka je uređivana zadnji put uto 23.3.2010 19:50 (1domagoj1).
 
0 0 hvala 0
16 godina
neaktivan
offline
RE: C++ pomoć
1domagoj1 kaže...

Da ne otvaram novu temu, pitat ću ovdje. Riječ je o rekurzijama. :D Naime, ne bi me ovo niti mučilo da nisam slučajno pogriješio u pisanju koda. Evo koda:

 

#include <stdio.h>

int fact(a)
{
      if(a == 0) return 1;
      else return (a * fact(a - 1));
}

int main()
{
      int n;

      printf("Unesite 'n': ");
      scanf("%d", &n);

      printf("Faktorijela od %d je: %d", n, fact(n));

      return 0;
}

 

Ovo je najjednostavnija rekurzija, računanje faktorijela. Dok sam pisal kod, slučajno sam gore kod ovog if uvjeta napisal return 0;. Kod izvršavanja programa, svako rješenje mi je bilo 0. Kad sam skužio i stavio tu return 1 sve je bilo ok. Onda reko, aj da vidim ako stavim return 2, na moje iznenađenje rezultat je bio poduplan (za unos pet rezultat je bio 240 umjesto točnih 120). Za return 3 je bio 360. Mene zanima zašto je to tak? Gledam po netu, ništa nema konkretno. Ili ja ne kontam dobro tu rekurziju ili ne kontam pojam stack-a ili ne kontam return value funkcije, stvarno ne znam. Ako bi netko mogao to lijepo objasnit?

  zadnje množenje je sa onim brojem koji se vraća za a == 0

kad si stavio return 0 množio je sa 0 i rezultat je naravno 0, za return 1 množi sa 1 i dobiješ točan rezultat, za return 2 množ sa 2 itd...

inaće, kad računaš faktorijele, uvjet bi ti triba biti if (a==1) jer nema smisla imat 0 faktorijela...

17 godina
neaktivan
offline
C++ pomoć

Hehe, vidi, u isto vrijeme ja uredio post i ti objasnio. Hvala. Matematički gledano 0! je 1, a definirajući uvjet a == 0, na elegantni sam način riješio problem ako korisnik unese 0 (bar ja mislim da je elegantan :P). Jedino se nisam ogradio od negativnih brojeva, ali to niti nema smisla jer em je ovo samo za vježbu, em staviti neg. broj za računanje faktorijela tek nema smisla. Sve u svemu, grde su te rekurzije. :D

http://3.141592653589793238462643383279502884197169399375105820974944592.com/index314.html
 
0 0 hvala 0
15 godina
neaktivan
offline
RE: C++ pomoć

I jos treba pripaziti da se faktorijeli iznad br 13 (14!) nemogu pohraniti u 8 bita (nestanu)....

17 godina
protjeran
offline
RE: C++ pomoć
h2o kaže...

I jos treba pripaziti da se faktorijeli iznad br 13 (14!) nemogu pohraniti u 8 bita (nestanu)....

Ima nešto i što se zove BigInteger klasa Namigiva.

17 godina
neaktivan
offline
RE: C++ pomoć
Tracer kaže...
h2o kaže...

I jos treba pripaziti da se faktorijeli iznad br 13 (14!) nemogu pohraniti u 8 bita (nestanu)....

Ima nešto i što se zove BigInteger klasa Namigiva.

Eh, da, ja se pital baš, kak bi mogo povećat opseg, bar do 20! (to bi teoretski mogo sa long long-om), al nisam uspio, dobivam totalno krive rezultate, al nisam previše gruntal zašto. A onda sam otkrio GMP :D

http://3.141592653589793238462643383279502884197169399375105820974944592.com/index314.html
17 godina
neaktivan
offline
C++ pomoć

Nego, jel možda netko zna kolka je apriori složenost ovog algoritma:

 

for( j = 2; j <= n; j++ )
    for( i = 1; i < n; i *= j )
        brojac++;

Hvala

http://3.141592653589793238462643383279502884197169399375105820974944592.com/index314.html
Poruka je uređivana zadnji put uto 30.3.2010 16:02 (1domagoj1).
 
0 0 hvala 0
17 godina
protjeran
offline
C++ pomoć

Zapravo, vuče na O(n2).. iako ovaj izraz prirasta u drugoj for petlji malo zbunjuje stvari.

Poruka je uređivana zadnji put uto 30.3.2010 16:51 (Tracer).
Moj PC  
0 0 hvala 0
17 godina
neaktivan
offline
C++ pomoć

To je inače pitanje iz ispita iz ASP-a bilo (Algoritmi i strukture podataka), jučer, i sad se "lome koplja" na forumu koja je složenost. Uglavnom, iskristalizirala su se dva riješenja, jedni vele O(nlogn) (to sam i sam napisal u ispitu) drugi O(n). A ništa, vidjet će se za par dana...

http://3.141592653589793238462643383279502884197169399375105820974944592.com/index314.html
 
0 0 hvala 0
17 godina
protjeran
offline
C++ pomoć

Može biti.. nisam baš siguran za ovo jer mi je to u davnom sjećanju, i to baš iz doba kad sam ja polagao Algoritme na FERu.

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