www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

Euro kalkulator na ARM-u

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
Dauče
Neznanec
Neznanec



Pridružen-a: Tor 26 Dec 2006 18:52
Prispevkov: 1
Aktiv.: 0.00

PrispevekObjavljeno: Tor Dec 26, 2006 7:00 pm    Naslov sporočila:  Euro kalkulator na ARM-u Odgovori s citatom

Pozdravljeni!

sem nov na forumu, tako da upam, da sem dal temo pod taprav podforum

zdej za projekt na FE delam evro kalkulator, s pomočjo ŠARM-a.
ker sem bolj amaterski tip v programiranju, se mi je porodila težava in sicer kako vpisati številke večje od 10, ketere so prikazane na lcdju? tipkovnico sem nekako uspel usposobiti da dela numerični del, glede tega izpisa imam pa težave.
bom pokazu ta del kode kjer je ta izpis in bi lepo prosu kakšnega majstra za pomoč.

Koda:
 while(1)
  {
     enice:
     gotoxy(1, 1);
     printf("euro: ");
     st=tipka();
     gotoxy(1, 2);
     printf("sit: ");   
 
      if(st!=12) 
      {
        gotoxy(6, 2);
        euro = st*239.64;
        printf("%4.2f", euro);
      }
      if(euro == 0) // če ni pritisnjena še nobena tipka pojdi na začetek (enice)
      goto enice;
   
   /*desetice: 
     gotoxy(8, 1);
     st1=tipka();
     if(st1!=12)     
     {
       gotoxy(6, 2);
       euro10 =  (euro*10)+(st1*239.64);
       printf("%6.2f", euro10);
     }
     
   if(euro10 == 0) // če ni pritisnjena še nobena tipka pojdi na začetek (enice)
   goto desetice; */
  }   
  return 0;


Pravila na forumu!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
chaos
Član
Član



Pridružen-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sob Jan 06, 2007 1:28 am    Naslov sporočila:   Odgovori s citatom

Katere 'numerične' tipke pa misliš?

Mogoče bi program zastavil malo drugače:
z dvema tipkama (+/-) izbereš vrednost, s še eno tipko dodaš ničlo (pomnožiš z deset), s še eno tipko pa izvedeš preračun.
Tako imaš samo eno spremenljivko, v kateri držiš vrednost v €, moraš jo pa vsakič na novo spremeniti v string in izpisati ...

Tako se ti ne bo treba posebej ukvarjati z enicami, deseticami, stoticami ...
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
blueH2O
Član
Član



Pridružen-a: Sob 30 Sep 2006 9:23
Prispevkov: 71
Aktiv.: 0.31

PrispevekObjavljeno: Sob Jan 06, 2007 6:13 pm    Naslov sporočila:   Odgovori s citatom

Dauče, oprosti za pozen odgovor. Prazniki so bili dolgi. Sem poskusil kodo poenostaviti, pa mi ni uspelo. Ko boš imel več izkušenj s tem, lahko uporabiš druge trike in koda bo preglednejša, npr. uporaba svojih funkcij, switch stavek.

Začetnikom priporočam Notepad++ za urejanje kode, saj postane preglednejše (barve). WinIDEA ima slab urejevalnik teksta.

Verjetno ta koda ni rešitev, ki si jo pričakoval... vsaj deluje. Komentarji so pa za čistega začetnika, vem da je pol nepotrebnih.

Koda:

//euro calculator, za poljubno število mest

#include "io.h"

int main()
{
   _KeyInit();
   _LCDInit();

   clrscr(); //na začetku pobriše zaslon, če je bilo še kaj od prej...
   
   /*
     na Š-ARMu imaš tipke od '0' do '3'
     '0' naj bo -1
     '1' naj bo +1
     '2' naj pomakne za eno mesto naprej
     '3' naj izračuna
   */
   
   int tolarji;
   int euri = 0; //na začetku je 0 EUR
   int mesta = 1; //na začetku so samo enice
   int cifra = 0; //prva cifra, ki se pokaže je 0... bodi pozoren, na zaslonu moraš prikazat znak (char) 0
   int pozicija = 15; //začetna pozicija, kjer spreminjaš eure... enice so daleč na desni
   char tipka;
   
   gotoxy(1,1);
   printf("EUR: "); //izpiši na začetku
   
   while(1)
   {
      tipka = getch(); //preberi tipko
      
      if(tipka == '0') //prva tipka na ŠARMu pomeni -1
      {
         gotoxy(pozicija,1); //skoči na pozicijo, kjer je cifra
         cifra = cifra - 1; //zmanjšaj cifro za ena
         if(cifra < 0) cifra = 9; //če je cifra manjša od 0, skoči na 9
         printf("%d", cifra);
      }
      
      if(tipka == '1') //+1
      {
         gotoxy(pozicija,1);
         cifra = cifra + 1;
         if(cifra > 9) cifra = 0; //če je več od 9, skoči na 0
         printf("%d", cifra);
      }
      
      if(tipka == '2') //pomik naprej - desetice, stotice ali karkoli pač je...
      {
         euri = euri + cifra * mesta;
         mesta = mesta * 10; //če so bile prej enice, bojo sedaj desetice... če so bile prej desetice, bojo sedaj stotice...
         
         pozicija = pozicija - 1; //izpisuj cifro, ki jo spreminjaš, na naslednje mesto (levo od prej)
         gotoxy(pozicija,1);
         cifra = 0;
         printf("%d", cifra);
      }
      
      if(tipka == '3')
      {
         euri = euri + cifra * mesta;
         tolarji = 240 * euri; //preračunaj eure v tolarje... 1 EUR je približno 240 SIT - celo število, da se izogneš težavam
         
         gotoxy(1,2);
         printf("SIT: %d", tolarji); //izpiši v drugo vrstico
         
         while(1); //program se tukaj konča... non-stop se zanka vrti v prazno (dokler ne pritisneš reset)
      }
   }
   return 0;
}
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> ARM arhitektura Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 495 dni


Powered by phpBB © 2001, 2005 phpBB Group