Sunt grile din variantele de bac de anul trecut si probleme din culegerea specificata la finalul documentului
Archive for noiembrie 2009
Probleme si grile propuse
Posted in Şir de caractere, tagged grila, probleme, string on 29/11/2009| 2 Comments »
Probleme rezolvate string
Posted in Şir de caractere, tagged probleme, string on 29/11/2009| Leave a Comment »
5.Să se scrie un algoritm care multiplică un şir de caractere dat de n ori. Ex: fiind dat şirul ‘WAKA’ şi n=2, algoritmul va genera şirul ‘WAKAWAKA’.
var t,s:string; n,i:byte;
begin
write(‘s=’); readln(s);
write(‘n=’); readln(n);
t:=s;
for i:=1 to n-1 do
insert(t,s,1);
writeln(s)
end.
6.Să se verifice dacă 2 cuvinte se pot obţine unul din celălalt prin permutarea literelor. Nu se face distincţie între literele mari şi mici ale alfabetului. Ex: cuvântul ‘CUPTOR’ se poate obţine din cuvântul ‘CoRuPt’ prin permutarea literelor.
var s1,s2:string; i:byte; ok:boolean;
begin
write(‘s1=’); readln(s1);
write(‘s2=’); readln(s2);
if length(s1)<>length(s2) then writeln(‘Nu se poate obtine’)
else begin
for i:=1 to length(s2) do
s2[i]:=upcase(s2[i]);
i:=1; ok:=true;
while (i<=length(s1)) and ok do
if pos(upcase(s1[i]),s2)<>0 then i:=i+1
else ok:=false;
if ok then writeln(‘Se poate obtine’)
else writeln(‘Nu se poate obtine’)
end
end.
7.Se citeşte de la tastatură un număr întreg cu maxim 10 cifre sub forma unui şir de cifre. Să se elimine o cifră aleasă astfel încât numărul rămas să aibă cifrele în ordine crescătoare. Dacă sunt mai multe soluţii se vor afişa toate, iar dacă problema nu are nici o soluţie se va tipări un mesaj. Un număr se va afişa o singură dată. Ex: pentru 2435 poate fi eliminată cifra 3 rămânând numărul 245 sau cifra 4 rămânând numărul 235.
var s,t:string;
v:array[1..10] of string; i,j,n:byte; ok,exista:boolean;
begin
write(‘s=’); readln(s);
n:=0;
for i:=1 to length(s) do
begin
t:=s;
delete(t,i,1); {se elimina cifra de pe pozitia i}
ok:=true; j:=1;
while (j<length(t)) and ok do {se verifica daca cifrele ramase sunt in ordine crescatoare}
if t[j]<=t[j+1] then j:=j+1
else ok:=false;
if ok then begin {daca cifrele ramase sunt in ordine crescatoare}
exista:=false; j:=1;
while (j<=n) and not exista do {se verifica daca numarul a mai fost gasit}
if v[j]=t then exista:=true
else j:=j+1;
if not exista then begin {daca numarul nu a mai fost gasit}
n:=n+1; {se adauga in vector}
v[n]:=t
end
end
end;
if n=0 then writeln(‘Nu este solutie’)
else for i:=1 to n do
write(v[i],’ ‘)
end.
2.Scrieţi un program care converteşte un şir de caractere într-un întreg. Conversia se opreşte odată cu întâlnirea unui caracter care nu este cifră. Ex: dacă şirul este 123ef34 se va obţine numărul întreg 123.
vars:string; x:longint; er:integer;
begin
write(‘s=’); readln(s);
val(s,x,er);
if er<>0 then begin
s:=copy(s,1,er-1);
val(s,x,er)
end ;
writeln(x)
end.
PHP 3
Posted in Cerc de informatică, tagged cerc informatica, php on 23/11/2009| Leave a Comment »
PHP 2
Posted in Cerc de informatică, tagged cerc informatica, php on 22/11/2009| Leave a Comment »
String
Posted in Şir de caractere, tagged probleme, string on 20/11/2009| Leave a Comment »
1.Să se scrie un program care citeşte un text de la tastatură şi îl traduce în limba păsărească astfel: fiecare vocală x va fi înlocuită prin şirul xpx.
var s,x:string;
i:byte;
begin
write(‘s=’); readln(s[i]);
x:=”;
for i:=1 to length(s) do
if (s[i]=’a’) or (s[i]=’e’) or (s[i]=’i’) or (s[i]=’o’) or (s[i]=’u’) or (s[i]=’A’) or (s[i]=’E’) or (s[i]=’I’) or (s[i]=’O’) or (s[i]=’U’)
then x:=x+s[i]+’p’+s[i]
else x:=x+s[i];
writeln(x)
end.
Alte modalităţi de verificare dacă o literă este vocală:
2) if s[i] in [‘a’, ‘e’, ‘i’, ‘o’, ‘u’, ‘A’, ‘E’, ‘I’, ‘O’, ‘U’] then…
sau
if upcase(s[i]) in [‘A’, ‘E’, ‘I’, ‘O’, ‘U’] then…
3) if pos(s[i],’aeiouAEIOU’) then……..
sau
if pos(upcase(s[i]), ‘AEIOU’) then…..
2.Să se elimine toate apariţiile caracterului spaţiu dintr-un text.
Ex. Dacă textul iniţial este ‘ abc def ghi ‘ în final se va obţine ‘abcdefghi’.
I Metodă
var s:string; i:byte;
begin
write(‘s=’); readln(s);
i:=1;
while i<=length(s) do
if s[i]=’ ‘ then delete(s,i,1)
else i:=i+1;
writeln(s)
end.
II Metodă
var s:string;
begin
write(‘s=’); readln(s);
while pos(‘ ‘,s) do
delete(s,pos(‘ ‘,s),1);
writeln(s)
end.
4.Să se scrie un program care citeşte mai multe linii de la tastatură şi o tipăreşte pe cea mai lungă. Citirea de la tastatură se termină când s-a introdus o linie goală. Dacă sunt mai multe linii cu aceeaşi lungime maximă se vor afişa toate. Ex: dacă liniile citite de la tastatură sunt:
aaaaaa
bbb
dfgh
cccccc
dddddd
fgh
se vor afişa
aaaaaa
cccccc
dddddd
var s:string; i,n,lungmax:byte;
v:array[1..30] of string;
begin
write(‘s=’); readln(s);
n:=0; lungmax:=0;
while s<>” do
begin
n:=n+1;
v[n]:=s;
if length(s)>lungmax then lungmax:=length(s);
write(‘s=’); readln(s);
end;
for i:=1 to n do
if length(v[i])=lungmax then writeln(v[i])
end.
4b.Să se scrie un program care citeşte mai multe linii de la tastatură şi o tipăreşte pe cea mai lungă. Citirea de la tastatură se termină când s-a introdus o linie goală. Dacă sunt mai multe linii cu aceeaşi lungime maximă se va afişa ultima. Ex: dacă liniile citite de la tastatură sunt:
aaaaaa
bbb
dfgh
cccccc
dddddd
fgh
se va afişa
dddddd
var s,lmax:string;
begin
write(‘s=’); readln(s);
lmax:=”;
while s<>” do
begin
if length(s)>=length(lmax) then lmax:=s;
write(‘s=’); readln(s);
end;
writeln(lmax)
end.
4b.Să se scrie un program care citeşte mai multe linii de la tastatură şi o tipăreşte pe cea mai lungă. Citirea de la tastatură se termină când s-a introdus o linie goală. Dacă sunt mai multe linii cu aceeaşi lungime maximă se va afişa prima. Ex: dacă liniile citite de la tastatură sunt:
aaaaaa
bbb
dfgh
cccccc
dddddd
fgh
se va afişa
aaaaaa
var s,lmax:string;
begin
write(‘s=’); readln(s);
lmax:=”;
while s<>” do
begin
if length(s)>length(lmax) then lmax:=s;
write(‘s=’); readln(s);
end;
writeln(lmax)
end.
String
Posted in Şir de caractere, tagged probleme, string on 19/11/2009| Leave a Comment »
Probleme string:problemestring
Se citesc de la tastatură 2 cuvinte şi o valoare p. Să se verifice dacă cele 2 cuvinte sunt rime, afişându-se un mesaj corespunzător. Spunem că cele 2 cuvinte sunt rime dacă ultimele p caractere din cele cuvinte coincid.
var s1,s2:string; p:byte;
begin
write(‘s1=’);readln(s1);
write(‘s2=’);readln(s2);
write(‘p=’);readln(p);
if copy(s1,length(s1)-p+1,p)=copy(s2,length(s2)-p+1,p) then writeln(‘cuvintele sunt rime’)
else writeln(‘cuvintele nu sunt rime’)
end.
String
Posted in Şir de caractere, tagged probleme, string on 18/11/2009| Leave a Comment »
Se citeşte de la tastatură un cuvânt de maxim 20 caractere. Să se afişeze toate prefixele cuvântului, câte unul pe câte un rând. Ex: pentru cuvântul PASCAL se va afişa
P
PA
PAS
PASC
PASCA
var s:string[20];
i:byte;
begin
write(‘s=’); readln(s);
for i:=1 to length(s)-1 do
writeln(copy(s,1,i))
end.
String
Posted in Şir de caractere, tagged probleme, string on 13/11/2009| Leave a Comment »
1.Se citeşte de la tastatură un text. Să se afişeze toate cuvintele din text, câte unul pe câte un rând.
var s,t:string;
i:byte;
begin
write(‘s=’);readln(s);
i:=1;
while i<=length(s) do
begin
while (s[i]=’ ‘) and (i<=length(s)) do
i:=i+1;
t:=”;
while (s[i]<>’ ‘) and (i<=length(s)) do
begin
t:=t+s[i];
i:=i+1
end;
writeln(t)
end
end.
2.Se cite;te de la tastatură un text. Se cere să se afişeze fiecare caracter care apare în text împreună cu frecvenţa sa de apariţie, câte un caracter urmat de frecvenţa de apariţie pe câte un rând al ecranului.
var s:string; i:byte;
f:array[0..255] of byte;
begin
write(‘s=’);readln(s);
for i:=0 to 255 do
f[i]:=0;
for i:=1 to length(s) do
f[ord(s[i])]:=f[ord(s[i])]+1;
for i:=0 to 255 do
if f[i]<>0 then writeln(chr(i),’ ‘,f[i])
end.
String
Posted in Şir de caractere, tagged string, subprograme predefinite on 12/11/2009| Leave a Comment »
String
Posted in Şir de caractere, tagged string, subprograme predefinite on 11/11/2009| Leave a Comment »