|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
20.6.2012, 16:56 | #1 | |
Banned
|
Zadaci za prijemni ispit za PMF
Otvaram ovu temu kako bih u njoj trazio pomoc od iskusnijih programera oko zadataka koje imam za prijemni ispit na PMF-u u Nisu, odesk racunarske nauke.
Na prijemnom ima stvarno jako zanimljivih zadataka koji traze mozganje ali i iskustva u programiranju. Mene trenutno muci ovaj zadatak: Citat:
Kod:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Mene sada muci, kako da napravim program koji ce da izracunava trazeni proizvod. Evo sta sam ja do sada uradio: Kod:
#include <iostream> #include <stdlib.h> using namespace std; int main() { int n; cout << "Unesite velicinu matrice: "; cin >> n; int i = 0; int array[n][n]; for(i=1; i<n*n+1; i++) { cout << i << " " << endl; array[n][n] = i; } system("pause"); } |
|
20.6.2012, 17:27 | #2 |
Veteran
|
Re: Zadaci za prijemni ispit za PMF
Dugo nisam radio u C++u. A i nemam nikakav kompajler da bih ti ovo dobro uradio.
Ali evo prokomentarisacu dok ne naidje neko sa vise iskustva. Prepodstavljam da si u ovom kodu pokusao da uneses brojeve u matricu. Ali gresis, uopste ne kapiram koja ti je ideja za unos. Ti u tvojoj for petlji ides od 1 do 25 i u matrici na mestu (n,n) tj. (5,5) upisujes u svakom prolazu novu vrednost (1,2,3,4,5 ... 25) Znaci prvo. Da bi dobro uneo brojeve u matricu, trebaju ti 2 for petlje da bi pristupio svakom clanu. Trebalo bi ovako to da izgleda: Kod:
int i,j,broj; broj=1; for(i=0;i<n;i++) { for(j=0;j<n;j++) { array[i][j]=broj++; } } Takodje, vidim da ne razumes najbolje for petlje u kombinaciji sa matricama. Moja preporuka ti je da to DOBRO proucis, jer ce ti sigurno nesto tog tipa doci. |
Sledeći korisnik se zahvaljuje korisniku Ivan452 na korisnoj poruci: | ||
PeTkO (21.6.2012) |
20.6.2012, 18:46 | #3 |
Član
Član od: 1.4.2006.
Poruke: 493
Zahvalnice: 85
Zahvaljeno 143 puta na 83 poruka
|
Re: Zadaci za prijemni ispit za PMF
Kod:
int brojac = 1, suma = 0; for(int i = 1; i < N; ++i) { for(int j = 0; j < b; ++j) suma += matrica[i][j]; ++b; } Kod:
int brojac = 1, proizvod = 1; for(int i = 1; i < N; ++i) { for(int j = 0; j < b; ++j) proizvod *= matrica[i][j]; ++b; } Poslednja ispravka: BobaL (20.6.2012 u 18:54) Razlog: Pogresio sam jer se trazio proizvod... |
Sledeći korisnik se zahvaljuje korisniku BobaL na korisnoj poruci: | ||
PeTkO (21.6.2012) |
20.6.2012, 19:38 | #4 |
Banned
|
Re: Zadaci za prijemni ispit za PMF
@BobaL
Tvoj kod mi nije bas najjasniji, pa bih te zamolio, ako ti nije problem, da mi napises ceo kod programa, koji ce na kraju da ispise rezultat proizvoda brojeva ispod glavne dijagonale. Pokusavam da sam sebi objasnim, pa mi je zato potreban ceo kod. |
20.6.2012, 20:02 | #5 |
Starosedelac
|
Re: Zadaci za prijemni ispit za PMF
C#, ali, kapiraš poentu...
Kod:
static void Main() { int d = 5; int[,] matrica = new int[d, d]; // popunjavamo elementima redom, od 1 do WxH for (int i = 0; i < d * d; i++) matrica[i / d, i % d] = i + 1; // racunamo zbir bojeva ispod dijagonale, ovog puta dupla petlja, lakse je long proizvod = 1; for (int i = 0; i < d - 1; i++) for (int j = i + 1; j < d; j++) proizvod *= matrica[j, i]; Console.WriteLine("Proizvod elemenata je: {0}", proizvod); Console.ReadKey(); } Poslednja ispravka: MG-RAY (20.6.2012 u 20:07) Razlog: Proizvod, ne zbir... :| |
Sledeći korisnik se zahvaljuje korisniku MG-RAY na korisnoj poruci: | ||
PeTkO (21.6.2012) |
20.6.2012, 20:06 | #6 |
Član
Član od: 15.12.2011.
Poruke: 150
Zahvalnice: 27
Zahvaljeno 49 puta na 44 poruka
|
Re: Zadaci za prijemni ispit za PMF
Matricu ucitavas ovako:
Kod:
int matrica[10][10]; int n; //matrica dimenzija n x n for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) scanf("%d",&matrica[i][j]); Kod:
(0,0) (0,1) (0,2) (0,3) (0,4) (1,0) (1,1) (1,2) (1,3) (1,4) (2,0) (2,1) (2,2) (2,3) (2,4) (3,0) (3,1) (3,2) (3,3) (3,4) (4,0) (4,1) (4,2) (4,3) (4,4) Kod:
int p = 1; //pocetna vrednost proizvoda for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) if(i > j){ p = p * a[i][j]; } http://poincare.matf.bg.ac.rs/~sana/Programiranje2/07/IIcasC07.pdf Poslednja ispravka: korisnickoime (20.6.2012 u 20:22) |
Sledeći korisnik se zahvaljuje korisniku korisnickoime na korisnoj poruci: | ||
PeTkO (21.6.2012) |
20.6.2012, 22:41 | #7 |
Član
Član od: 14.4.2010.
Lokacija: Podgorica
Poruke: 332
Zahvalnice: 61
Zahvaljeno 11 puta na 11 poruka
|
Re: Zadaci za prijemni ispit za PMF
Imas trougao brojeva koji ti se nalazi ispod glavne dijagonale, to znaci da je krajnja gornja tacka trougla zapravo element matrice, m[1][0]. Ide ti sve do kraja, i u svakom redu uzimas za po jedan vise broj od prethodnog reda. ali u zadjem redu elemente uzimas do n-2. (U C++ indeksiranje pocinje od nule, pa ako imas niz od 10 elemenata zadnji je a[9], a u nasem slucaju treba da se ide do predzadnjeg elementa a to je a[n-2] odnosno u matrici m[n-1][n-2]).
Sad ti trebaju samo dvije for petlje. Jedna ide po kolonama a druga po redovima. U svakom sledecem redu imas za po 1 elemenat vise. Kod:
int proizvod = 1; // moras da postavis na 1 ako zelis da mnozis, ako je nula, sve ce biti 0 for(int i=1; i<=n-1; i++) // pocinjemo od prvog reda for(int j=0; j<i; j++) // pocinjemo od prvog elementa u tom redu i idemo do i-tog elemenata prozivod = proizvod * matrica[i][j] // ili ako treba da sabiras, sta vec @korisnickoime ideja ti je odlicna, samo dodaj, da ako su "i" i "j" jednaki da predje na sledeci red u matrici, nema potrebe da vrtis for petlju skroz do kraja reda Trosi vrijeme, ako je matrica ogromne velicine |
Sledeći korisnik se zahvaljuje korisniku clzola na korisnoj poruci: | ||
PeTkO (21.6.2012) |
20.6.2012, 23:26 | #8 |
Novi član
Član od: 20.6.2012.
Lokacija: Kragujevac
Poruke: 3
Zahvalnice: 0
Zahvaljeno jedanput na jednoj poruci
|
Re: Zadaci za prijemni ispit za PMF
Evo ti program pisan u fortranu, valjda je lako snaci se :P
Sutra cu da odradim u C-u. Ako ti nesto nije jasno, pitaj. PROGRAM MATRICA DIMENSION M(100,100) INTEGER P PRINT *,"Uneti red matrice:" READ (*,*) N DO I=1,N DO J=1,N READ (*,*) M(I,J) ENDDO ENDDO P=1 DO I=1, N-1 DO J=I+1, N P=P*M(J,I) ENDDO ENDDO PRINT *,P END |
Sledeći korisnik se zahvaljuje korisniku rastamankg na korisnoj poruci: | ||
PeTkO (21.6.2012) |
21.6.2012, 9:56 | #9 | |
Član
Član od: 1.4.2006.
Poruke: 493
Zahvalnice: 85
Zahvaljeno 143 puta na 83 poruka
|
Re: Zadaci za prijemni ispit za PMF
Citat:
0-ti red: Nema elemenata 1-vi red: Ima jedan element 2-gi red: Ima dva elementa itd. Za to koristis brojac b, b je broj elemenata u i-tom redu. N oznacava broj redova pa kroz prvu FOR petlju prolazis kroz redove i za svaki red sumiras/mnozis b elemenata, a to se radi u drugoj FOR petlji (sumiranje ili mnozenje). Kada zavrsis sa jednim redom inkrementiras brojac b jer trebas preci u naredni red. Brojac b je postavljen inicijalno na vrednost 1 jer nulti red nema elemenata. |
|
Sledeći korisnik se zahvaljuje korisniku BobaL na korisnoj poruci: | ||
PeTkO (21.6.2012) |
21.6.2012, 14:47 | #10 |
Banned
|
Re: Zadaci za prijemni ispit za PMF
Resio sam ovaj zadatak, i sto je najbolje, ukapirao sam na koju foru se radi, i uopste nije tesko
Ja kad zaglavim negde, javicu vam se. Imam dva zadatka koje uopste ne znam ni da postavim, ali njih cu kasnije da radim, ne mogu sad da se nerviram oko njih, radicu ove koje znam. Jos jednom hvala svima. |
21.6.2012, 15:51 | #11 |
Banned
|
Re: Zadaci za prijemni ispit za PMF
Problem, again Izgleda da cete mi biti potrebni vise nego sto sam mislio.
Zadatak glasi: Za dati broj x formiramo niz x, p(x), p(p(x)), … gde je p(x) proizvod cifara broja x. Ispisati sve brojeve u nizu do pojave prvog jednocifrenog broja. Na primer, za n = 199 ispisati 199, 81, 8. Ja sam napravio program koji dati broj deli na cifre...ali kako dalje? Potrebno mi je da te cifre mnozim, pa taj proizvod ponovo podelim na cifre, i tako u krug sve dok ne dobijem jednocifreni broj. Evo koda: Kod:
#include <iostream> #include <stdlib.h> using namespace std; int main(int argc, char** argv) { int num = 0; cout << "Unesite broj: "; cin >> num; while(num > 0) { int cifra = num%10; num /=10; cout << cifra << endl; } system("pause"); } |
21.6.2012, 16:33 | #12 |
Starosedelac
|
Re: Zadaci za prijemni ispit za PMF
Dok uzimas cifre, kreni da ih mnozis. Kada num bude jednak nuli, znaci da si pomnozio sve cifre i one ti se nalaze u proizvodu. Ispises taj proizvod, i onda proveris da li ti je taj proizvod manji od 10 (da bi bio jednocifren broj). Ukoliko jeste, kraj. Ukoliko nije, odradis sve to opet samo sto moras da resetujes promenljive.
Really bad primer: Kod:
proizvod = 1 num = 199 cifra = 9 num = 19 proizvod *= cifra = 9 cifra = 9 num = 1 proizvod *= cifra = 81 cifra = 1 num = 0 proizvod *= cifra = 81 print proizvod if proizvod < 10 finish else num = proizvod proizvod = 1 repeat |
21.6.2012, 16:36 | #13 |
Starosedelac
Član od: 14.3.2009.
Poruke: 1.200
Zahvalnice: 207
Zahvaljeno 276 puta na 179 poruka
|
Re: Zadaci za prijemni ispit za PMF
Petko ovo su gola voda zadaci,knjigu u ruke,ne trazi na gotovo...
Tako neces nauciti,ponavljam ovo je lako da lakse ne moze biti,dobro 'Hello World' je laksi Knjigu,zbirku i kucaj,kucaj,kucaj Prijateljski savet |
21.6.2012, 20:34 | #14 |
Banned
|
Re: Zadaci za prijemni ispit za PMF
Evo jednog zadatka koji sam sam resio. Jedino sam morao da nadjem pomoc na googlu oko sortiranja brojeva u nizu.
Tekst zadataka: Napisati program koji za dati niz ocena, izbacuje najveću i najmanju ocenu i računa prosek preostalih ocena. Na primer, za niz ocena 2, 3, 5, 3, 2, 2, odstranjujemo ocene 5 i 2 – pa je odgovor (2 + 2 + 3 + 3) / 4 = 2.5. Resenje: Kod:
#include <iostream> #include <cstring> #include <stdlib.h> #include <iterator> #include <algorithm> using namespace std; int main() { int x = 0; cout << "Unesite broj ocena: "; cin >> x; cout << "Unesite ocene... "<<endl; int niz[x]; int nesto = 0; int brojac = 0; float brojPodataka = 0; float sum = 0; for (brojac=0; brojac<x; brojac++) { cout << "Unesite ocenu broj "<< brojac+1 <<":"; cin >> niz[brojac]; if(brojac == x-1) { nesto = 1; brojPodataka = brojac-1; break; } } for (int nStartIndex = 0; nStartIndex < x; nStartIndex++) { int nSmallestIndex = nStartIndex; for (int nCurrentIndex = nStartIndex + 1; nCurrentIndex < x; nCurrentIndex++) { if (niz[nCurrentIndex] < niz[nSmallestIndex]) nSmallestIndex = nCurrentIndex; } swap(niz[nStartIndex], niz[nSmallestIndex]); } for(int i=1; i<x-1; i++) { sum += niz[i]; } float defRezultat = sum/brojPodataka; cout << "Prosek ocena je: "<<defRezultat<<endl; system("pause"); } Zadaci jesu laki za vas, ali su za mene jako komplikovani, jer prvi put u zivotu radim ovakav tip zadataka. Do sada sam samo radio konkretne stvari, a i plus sto imam skoro nikakvo iskustvo u aplikativnom programiranju, ja se vec 4 godine bavim web programiranjem, pa mi je malo teze da predjem u aplikativno programiranje. A za web mi ovakve stvari nisu nikada trebale. |
21.6.2012, 20:49 | #15 |
Član
Član od: 1.4.2010.
Lokacija: Kuca
Poruke: 458
Zahvalnice: 20
Zahvaljeno 37 puta na 33 poruka
|
Re: Zadaci za prijemni ispit za PMF
1. zadatak sa matricama
Kod:
#include <iostream> #include <cstdlib> using namespace std; int main(int argc, char* argv[]) { int n,i,j; cin >> n; int a[n][n]; int e = 1; for (i = 0; i<n; i++) { for (j = 0; j<n; j++) { a[i][j] = e; e++; } } // sabiranje int c = 0; for (i = 0; i<n - 1; i++) { for (j = i + 1; j<n; j++) { c = c + a[j][i]; } } cout << c << endl; return 0; } Kod:
#include <iostream> #include <cstdlib> using namespace std; int mnozi(int n) { int p = 1; while (n>0) { p = p * (n%10); n = n / 10; } return p; } void go(int n) { cout << n << " "; int p; if (n < 10) { return; } p = mnozi(n); go(p); } int main(int argc, char* argv[]) { int n; cin >> n; go(n); return 0; } |
21.6.2012, 20:50 | #16 |
Član
Član od: 14.4.2010.
Lokacija: Podgorica
Poruke: 332
Zahvalnice: 61
Zahvaljeno 11 puta na 11 poruka
|
Re: Zadaci za prijemni ispit za PMF
@PeTkO, treci zadatak
Al' si ga zakomplikovao Sta ce ti sortitanje ? dovoljna ti je jedna for petlja da rijesis citav zadatak Uzmes tri promenljive u koje ces da cuvas minimum, maximum i sumu svih elemata niza. Naziovimo ih 'min', 'max' i 'suma'. min, max i suma postavis da su jednaki prvom elementu niza, a[0]. Zatim ide for petlja od i=1 (drugog clana niza) do i<=n-1 (indeksiranje u C/C++ ide od nule!) i provjeravas da li je tekuci element niza manji od minimuma ili veci od maximuma i + racunas sumu. Na kraju svega, oduzmes od sume 'min' i 'max' i podjelis sa n-2 i to je to Kod ovakvih problema, nemoj da gledas to sad ucio si duze vremena web pa sad malo teze kapiras 'aplikativno' programiranje, vec problem pokusaj da rijesis matematicki. Ovo je nista vise do matematika. Tako da ovakve probleme u stvari posmatraj kao matematicke probleme. |
21.6.2012, 21:02 | #17 |
Član
Član od: 1.4.2010.
Lokacija: Kuca
Poruke: 458
Zahvalnice: 20
Zahvaljeno 37 puta na 33 poruka
|
Re: Zadaci za prijemni ispit za PMF
Evo zadatka sa ocenama
Kod:
#include <iostream> using namespace std; int main(int argc, char* argv[]) { int n; cin >> n; int k; cin >> k; n = n - 1; int max = k; int min = k; int c = k; for (int i = 0; i<n; i++) { cin >> k; if (k>max) max = k; if (k<min) min = k; c = c + k; } int prosek = (c - max - min) / (n-1); cout << prosek << "\n"; return 0; } |
21.6.2012, 22:03 | #18 |
Banned
|
Re: Zadaci za prijemni ispit za PMF
Zasto prosto kad moze komplikovano
Pa bunilo me je ovo da bude niz sortiran od najmanjeg ka najvecem broju, tj. oceni. Ali eto, nisam smislio prostije resenje od mog, ali kada sam video da moze prostije, onda sam bio u fazonu "Ti nisi normalan" A sto se tice samog resavanja zadataka...Ja sve zadatke umem da resim u svojoj glavi, ali mi je problem kad to treba da prenesem na papir, u ovom slucaju u kod. Evo jos jednog uradjenog zadatka: Kod:
Za datu Cezarovu šifru, kodirati string sastavljen od velikih slova engleske abecede. Kod ovog šifriranja, svako slovo se menja odgovarajućim slovom iz drugog reda. Na primer, za reč*‘MATEMATIKA’ štampati ‘PDWHPDWLND’. Original:**A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Cezar:******D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Kod:
#include <iostream> #include <stdlib.h> #include <cstring> using namespace std; int main() { char rec[120]; char cezar[26]={'D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','A','B','C'}; cout << "Unesite rec (VELIKIM SLOVIMA): "; cin.getline(rec, 120); int duzina = strlen(rec); for(int i = 0; i < duzina; i++) { int index = rec[i] - 'A'; char slovoZaZamenu = cezar[index]; cout << slovoZaZamenu; } cin.get(); system("pause"); } |
21.6.2012, 22:39 | #19 |
V.I.P. GNU/Linux
Član od: 1.11.2005.
Poruke: 11.166
Zahvalnice: 2.086
Zahvaljeno 4.923 puta na 2.859 poruka
|
Re: Zadaci za prijemni ispit za PMF
Joj, ne koristi ovo system("pause"), time nepotrebno vezuješ program za Windows čiji shell podržava komandu pause, a na ostalim operativnim sistemima ne postoji komanda pause u shell-u.
Takođe, ako već koristiš C++, slobodno upotrebljavaj njegove mogućnosti umesto što pišeš C program sa char[] stringovima. Kod:
#include <iostream> #include <string> using std::cout; using std::cin; using std::string; int main() { string rec; string cezar = "DEFGHIJKLMNOPQRSTUVWXYZABC"; cout << "Unesite rec (velikim slovima): "; cin >> rec; for(int i = 0; i < rec.length(); i++) cout << cezar[rec[i] - 'A']; cin.get(); cin.ignore(); return 0; } |
21.6.2012, 22:50 | #20 |
Banned
|
Re: Zadaci za prijemni ispit za PMF
Kada ne koristim system("pause"), vec return 0, program mi se automatski zatvori, tako da ne mogu da vidim krajnji rezultat. Znaci radi sve dok ne dodje do poslednje naredbe.
Poslusacu tvoj savet za C++. Hvala |
Bookmarks sajtovi |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Access - vezbe i zadaci | surovivuk | Aplikativni softver | 0 | 18.12.2011 14:19 |
Zadaci za kontrolni :) | JaSamKorisnik | Programiranje | 3 | 16.6.2010 20:29 |
Zadaci sa bitovima, ili kako već da ih nazovem.. | forrest_gump | Programiranje | 19 | 28.8.2008 3:50 |
Zadaci iz informatike za 8. razred OŠ | DobroslaV | Programiranje | 3 | 12.11.2007 23:03 |