Orar semigroup #2

Orar semigroup #2

Probleme 20 octombrie - anagramă

Se citesc de la tastatură două cuvinte. Să se verifice dacă unul este anagrama celuilalt.
1) se ordonează literele după codul ASCII, iar apoi se compara sirurile

#include<iostream>
using namespace std;
int main()
{int n,nn,i;
char aux,a[100],b[100],*p,*q,m[1][100];
for(i=0;i<2;i++)
    cin>>m[i];
strcpy(a,m[0]);
strcpy(b,m[1]);

for(p=a;*p;p++)
    for(q=a+1;*q;q++)
        if(*p>*q)
            {aux=*p;
            *p=*q;
            *q=aux;}
                       
for(p=b;*p;p++)
    for(q=b+1;*q;q++)
        if(*p>*q)
            {aux=*p;
            *p=*q;
            *q=aux;}
           
if(strcmp(a,b)==0)
    cout<<"DA";
else cout<<"NU";

}
2) se inregistrează frecvenţa fiecărei litere în doi vectori de tip întreg, iar mai apoi se "compară" vectorii
#include<iostream>
using namespace std;
int main()
{char a[100],b[100],*p;
int i,ok=1,x[26]={0},y[26]={0};
cin.get(a,100);
cin.get();
cin.get(b,100);

strupr(a);
strupr(b);

for(p=a;*p;p++)
    x[*p-'A']++;

for(p=b;*p;p++)
    y[*p-'A']++;

for(i=0;i<26;i++)
    if(x[i]!=y[i])
        ok=0;
   
if(ok==1)
    cout<<"DA";
else cout<<"NU";

}
3) se şterg, pe rând, literele din primul cuvânt şi(dacă există) din al doilea până când primul tablou(cuvânt) are terminatorul de şir pe poziţia 0. Dacă şirul al doilea are şi el terminatorul de şir pe poziţia 0, atunci cuvintele sunt anagrame. Altfel, nu sunt.
#include<iostream>
using namespace std;
int main()
{char a[100],b[100],*p,*q,r;
int i,ok=1,x[26]={0},y[26]={0},t,j;
cin.get(a,100);
cin.get();
cin.get(b,100);
strupr(a);
strupr(b);
p=a;

while(a[0]!=NULL)
{for(i=0;i<strlen(a);i++)
{    r=a[i];
    for(j=i;j<strlen(a);j++)
        a[j]=a[j+1];
   
for(t=0;t<strlen(b);t++)
{    if(b[t]==r)
        for(j=t;j<strlen(b);j++)
            b[j]=b[j+1];
    }
}
}

if(b[0]==0)
    cout<<"DA";
else cout<<"NU";

}

marți, 19 octombrie 2010 by DlMuresan
Categories: , , , , , | 1 comment

One Comment

  1. #include
    using namespace std;
    int main ()
    { char a[100],b[100],*p,*k,aux; int i,j,n,m;
    cin.get(a,100);
    cin.get();
    cin.get(b,100);
    strupr(a);
    strupr(b);
    n=strlen(a);
    m=strlen(b);
    for(i=0;ia[j])
    { aux=a[i];
    a[i]=a[j];
    a[j]=aux;
    }
    for(i=0;ib[j])
    { aux=b[i];
    b[i]=b[j];
    b[j]=aux;
    }
    if(strcmp(a,b)==0) cout<<"Sirurile sunt anananananagrame"<<endl;
    else cout<<"Nu sunt anagrame "<<a<<" " <<b<<endl;
    }

Leave a Reply