Kod: |
int main(void) { long unsigned n, tn, d, j=0, k=0; printf ("Unesi n i d: "); scanf("%lu%lu", &n, &d); for (n; n-d>0; n-=d) { tn=n; while (tn>0) /*red samo sa zvjezdicama*/ {printf ("*"); tn--; } printf("\n"); tn=n; for (j=0; j<tn-2; j++) /*redovi s tockicama*/ { printf ("*"); for (k=0; k<tn-2; k++) {printf (".");} printf ("*"); printf ("\n"); } tn=n; /*while petlja ista kao gornja*/ while (tn>0) {printf ("*"); tn--; } } return 0; } |
Kod: |
int main(void) { int n, i, ak, ak1, ak2, ak3, prvi, drugi, treci, fib=0, alfa, alfa_konst=0; printf ("Unesi n kao duljinu niza (<20): "); scanf ("%d", &n); printf ("Unesi brojeve: "); scanf ("%d%d%d", &prvi, &drugi, &treci); ak3=prvi; ak2=drugi; ak1=treci; for (i=0; i<n-2; i++) /*broj unosa je n-1 jer su prvi, drugi i treci 3 clana + (n-3 ostalih + a0)*/ { fib=0; scanf ("%d", &ak); if (i==0) {for (alfa=0; alfa<ak; alfa++) { if (ak1==((ak2)+(alfa*(ak3)))) {fib=1; alfa_konst=alfa; /*zadaj alfa_konst samo ako postoji prvi put; ako ne postoji za prva tri clana, ne postoji ni za ostale*/ break;} } } for (alfa=0; alfa<ak; alfa++) { if (ak==((ak1)+(alfa*(ak2)))) {fib=1; break;} } if (alfa_konst!=alfa) {fib=0;} /*alfa uvijek mora ostati ista, i to kao pocetni alfa_konst*/ if (fib==0) {break;} ak1=ak; ak2=ak1; } if (fib==0) {printf ("Niz nije fibonaccijevski.\n");} else {printf ("Ucitani niz brojeva je fibonaccijevski s alfa = %d", alfa_konst);} return 0; } |
Kod: |
int main(void) { int a, b, c, t, ia, ib; printf ("Unesi a i b: "); scanf ("%d%d", &a, &b); if (b>a) {t=a; a=b; b=t;} if (b<0) b=-b; if (a<0) a=-a; ia=a; ib=b; while (a%b!=0) { c=a%b; a=b; b=c; } printf ("GCD(%d,%d) = %d", ia, ib, c); return 0; |
Kod: |
int bzub10(int x) { int brojac=0; while (x>0) {x/=10; brojac++;} return brojac; } int bzub6(int x) { int brojac=0; while (x>0) {x/=6; brojac++;} return brojac; } int bub6 (int x) { int broj=0, nbroj=0, znam, i; int t=x; if (x<0) t=-x; while (t>0) { broj=broj*10+t%6; t/=6; } if (bzub6(x)!=bzub10(broj)) { while (bzub6(x)!=bzub10(broj)) broj*=10; } return broj; } int imazn(x) { int vr=1, nx; nx=bub6(x); for (nx; nx; nx/=10) { if (nx%10!=1 && nx%10!=2 && nx%10!=3) vr=0; } return vr; } int main(void) { int a, b, i, brojac=0; scanf ("%d%d", &a, &b); if (b>a) {int temp; temp=a; a=b; b=temp;} for (i=a-1; i>b; i--) { if (imazn(i)) {printf ("%d ", i); brojac=1;} } if (brojac==0) printf ("Nema takvih brojeva."); return 0; } |
krilo (napisa): | ||
|
krilo (napisa): |
Ta funkcija ne radi ništa, rekla bih, za čovjeka smisleno |
Citat: |
ali služi svrsi zadatka. |
Citat: |
Zvuči glupo, ali konstruira obrnuti zapis broja u bazi 6 |
Citat: |
Treba mi da kasnije za funkciju koja će provjeriti ima li u tom zapisu drugih znamenaka osim 1, 2, 3. |
Citat: |
Otherwise, ne znam što podrazumijevaš pod high-level objašnjenje. |
Citat: |
Bila sam napisala kompletnu funkciju koja ispisuje broj u bazi 6 |
Citat: |
bavim se programiranjem tek 3 mjeseca, pa nisam 100% sigurna da će se ono što kodiram realizirati u program koji će uvijek raditi |
Citat: |
Ne zamjeram "agresivnost", razumljivo je. |
Citat: |
Nemam dovoljno iskustva da procijenim da funkcija ne valja |
Citat: |
ako vidim da služi svrsi, ne nalazim problem. |
Kod: |
#include <stdio.h>
/* Funkcija koja vraca 1 ako n u bazi 6 ima samo znamenke izmedju 1 i 3. U suprotnom vraca 0. Funkcija pretpostavlja da je n > 0. */ int znamenke_u_bazi_6_samo_izmedju_1_i_3(int n) { int znamenka; /* U petlji provjeravamo sve znamenke od n. */ while (n > 0) { znamenka = n % 6; /* Ako znameka nije izmedju 1 i 3 mozemo odmah vratiti 0. */ if (znamenka < 1 || znamenka > 3) return 0; /* Ako je ova znamenka bila ok, onda idemo provjeriti sljedecu. */ n = n / 6; } /* Ako smo izvrtili cijelu petlju bez da smo vratili 0, to znaci da su sve znamenke izmedju 1 i 3. */ return 1; } int main() { int a, b, n; int pronasao = 0; /* ovo cemo postaviti na 1 ako nadjemo neki broj s trazenim svojstvom */ scanf("%d%d", &a, &b); /* Prvo osiguramo da bude a <= b. */ if (a > b) { int t = a; a = b; b = t; } /* Sada ispisemo trazene brojeve. */ for (n = a + 1; n < b; n = n + 1) { if (znamenke_u_bazi_6_samo_izmedju_1_i_3(n)) { printf("%d ", n); pronasao = 1; } } /* Ako nismo pronasli nijedan broj, ispisujemo odgovarajucu poruku. */ if (!pronasao) { printf("Nema takvih brojeva."); } return 0; } |
hendrix (napisa): |
Lijepo je da se, za promjenu, i ovdje nešto rješava. |
Citat: |
Samo bih uputio krilo na ovaj topic |
mdoko (napisa): |
U svakom slučaju, ako nešto zvuči glupo, onda to uglavnom znači da nisi skroz iskristalizirala algoritam kojim se problem treba riješiti, nego pribjegavaš nekakvim ad-hoc rješenjima. |
Citat: |
Meni se čini da ti na neki način poistovjećuješ broj s njegovim zapisom u bazi 10. Nemoj to raditi. |
Citat: |
Točno ovo što si napisala. Svaka čast na koncizno sročenom objašnjenju. |
Citat: |
Zašto si uopće išla pisati tu funkciju? |
Citat: |
Ja se bavim programiranjem 20 godina , pa još uvijek nisam 100% siguran da će ono što kodiram rezultirati točnim rješenjem problema na kojem radim. |
Citat: |
Zar ti nije čudno da tvoj algoritam radi za baze 2, 3, 4, 5, 6, 7, 8, 9 i 10, ali kad naletimo na bazu 11, odjednom imamo problem? |
Citat: |
Lijepo je da se, za promjenu, i ovdje nešto rješava. |
krilo (napisa): |
Moram ti priznati da je "algoritmiranje" jedna od najtežih stvari na prvoj godini za ljude koji to nikad u životu nisu vidjeli... |
Citat: |
(osobno, iz opće sam gimnazije) |
Citat: |
jednostavno naučiti razmišljati kao komp i pojednostavljivati programe na način na koji ti to radiš je meni prilično fascinantno |
Citat: | ||
Zato što gospodična, otkad je otkrila funkcije, voli sve preko njih raditi jer su nekako... elegantne. (Sviđa mi se ideja da se u glavnoj funkciji sve može skratiti samo na pozivanje funkcija bez puno žongliranja petljama i sličnim.) |
Citat: |
Ustvari, još jedno pitanjce: Kolko god moj kod bio bedast, zakaj ne radi? |
output generated using printer-friendly topic mod. Vremenska zona: GMT + 01:00.