Waňov web

PB161 Jazyk C++ - 3. cvicení

Prevod fyzikálních jednotek

Zadání

Vytvorte program, který bude ze standardního vstupu císt výrazy slozené z císla, predpony a fyzikální jednotky a na standardní výstup vypíse tento výraz upravený do základního tvaru (tj. predpona se nahradí vynásobením odpovídající mocninou 10; napríklad 11 km/s se prevede na 11000 m/s, 0.3 aF na 3e-19 F.)

Pozadavky:

Poznámky:


Riešenie:


jednotky.C
#include <iostream>
using namespace std;

int i,ind,chyba=0;    // ind=index prdpony v poli
float vstupne_cislo,prevedene_cislo;
char 
predpony[]={'Y','Z','E','P','T','G','M','k','#','m','u','n','p','f','a',
            'z','y',                                  //3. mocniny
            'h','D','#','d','c'};                     //1. mocniny
string jednotka;
//================================ MAIN =======================================
int main(void)
{
 cout<<"Program na prevod jednotiek do zakladneho tvaru"<< endl;
 cout<<"Zadaj jednotku v tvare: \"cislo jednotka(km) \" "<< endl;
 cout<<"Zadaj vyraz: ";

 while((cin >> vstupne_cislo >>jednotka)) 
 {
  ind=-1;prevedene_cislo=1;
  cout <<vstupne_cislo<<" "<<jednotka;
  for(i=0;i<22;i++) if (jednotka[0]==predpony[i]) {ind=i; break;}
  
  if ((ind==-1) || (jednotka[0]=='#')||(jednotka[1]==0)) 
       {   // --------------- CHYBA  ---------
        if (jednotka[1]==0)
           cout<<"| CHYBA: Po predpone nie je jednotka!!"<<endl;
        else
           cout<<"| CHYBA: predpona nebola najdena!!"<<endl;
        chyba++;
       }
   else    // -------- existuje predpona -----------
       {
        jednotka[0]=' ';
        if (ind<17) 
              {
               ind=0-(ind-8)*3;
              }
           else ind=0-(ind-19);

        if(ind>0) for(i=0;i<ind;i++) prevedene_cislo*=10; 
          else    for(i=0;i>ind;i--) prevedene_cislo/=10; 

        cout <<" -> "<<vstupne_cislo*prevedene_cislo << jednotka<<endl;
       };
  cout <<"Zadaj vyraz: ";

 }

return chyba;
}


Nahor