Informatică, întrebare adresată de Rotciv500, 9 ani în urmă

Pentru a deschide un seif trebuie introduse doua parole. Ele sunt cuvinte formate din litere mari ale alfabetului englezesc. Seiful nu se deschide doar pentru o pereche de parole ci pentru oricare pereche care verifica urmatoarele reguli:
Contin numai caractere permise
Fiecare parola are un numar asociat astfel: fiecare litera este reprezentata printr-un numar: A este 1, B este 2 si asa mai departe pana la Z=26. Produsul numerelor asociate fiecarei litere din parola reprezinta numarul asociat parolei.Exemplu: 'BAC'=2*1*3=6 Pentru ca o pereche de parole sa fie acceptata trebuie ca numerele pe care le reprezinta fiecare sa fie prime intre ele.
Realizati un program care verifica daca doua cuvinte reperezinta parole corecte. Fisierul parola.in va contine pe cate o linie cele doua cuvinte, iar parola.out pe prima linie numerele asociate celor doua parole separate printr-un spatiu, iar pe a doua linie mesajul 'acceptat' sau 'neacceptat' Exemplu
parola.in | parola.out

ABAC 6 7
DA acceptat
Indicatie Pentru a evita implementarea operatiilor pe numere mari (retinute cifra cu cifra in vectori), se memoreaza factorii primi pentru fiecare numar asociat unei parole. La final se verifica daca au vreun factor prim comun.

Răspunsuri la întrebare

Răspuns de SAIDARIAN
2
am facut 2 poze, in prima poza e prima parte a programului si in a 2a cealalta parte :D
Anexe:

SAIDARIAN: niste mici observatii: este k=char(parola1[i]); si k=char(parola2[i])l
SAIDARIAN: k=char(parola2[i]); * , imi cer scuze m-am grabit
Răspuns de stassahul
1
var
 
 a:array[1..26] of char;
 s1,s2:string;
 n,i,p1,p2,n1,n2,c:integer;
 l:char;
 t:text;
 
begin

 assign(t,'parola.in');
 reset(t);
 
 readln(t,s1);
 readln(t,s2);
 
 close(t);

 assign(t,'parola.out');
 rewrite(t);

 l:='a';

 for i:=1 to 26 do 
  begin
  a[i]:=Upcase(l);
  inc(l);
  end;

 p1:=1;
 p2:=1;

 for n1:=1 to length(s1) do
  for i:=1 to 26 do
   if s1[n1]=a[i] then p1*=i;
   
 for n2:=1 to length(s2) do
  for i:=1 to 26 do
   if s2[n2]=a[i] then p2*=i;
  
 writeln(t,p1,' ',p2);
 
 while p1<>0 do
  begin 
  c := p1;
  p1 := p2 mod p1;
  p2 := c;
  end;
  
 if p2=1 then writeln(t,'acceptat');
 if p2<>1 then writeln(t,'neacceptat');

 close(t);

end.
Alte întrebări interesante