Professional Documents
Culture Documents
uses crt;
var a,b,c,nria,nrja,nrib,nrjb,nric,nrjc:numar;
nrbaza:2..50;
z:word;
ter,nmar:byte;
uk,uk1,uk2,cifnr:char;
inceput
a1 <- a;
b1 <- b;
daca a1.npoz>b1.npoz atunci
inceput
pentru i <- b1.npoz + 1 pana la a1.npoz executa
b1.vectcif[i] <- 0;
b1.npoz <- a1.npoz;
sfarsit;
t <- 0;
pentru i <- 0 pana la a1.npoz executa
daca a1.vectcif[i] >= b1.vectcif[i]+t atunci
inceput
c.vectcif[i] <- a1.vectcif[i] - b1.vectcif[i] - t;
t <- 0;
sfarsit
altfel
inceput
c.vectcif[i] <- a1.bza + a1.vectcif[i] - b1.vectcif[i]
- t;
t <- 1;
sfarsit;
c.npoz <- a1.npoz;
c.bza <- a1.bza;
daca c.npoz <> 0 atunci
cat timp (c.vectcif[c.npoz]=0) si (c.npoz<>0) executa
dec(c.npoz);
sfarsit;
subalgoritmul nradunare;
inceput
clrscr;
writeln ('* * Adunarea * *');
writeln;
write ('*-> Baza pentru A este : ');
readln (nrbaza);
writeln;
write ('*-> Numarul A este : ');
crearenr (a,nrbaza);
writeln;
write ('*-> Baza pentru B este : ');
readln (nrbaza);
writeln;
write ('*-> Numarul B este : ');
crearenr (b,nrbaza);
writeln;
write ('*-> Baza rezultatului este : ');
readln (nrbaza);
daca a.bza > nrbaza atunci
convbaza_impar (a,nrbaza)
altfel
daca a.bza < nrbaza atunci
convbaza_inmult (a,nrbaza);
daca b.bza > nrbaza atunci
convbaza_impar (b,nrbaza)
altfel
daca b.bza < nrbaza atunci
convbaza_inmult (b,nrbaza);
writeln;
write ('Rezultat : ');
adunare (a,b,c);
afisare (c);
readkey;
sfarsit;
subalgoritmul nrscadere;
inceput
clrscr;
writeln ('* * Scadere * *');
writeln;
write ('*-> Baza pentru A este : ');
readln (nrbaza);
write ('*-> Numarul A este : ');
crearenr (a,nrbaza);
write ('*-> Baza pentru B este : ');
readln (nrbaza);
write ('*-> Numarul B este : ');
crearenr (b,nrbaza);
write ('*-> Baza rezultat este : ');
readln (nrbaza);
daca a.bza > nrbaza atunci
convbaza_impar (a,nrbaza)
altfel
daca a.bza < nrbaza atunci
convbaza_inmult (a,nrbaza);
daca b.bza > nrbaza atunci
convbaza_impar (b,nrbaza)
altfel
daca b.bza < nrbaza atunci
convbaza_inmult (b,nrbaza);
writeln;
write ('Rezultat : ');
scadere (a,b,c);
afisare (c);
readkey;
sfarsit;
subalgoritmul nrinmultire;
inceput
clrscr;
writeln ('* * Inmultire * *');
writeln;
write ('*-> Baza este : ');
readln (nrbaza);
write ('*-> Numarul A este : ');
crearenr (a,nrbaza);
nmar <- nrbaza;
cat timp nmar >= nrbaza executa
inceput
write ('*-> Numarul B este : ');
readln (cifnr);
daca ord(cifnr)<=ord('9') atunci
nmar <- ord(cifnr)-48
altfel
nmar <- ord(UPCASE(cifnr))-55;
sfarsit;
inmultire (a,nmar,c);
writeln;
write ('Rezultat : ');
afisare (c);
readkey;
sfarsit;
subalgoritmul nrimpartire;
inceput
clrscr;
writeln ('* * Impartire * *');
writeln;
write ('*-> Baza este : ');
readln (nrbaza);
write ('*-> Numarul A este : ');
crearenr (a,nrbaza);
nmar <- nrbaza;
cat timp (nmar >= nrbaza) or (nmar = 0) executa
inceput
write('*-> Numarul B este : ');
readln(cifnr);
daca ord(cifnr)<=ord('9') atunci
nmar <- ord(cifnr)-48
altfel
nmar <- ord(UPCASE(cifnr))-55;
sfarsit;
impartire (a,nmar,c,ter);
writeln;
write (' Rezultat : ');
afisare (c);
write (' rest ');
daca ter <= 9 atunci
write(ter)
altfel
write (chr (ord (ter) + 55));
readkey;
sfarsit;
subalgoritmul nrcomparare;
inceput
clrscr;
writeln ('* * Comparare * *');
writeln;
write ('*-> Baza numarului A este : ');
readln (nrbaza);
write ('*-> Numarul A este : ');
crearenr (a,nrbaza);
write ('*-> Baza numarului B este : ');
readln (nrbaza);
write ('*-> Numarul B este : ');
crearenr (b,nrbaza);
z <- comparare (a,b);
writeln;
write ('Rezultat : ');
daca z = 0 atunci
writeln (' * A = B * ')
altfel
daca z=1 atunci
writeln (' * A > B * ')
altfel
writeln (' * A < B * ');
writeln;
readkey;
sfarsit;
subalgoritmul nrconversii;
inceput
repeat
clrscr;
writeln ('* * Conversii * *');
writeln;
writeln ('*-> 1. - Calcul in baza data - ');
writeln ('*-> 2. - Calcul in baza rezultat - ');
writeln ('*-> 3. - Folosirea unei baze auxiliare - ');
writeln;
writeln ('*Esc* Inapoi');
uk2 <- readkey;
case ord (uk2) of
49: inceput
clrscr;
writeln ('* *1. - Calcul in baza data - ');
writeln;
write ('*-> Dati baza : ');
readln (nrbaza);
write ('*-> Dati numarul : ');
crearenr (a,nrbaza);
write ('*-> Dati baza rezultat : ');
readln (nrbaza);
convbaza_impar (a,nrbaza);
writeln;
writeln;
write('Rezultat : ');
afisare (a);
readkey;
sfarsit;
50: inceput
clrscr;
writeln ('* *2. - Calcul in baza rezultat - ');
writeln;
write ('*-> Dati baza : ');
readln (nrbaza);
write ('*-> Dati numarul : ');
crearenr (a,nrbaza);
write ('*-> Dati baza rezultat : ');
readln (nrbaza);
convbaza_inmult (a,nrbaza);
writeln;
writeln;
write('Rezultat : ');
afisare (a);
readkey;
sfarsit;
51: inceput
clrscr;
writeln ('* *3. - Folosirea unei baze auxiliare -
');
writeln;
write ('*-> Dati baza : ');
readln (nrbaza);
write ('*-> Dati numarul : ');
crearenr (a,nrbaza);
write ('*-> Dati baza rezultat : ');
readln (nrbaza);
daca a.bza > 10 atunci
convbaza_impar (a,10)
altfel
daca a.bza<10 atunci
convbaza_inmult (a,10);
daca nrbaza > 10 atunci
convbaza_impar (a,nrbaza)
altfel
daca nrbaza < 10 atunci
convbaza_inmult (a,nrbaza);
writeln;
writeln;
write('Rezultat : ');
afisare (a);
readkey;
sfarsit;
sfarsit;
until (ord (uk2) = 27);
sfarsit;
subalgoritmul rradunar;
inceput
clrscr;
writeln ('* * Adunare * *');
writeln;
writeln;
writeln;
write ('*-> Baza numarului A este : ');
readln (nrbaza);
write ('*-> Parte intreaga a lui A este : ');
crearenr (nria,nrbaza);
write ('*-> Parte fractionara a lui A este : ');
crearenr (nrja,nrbaza);
write ('*-> Baza numarului B este : ');
readln (nrbaza);
write ('*-> Parte intreaga a lui B este : ');
crearenr (nrib,nrbaza);
write ('*-> Parte fractionara a lui B este : ');
crearenr (nrjb,nrbaza);
write ('*-> Baza rezultat este : ');
readln (nrbaza);
convbaza_impar (nria,nrbaza);
Convert_Fract (nrja,nrbaza);
convbaza_impar (nrib,nrbaza);
Convert_Fract (nrjb,nrbaza);
re_nat (nria,nrja,a);
re_nat (nrib,nrjb,b);
adunare (a,b,c);
writeln;
writeln;
write('Rezultat : ');
nat_re (nric,nrjc,c);
afisare (nric);
write (',');
afisare (nrjc);
readkey;
sfarsit;
subalgoritmul rrscader;
inceput
clrscr;
writeln ('* * Scadere * *');
writeln;
writeln;
writeln;
write ('*-> Baza numarului A este : ');
readln (nrbaza);
write ('*-> Parte intreaga a lui A este : ');
crearenr (nria,nrbaza);
write ('*-> Parte fractionara a lui A este : ');
crearenr (nrja,nrbaza);
write ('*-> Baza numarului B este : ');
readln (nrbaza);
write ('*-> Parte intreaga a lui B este : ');
crearenr (nrib,nrbaza);
write ('*-> Parte fractionara a lui B este : ');
crearenr (nrjb,nrbaza);
write ('*-> Baza rezultat este : ');
readln (nrbaza);
convbaza_impar (nria,nrbaza);
Convert_Fract (nrja,nrbaza);
convbaza_impar (nrib,nrbaza);
Convert_Fract (nrjb,nrbaza);
re_nat (nria,nrja,a);
re_nat (nrib,nrjb,b);
writeln;
writeln;
scadere (a,b,c);
nat_re (nric,nrjc,c);
write ('Rezultat : ');
afisare (nric);
write (',');
afisare (nrjc);
readkey;
sfarsit;
subalgoritmul rrmultir;
inceput
clrscr;
writeln ('* * Inmultire * *');
writeln;
write ('*-> Dati baza : ');
readln (nrbaza);
write ('*-> Partea intreaga a lui A este : ');
crearenr (nria,nrbaza);
write ('*-> Partea fractionara a lui A este : ');
crearenr (nrja,nrbaza);
re_nat (nria,nrja,a);
nmar <- nrbaza;
cat timp nmar >= nrbaza executa
inceput
write ('*-> Numarul B este : ');
readln (cifnr);
daca ord (cifnr) <= ord ('9') atunci
nmar <- ord (cifnr) - 48
altfel
nmar <- ord (UPCASE (cifnr)) - 55;
sfarsit;
inmultire (a,nmar,c);
nat_re (nric,nrjc,c);
writeln;
write ('Rezultat : ');
afisare (nric);
write (',');
afisare (nrjc);
readkey;
sfarsit;
subalgoritmul rrimpartir;
inceput
clrscr;
writeln ('* * Impartire * *');
writeln;
write ('*-> Dati baza : ');
readln (nrbaza);
write ('*-> Partea intreaga a lui A este : ');
crearenr (nria,nrbaza);
write ('*-> Partea fractionara a lui A este : ');
crearenr (nrja,nrbaza);
re_nat (nria,nrja,a);
nmar <- nrbaza;
cat timp (nmar >= nrbaza) or (nmar = 0) executa
inceput
write ('*-> Numarul B este : ');
readln(cifnr);
daca ord (cifnr) <= ord ('9') atunci
nmar <- ord (cifnr) - 48
altfel
nmar <- ord (UPCASE (cifnr)) - 55;
sfarsit;
impartire (a,nmar,c,ter);
nat_re (nric,nrjc,c);
writeln;
write ('Rezultat : ');
afisare (nric);
write (',');
afisare (nrjc);
readkey;
sfarsit;
subalgoritmul rrcomparar;
inceput
clrscr;
writeln ('* * Comparare * *');
writeln;
write ('*-> Baza numarului A este : ');
readln (nrbaza);
write ('*-> Parte intreaga a lui A este : ');
crearenr (nria,nrbaza);
write ('*-> Parte fractionara a lui A este :');
crearenr (nrja,nrbaza);
write ('*-> Baza numarului B este : ');
readln (nrbaza);
write ('*-> Parte intreaga a lui B este : ');
crearenr (nrib,nrbaza);
write ('*-> Parte fractionara a lui B este : ');
crearenr (nrjb,nrbaza);
re_nat (nria,nrja,a);
re_nat (nrib,nrjb,b);
z <- comparare (a,b);
writeln;
writeln;
write('Rezultat : ');
daca z = 0 atunci
writeln (' * A = B * ')
altfel
daca z = 1 atunci
writeln(' * A > B * ')
altfel
writeln (' * A < B * ');
readkey;
sfarsit;
subalgoritmul rrconvers;
inceput
repeat
clrscr;
writeln ('* * Conversii * *');
writeln;
writeln ('*-> 1. - Inmultiri si impartiri succesive - ');
writeln ('*-> 2. - Substitutie - ');
writeln;
writeln ('*Esc* Inapoi');
uk2 <- readkey;
case ord (uk2) of
49: inceput
clrscr;
writeln ('* *1. - Inmultiri si impartiri succesive
- ');
writeln;
write ('*-> Dati baza : ');
readln (nrbaza);
write ('*-> Partea intreaga a lui A este :');
crearenr (nria,nrbaza);
write ('*-> Partea fractionara a lui A este : ');
crearenr (nrja,nrbaza);
write ('*-> Dati baza rezultat : ');
readln (nrbaza);
convbaza_impar (nria,nrbaza);
Convert_Fract (nrja,nrbaza);
writeln;
writeln;
write ('Rezultat : ');
afisare (nria);
write (',');
afisare (nrja);
readkey;
sfarsit;
50: inceput
clrscr;
writeln ('* *2. - Substitutie - ');
writeln;
write ('*-> Dati baza : ');
readln (nrbaza);
write ('*-> Partea intreaga a lui A este : ');
crearenr (nria,nrbaza);
write ('*-> Partea fractionara a lui B este : ');
crearenr (nrja,nrbaza);
write ('*-> Dati baza rezultat : ');
readln (nrbaza);
convbaza_inmult (nria,nrbaza);
Convert_Fract (nrja,nrbaza);
writeln;
writeln;
write ('Rezultat : ');
afisare (nria);
write (',');
afisare (nrja);
readkey;
sfarsit;
sfarsit;
until (ord (uk2) = 27);
sfarsit;
(*program principal*)
inceput
clrscr;
repeat
clrscr;
writeln;
writeln ('* * Program Principal * *');
writeln;
writeln;
writeln ('*-> 1. Numere Naturale - ');
writeln;
writeln;
writeln ('*-> 2. Numere Reale Pozitive - ');
writeln;
writeln;
writeln;
writeln;
writeln;
writeln;
writeln;
writeln;
writeln ('*Esc* Iesire');
uk <- readkey;
case ord (uk) of
49: inceput
repeat
clrscr;
writeln ('* * Numere Naturale *
*');
writeln;
writeln ('*-> 1. Adunare * ');
writeln;
writeln ('*-> 2. Scadere * ');
writeln;
writeln ('*-> 3. Inmultire * ');
writeln;
writeln ('*-> 4. Impartire * ');
writeln;
writeln ('*-> 5. Comparare * ');
writeln;
writeln ('*-> 6. Conversii * ');
writeln;
writeln;
writeln ('*Esc* Inapoi');
uk1 <- readkey;
case ord (uk1) of
49:nradunare;
50:nrscadere;
51:nrinmultire;
52:nrimpartire;
53:nrcomparare;
54:nrconversii;
sfarsit;
until (ord (uk1) = 27);
sfarsit;
50: inceput
repeat
clrscr;
writeln ('* * Numere Reale * *');
writeln;
writeln ('*-> 1. Adunare * ');
writeln;
writeln ('*-> 2. Scadere * ');
writeln;
writeln ('*-> 3. Inmultire * ');
writeln;
writeln ('*-> 4. Impartire * ');
writeln;
writeln ('*-> 5. Comparare * ');
writeln;
writeln ('*-> 6. Conversii * ');
writeln;
writeln;
writeln ('*Esc* Inapoi');
uk1 <- readkey;
case ord (uk1) of
49:rradunar;
50:rrscader;
51:rrmultir;
52:rrimpartir;
53:rrcomparar;
54:rrconvers;
sfarsit;
until (ord(uk1)=27);
sfarsit;
sfarsit;
until ord(uk)=27;
sfarsit.