QBasic - Trebam par schema za zadatke.

poruka: 4
|
čitano: 3.233
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
10 godina
neaktivan
offline
QBasic - Trebam pomoć oko zadataka

Pozdrav svima,

 

Imam 3 zadatka iz QBasica u kojima ne znam par stvari.

Nadam se da će se naći netko voljan da mi pomogne.

 

Hvala unaprijed svima! :)

 

 

1.ZADATAK

 

1.    Napraviti program koji u datoteku unosi niz prirdnih brojeva. Potom ispisati iz datoteke sve proste faktore zadnjeg broja koji je unesen. Zatim ispisati iz datoteke zbroj znamenki svih parnih unesenih brojeva. Na kraju ispisati iz datoteke na zaslon najveći uneseni prost broj. (ne razumijem kako uzeti zadnji broj i ispisati mu faktore i ispisati zbroj znamenki svih parni brojeva)

 

 

2.ZADATAK

 

1.    Napraviti program koji u datoteku unosi proizvoljan broj riječi. Potom ispisati iz datoteke na zaslon samo one riječi koje sadrže paran broj slova „a“. Nakon toga upisati u datoteku naopako samo one riječi čija je duljina broj djeljiv sa 5 ili sa 2. Ispisati na zaslon broj ponavljanja slova „c“ i slova „b“ u svim unesenim riječima. (kako ispisati riječi koje sadrže paran broj slova a)

 

    3.ZADATAK

 

   Upisati u datoteku slovo.dat proizvoljan broj riječi. Potom ispisati iz datoteke na zaslon naopako sve one riječi čija duljina nije prost broj. Zatim ispisati iz datoteke samo one riječi koje ne sadrže slovo „b“ i ispisati riječi sortirane po duljini od najdulje do najkraće.(kako ispisati riječi čija duljina nije prost broj,i riječi koje ne sadrže "b")

 3

Poruka je uređivana zadnji put sub 7.6.2014 21:42 (Denon94).
Moj PC  
0 0 hvala 0
15 godina
offline
Re: QBasic - Trebam pomoć oko zadataka

što zapravo ne znaš? algoritam? Nema ga, tj nije stvar zadatka izguglati i C/P nego napraviti potrebne rutine.

-hintovi, vjerojatno znaš koristiti GET i PUT, EOF, if-then/CASE ali ovakve stvari su ipak unutar neke petlje..

... razbi na dijelove (sub-rutine) što više, nakon par dijelova već će ti biti jasnije kako doći do cilja kao kad slažeš puzzle, u početku je 'nemoguće'.. i onda krene.

-svaki ulaz ili izlaz je zapravo jednak za podatke (tipkovnica-ekran ili file..) tako da tu nema bitne razlike.

-korisit string$ za sva 'žongliranja' bez obzira na tip podatka npr broj. Uz to ti treba LEN$, STR$, left-right ili mid$.. ali predpostavka da znaš osnovne naredbe jer je zadatak ipak malo teži.

 

 

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
10 godina
neaktivan
offline
Re: QBasic - Trebam pomoć oko zadataka
ihush kaže...

što zapravo ne znaš? algoritam? Nema ga, tj nije stvar zadatka izguglati i C/P nego napraviti potrebne rutine.

-hintovi, vjerojatno znaš koristiti GET i PUT, EOF, if-then/CASE ali ovakve stvari su ipak unutar neke petlje..

... razbi na dijelove (sub-rutine) što više, nakon par dijelova već će ti biti jasnije kako doći do cilja kao kad slažeš puzzle, u početku je 'nemoguće'.. i onda krene.

-svaki ulaz ili izlaz je zapravo jednak za podatke (tipkovnica-ekran ili file..) tako da tu nema bitne razlike.

-korisit string$ za sva 'žongliranja' bez obzira na tip podatka npr broj. Uz to ti treba LEN$, STR$, left-right ili mid$.. ali predpostavka da znaš osnovne naredbe jer je zadatak ipak malo teži.

 

 

Da da,znam osnovne naredbe. Kod ovih zadataka bih znao napraviti određenu datoteku,ali ove navedene djelove u zagrada baš i ne.

Len i mid mi je kod većine zadataka,jer radimo sa stringovima,bude pokoji zadatak da ubaci i niz brojeva i sl....Hvala ti :)

15 godina
offline
Re: QBasic - Trebam pomoć oko zadataka
Denon94 kaže...
.. djelove u zagrada baš i ne.

..

 npr 2. riječ koja sadrži parna slova a.

treba koristiti dimenzioniranje polja ovisno o broju članova niza koje imaš u bazi.. teorestki beskonačno, može se i to predvidjeti

 

npr Dim a(xxx) as string (ali u primjeru ću koristiti a1$)

 

inicijalni input (može biti tipkovnica, file..)

za ovakvo uspoređivanje nije bitno dali je a ili A, tad se može koristiti npr ucase$/lcase$

 

REM *** inicijalne vrijednosti za test, rem = '
a1$ = "krava"
'a1$ = "karavan"
'a1$ = "sedlo"
REM *** remaj dvije od tri inicijalne vrijednosti
REM *** prva ima 2xA, 2. 3xA, 3. nula.

aLen = LEN(a1$)
bslovo$ = ""
bPar = 0
'STOP : rem za testiranje u debugu
CLS

PRINT a1$
PRINT "-------------"
DO WHILE aLen > 0
   bslovo$ = MID$(a1$, aLen, 1)
   aLen = aLen - 1
   PRINT bslovo$: REM ** vidi ispis, zgodan za okretanje unazad..
   IF LCASE$(bslovo$) = "a" THEN b = b + 1
LOOP

'STOP : rem za testiranje u debugu

PRINT "rijeź: "; a1$; " sadr§i "; b; " slova 'a'."
  PRINT "... broj slova 'a' u rijeźi rijeźi ... "; a1$
  IF (b / 2) - (b \ 2) = 0 THEN
    PRINT "je paran"
    IF b = 0 THEN PRINT "jer nula je takoĐer paran broj"
  ELSE
    PRINT "je neparan"
  END IF

 

 naravno, trebaš neovisne dijelove za snimanje, učitavanje podataka, kao i pamtiti (ne samo ispisati paran..) neku vrijednost.

Ista stvar se može na više različitih načina. Koji način ovisi o potrebi pa i snalažljivosti.

npr do-loop petlja samo prebrojava slova 'a' i sprema u variablu b... inicijalno nula.

pošto nije važan 'smijer' ovdje idemo unazad od startne duljine riječi do nule, može i od nule do zadane duljine (sam brojač i uvijet while) dok se mid$ može promijeniti s len-trenutno slovo...

- dijeljenje s 2 i div s 2 razlika je nula ako nema ostatka, taj 'trik' se koristi za testiranje dali je broj paran. Može i bilo koji drugi način.

-u normalnom programu bi od većeg broja riječi trebao zapamtiti koja je s parnim brojem slova a. Ako je npr dimenzioniran a$(x) tad se može uvesti variabla npr cParnaRijec(x) postaviti kao 0-1 true/false i iterirati kroz petlju, za svaki x, dobije 0 ili -1 (može bilo što non zero), nula je false, -1 true i tako se može printati

npr: if c(x) print a$(x) ... (to je dovoljna sintaxa), kao i puna if c(x)=-1 ili 0 ili <> ... ovisi što ti je zgodnije.

 

edit: (zboj znamenki)

 

CLS
DIM iBroj AS DOUBLE
DIM aBroj AS STRING
DIM cBroj AS DOUBLE

DO
  iBroj = 0
  aBroj = ""
  bLen = 0
  cBroj = 0
  INPUT "unesi broj: ", iBroj
 
  aBroj = STR$(iBroj)
  bLen = LEN(aBroj)

  IF iBroj = 0 THEN
      PRINT "Zbroj je nula ili nedozvoljen unos: "; "("; iBroj; ")"
      EXIT DO
  ELSE
      FOR x = 2 TO bLen
        cBroj = cBroj + VAL(MID$(aBroj, x, 1))
        PRINT MID$(aBroj, x, 1)
      NEXT x
  END IF

  PRINT "uneçen broj: "; aBroj
  PRINT "duljine: (bez predznaka) "; bLen - 1
  PRINT "------------------------"
  PRINT "zbroj znamenki: "; cBroj
  PRINT "------------------------"
  PRINT "------------------------"

LOOP

 

C64/TurboModul-OpenSourceProject.org.cn.部分作品为网上收集整理,供开源爱好者学习使用
Poruka je uređivana zadnji put pet 13.6.2014 0:50 (ihush).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice