Može mi netko pomoći napraviti program za pretvaranje mjernih jednica
kmph-mph
Celsius- Farenhiet
inch-cm
ft-m
Može mi netko pomoći napraviti program za pretvaranje mjernih jednica
kmph-mph
Celsius- Farenhiet
inch-cm
ft-m
Prodji neki najosnovniji tutorial za GUI i moralo bi ti bit jasno i samome kao to napraviti.
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
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"?
Fala van rjeseno je.
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 :)
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...
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
I jos treba pripaziti da se faktorijeli iznad br 13 (14!) nemogu pohraniti u 8 bita (nestanu)....
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 .
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 .
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
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
Zapravo, vuče na O(n2).. iako ovaj izraz prirasta u drugoj for petlji malo zbunjuje stvari.
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...
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.