Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Ruxandra Marinescu
verman@fmi.unibuc.ro
Un caracter memorat prin utilizarea codului ASCII
C/C++ Pascal
char c='a'; var c:char; x:integer ;
int x; c:='a';
ord(c)-ord('a'));
Un caracter memorat prin utilizarea codului ASCII
C/C++ Pascal
char c='a'; var c:char; x:integer ;
int x; c:='a';
ord(c)-ord('a'));
97 d 3 97 d 3
iruri de caractere:
k=0; k:=1;
for(i=0;i<='z'-'a';i++) for ic:='a' to 'z' do
for(j=1;j<=nr[i];j++){ for j:=1 to nr[ic] do
s[k]=i+'a'; begin
k++; s[k]:=ic;
} k:=k+1;
} end;
end;
Scriei o funcie care primete ca parametru
un ir de caractere care conine numai litere
mici i returneaz numrul de consoane ale
acestuia
int nr_cons(char c[]){ function nr_cons(c:string)
:integer;
char *voc; var voc:string;
int n,i,nr; n,nr,i:integer;
begin
voc="aeiou"; voc:='aeiou';
n=strlen(c); n:=length(c);
nr=0; nr:=0;
for(i=0;i<n;i++) for i:=1 to n do
if(strchr(voc,c[i])==0) if pos(c[i],voc)=0 then
nr++; nr:=nr+1;
return nr; nr_cons:=nr;
} end;
Scriei o funcie care primete ca parametru
dou iruri i terge apariiile primului ir n
cel de al doilea
void stergere(char subs[], procedure stergere(subs:string;
char s[]){ var s:string);
char *a; var a:string;
int n=strlen(subs); n,poz:byte;
a=strstr(s,subs); begin
while(a){ n:=length(subs);
strcpy(a,a+n); poz:=pos(subs,s);
a=strstr(a,subs); a:=s;
} s:='';
} while poz<>0 do
begin
s:=s+copy(a,1,poz-1);
delete(a,1,poz+n-1);
poz:=pos(subs,a);
end;
s:=s+a;
end;
Se citesc n cuvinte (de minim dou litere).
Fiecare cuvnt este format doar din litere mici.
Spunem c dou cuvinte rimeaz dac au
ultimele dou caractere identice.
a) Scriei o funcie care primete ca parametri
dou iruri i testeaz dac acestea rimeaz
b) Afiai cel mai mare grup de cuvinte citite
care rimeaz.
Exemplu: Pentru cuvintele
care, masa, mare, casa, test, lucrare
se va afia
care mare lucrare
a)
int rimeaza(char s1[],char s2[]){ function rimeaza(s1,s2:string)
:boolean;
//if ((s1[strlen(s1)-1]== begin
s2[strlen(s2)-1])&& {if (s1[length(s1)]=
(s1[strlen(s1)-2]== s2[length(s2)]) and
s2[strlen(s2)-2])) (s1[length(s1)-1]=
s2[length(s2)-1]) then}
if(strcmp(s1+strlen(s1)-2,
s2+strlen(s2)-2)==0) if copy(s1,length(s1)-1,2)=
return 1; copy(s2,length(s2)-1,2)
else then
return 0;
} rimeaza:=true
else
rimeaza:=false;
end;
b)
int n;
char c[100][50];
int main(){
int i,j,imax,lungm,lung;
scanf("%d",&n);
for(i=0;i<=n-1;i++) scanf("%s",c[i]);
lungm=1; imax=0;
for(i=0;i<n-1;i++){
lung=1;
for(j=i+1;j<n;j++)
if(rimeaza(c[i],c[j])) lung++;
if(lung>lungm){ lungm=lung; imax=i;}
}
for(i=0;i<=n-1;i++)
if(rimeaza(c[imax],c[i]))
printf("%s ",c[i]);
}
b)
Exemplu:
Pentru irul
este, mare, sete, marea, arme, eram
numrul maxim este 3, pentru mulimea
{mare, arme, eram}
Se d un ir de n cuvinte. S se afieze cuvintele
distincte care apar n ir, n ordinea lungimii lor