Advertisement
Disaster26

Funkcje

Mar 26th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.81 KB | None | 0 0
  1. #include "header.h"
  2. #include <stdexcept>
  3. #include <stddef.h>
  4. using namespace std;
  5. int RzymArab::rzym2arab(string rzym)
  6. {
  7.     int tab1[11]= {0};
  8.     int licznik = 0;
  9.     string s=rzym;
  10.     for(int i=0; i<s.length(); i++)
  11.     {
  12.         for (int j=0; j<=12; j++)
  13.         {
  14.             if (string(1,s[i])==liczby1[j])
  15.             {
  16.                 tab1[licznik]=liczby2[j];
  17.                 licznik++;
  18.                 break;
  19.             }
  20.             if (j==12 && string(1,s[i])!=liczby1[12])
  21.                 throw invalid_argument( "To nie jest liczba rzymska" );
  22.         }
  23.     }
  24.     int suma=0;
  25.     for (int k=0; k<10; k++)
  26.     {
  27.         if(tab1[k]<tab1[k+1])
  28.         {
  29.             int a=tab1[k+1]-tab1[k];
  30.             if (a==4||a==9||a==40||a==90||a==400||a==900)
  31.             {
  32.                 suma=suma-tab1[k];
  33.             }
  34.             else
  35.                 throw invalid_argument( "Zle skonstruowana liczba rzymska");
  36.         }
  37.         else
  38.             suma=suma+tab1[k];
  39.  
  40.     }
  41.     string suma_sprawdzajaca = arab2rzym(suma);
  42.     if (rzym==suma_sprawdzajaca)
  43.         return suma;
  44.     else
  45.         throw invalid_argument( "Zle skonstruowana liczba rzymska");
  46. }
  47.  
  48. string RzymArab::arab2rzym (int arab)
  49. {
  50.  
  51.     if(arab>3999 || arab<1)
  52.         throw invalid_argument( "Liczba spoza zakresu");
  53.     string tutaj_zapisuje2[11];
  54.     int i=12;
  55.     int licznik=0;
  56.     while( i >= 0)
  57.     {
  58.         if (arab/liczby2[i]>=1)
  59.         {
  60.             tutaj_zapisuje2[licznik]=liczby1[i];
  61.             arab=arab-liczby2[i];
  62.             licznik++;
  63.             continue;
  64.         }
  65.         else
  66.             i--;
  67.     }
  68.     string s="";
  69.     for( int j=0; j<11; j++)
  70.     {
  71.         if (tutaj_zapisuje2[j] != "\0" )
  72.             s=s+tutaj_zapisuje2[j];
  73.         else
  74.             continue;
  75.     }
  76.     return s;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement