luni, 18 mai 2020

clasele VIII-XII. Tema: Prezentarea proiectelor. Recapitulare. 18.05-22.05

Dragi elevi, buna ziua. 
Săptămâna aceasta vom prezenta proiectele realizate. Sper sa-mi transmită proiectele si cei care nu s-au incadrat in timp. Sănătate şi succese tuturor!!!
 
Proiectele le transmiteţi la adresa: toloaca.svetlana@gmail.com

vineri, 8 mai 2020

clasa XII-B

Se propune pentru realizare un site în HTML. Titlul îl se selectează din următoarea listă:

 
    Proiectul trebuie să conţină: informaţii formatate în diferite moduri (culoare, font, mărime şi diferite efecte speciale), liste, referinţe, imagini, tabele.


clasa XII-A

Se propune pentru realizare un site în HTML:

 Pagina mea personală.
    Proiectul trebuie să conţină: informaţii formatate în diferite moduri (culoare, font, mărime şi diferite efecte speciale), liste, referinţe, imagini, tabele.


clasa XI-A

Se propune pentru realizare următorul proiect:

Proceduri şi functii.
    Proiectul trebuie să conţină: definiţia de subprogram, procedură, funcţie, sintaxa generală a procedurilor şi funcţiilor, 6 exemple de utilizare a procedurilor şi funcţiilor.

clasa X-B

Se propune pentru realizare un site în HTML:

 Pagina mea personală.
    Proiectul trebuie să conţină: informaţii formatate în diferite moduri (culoare, font, mărime şi diferite efecte speciale), liste, referinţe, imagini, tabele.


clasa X-A

Se propune pentru realizare urmatorul proiect:

Limbajul Pascal. Tipuri simple de date. Instrucţiuni.
    Proiectul trebuie să conţină: tipurile simple de date (integer, real, char, boolean, enumere, subdomeniu), instrucţiunile (atribuire, citire, afişare, if, case, for, while, repeat) şi cîte un exemplu pentru fiecare instrucţiune.


joi, 7 mai 2020

clasa IX

Se propune pentru realizare unul din următoarele 2 proiecte:

1. Tipuri de date tablou unidimensional.
    Proiectul trebuie să conţină: declaraţia tipului de date tablou, operaţiile şi 6 exemple de utilizare a tipului de date tablou la rezolvarea problemelor.

2. Tipuri de date şir de caractere. 
    Proiectul trebuie să conţină: declaraţia tipului de date şir de caractere, operaţiile şi 6 exemple de utilizare a tipului de date şir de caractere la rezolvarea problemelor.

clasa VIII

Se propune pentru realizare unul din următoarele 2 proiecte:

1. Executantul Cangur. 
    Proiectul trebuie să conţină: definitia de algoritm şi executant, repertoriul de instrucţiuni ale Cangurului, sintaxa generală a fiecărei instrucţiuni şi cîte 2 exemple de utilizare pentru fiecare instrucţiune.

2. Limbajul de programare Pascal. Tipuri simple de date. 
    Proiectul trebuie să conţină: Structura generală a unui program, 4 tipuri simple de date (notaţia, valorile, operaţiile) şi cîte 3 exemple de utilizare a fiecărui tip de date(formularea problemei şi programul în limbajul Pascal)

clasele VIII-XII. Tema: Saptamâna Altfel. 11.05-15.05

Dragi elevi, buna ziua. 
Sper sa va găsesc pe toţi sănătoşi şi dornici de carte. Săptămâna aceasta vom lucra asupra proiectelor. Sper până la sfârţitul săptămînii (15.05.2020) toţi să-şi realizeze proiectele şi să le transmită. Sănătate şi succese tuturor!!!
 
Proiectele le transmiteţi la adresa: toloaca.svetlana@gmail.com

duminică, 3 mai 2020

clasa XII-A,B, Tema: Elemente de Web design. Tabele. 04.05-08.05



       
Exemple:
 Problema 8, punctul b, pagina 141 (manual)


Problema 8, punctul g, pagina 141 (manual)


Sarcini pentru rezolvare:
de studiat paragraful 12.6, pag. 139
de rezolvat prob. 8, punctele a, c, d , e.

clasa XI-B, Tema: Metoda reluarii (backtracking). 04.05-08.05


 Metoda reluării (Backtracking)
  Metoda reluării se utilizează la rezolvarea problemelor, care oferă mai multe soluţii. Fiecare soluţie se memorează într-o structură de date de tip stivă, implementată cu ajutorul unui vector. Într-un algoritm backtracking ne interesează toate soluţiile posibile. Pentru a obţine fiecare soluţie finală, vom completa vectorul-stivă pas cu pas, nivel cu nivel, trecînd astfel prin nuişte soluţii parţiale. În plus, atît soluţiile parţiuale, cît şi cele finale, pentru afi luate în consideraţie, trebuie să îndeplinească anumite condiţii de validare. O soluţie, care îndeplineşte aceste condiţii, devine soluţie validă.
Toate configuraţiile stivei, ce reprezintă soluţii finale, sunt alcătuite din elementele unei mulţimi bine definite, numită mulţimea soluţiilor posibile.
Fiecare soluţie nouă parţială se obţine prin completarea soluţiei parţiale precedente cu încă un nivel în stivă. La fiecare nivel  vom încerca să punem pe nivelul respectiv valori din mulţimea soluţiilor posibile neîncercate încă, pînă cînd obţinem o soluţie validă. În acest moment urcăm cu încă un nivel în stivă, pentru a completa mai departe soluţia, după care reluăm încercările pe noul nivel.
Va apărea însă şi următoarea situaţie: la un moment dat, pe un anumit nivel, nu mai există nici o valoare neîncercată din mulţimea soluţiilor. În acest caz vom face un pas înapoi, la nivelul anterior, şi reluăm căutarea cu valorile rămase neîncercate pe acest nivel anterior. Respectivul nivel a mai fost vizitat, dar l-am abandonat după ce am pus o valoare care a generat o soluţie validă, deci se poate să fi rămas aici valori neîncercate. Dacă nici pe acest nivel nu mai avem valori neîncercate, mai facem un pas înapoi ş.a.m.d. mecanismul revenirilor a determinat denumirea metodei.
1. Combinări de n elemente luate cîte k.
     Fiind date două numere naturale n şi k, să se genereze toate combinările de n elemente luate cîte k.
Algoritmul: Considerăm mulţimea {1, 2,…,n}. Aranjamentele de n elemente luate cîte k reprezintă seturile alcătuite cu cîte k elemente distincte din mulţimea dată, luate în diverse ordini. O parte din aceste aranjamente conţin aceleaşi elemente luate în alte ordini. Luînd numai cîte unul din seturle cu aceleşi elemente, obţinem combinările de n elemente luate cîte k. Fiecare soluţie va fi o configuraţie a stivei St[1], St[2],…,St[k], alcătuită din k elemente distincte ale mulţimii {1, 2,…,n}. O soluţie pe careva nivel p este validă, dacă ea nu se conţine pe nivelele anterioare. Dar pentru a nu lua drept soluţii două seturi cu aceleaşi elemente în ordini diferite, vom pune condiţia ca elementele unei soluţii să fie în ordine crescătoare.
Programul în limbajul Pascal:
Program Combinari; Uses CRT;  Type Lin=Array[1..20] Of Byte;
Var N,K:Byte;    St:Lin;    F:Text;
Procedure Citire; Var I:Byte;
Begin  Assign(F,'IN.TXT');Reset(F);  ReadLn(F,N,K);
  For I:=1  To K Do   St[I]:=0;  Close(F) End;
Procedure Tipar(P:Byte); Var I:Byte;
Begin  For I:=1 To P Do      Write(F,St[I],' ');      WriteLn(F)  End;
Function V(P:Byte):Boolean; Var Q:Boolean;    I:Byte;
Begin        Q:=True; I:=1;
  While Q And (I<P) Do
  If St[I]<St[P] Then Inc(I)  Else Q:=False;   V:=Q  End;
Procedure BkTr(P:Byte); Var Val:Byte;
Begin  For Val:=1 To N Do
      Begin      St[P]:=Val;
      If V(P) Then If P=K Then Tipar(P)  Else BkTr(P+1)      End  End;
Begin         Citire;  Assign(F,'out.txt');Rewrite(F);         BkTr(1);  Close(F) End.
2. Problema comis-voiajorului.
Se consideră n oraşe numerotate 1, 2, ...,n. Un comis-voiajor trebuie să-şi prezinte produsele în toate cele n oraşe, plecînd dintr-un oraş de start, trecînd prin fiecare oraş exact o singură dată şi revenind în oraşul din care a plecat. Ştiind că între unele dintre oraşe există drumuri directe, iar între altele nu, să se afişeze toate traseele pe care le poate urma comis-voiajorul.
Algoritmul: Oraşele sunt numerotate 1, 2,...,n. Notăm St- vectorul stivă, ce va conţine soluţia, Start – oraşul de plecare. Memorăm legătuile directe dintre oraşe în matricea A, unde un element A[I,J] va fi>
1, dacă există drum direct între oraşele I şi J;
0, în caz contrar.
Pe primul nivel al stivei vom pune oraşul de plecare Start. Fiecare soluţie finală reprezintă un traseu al comis-voiajorului şi conţine toate oraşele, fiecare oraş fiind luat o singură dată. O soluţie pe careva nivel p este validă, dacă ea nu se conţine pe nivelele anterioare şi dacă între oraşul de pe nivelul p-1 şi cel de pe nivelul p există drum direct.  Soluţia finală trebuie să respecte următarele condiţii de validare:
1) să conţină n oraşe,
2) între oraşul de pe nivelul n şi oraşul start să existe drum direct.
Programul în limbajul Pascal.
Program Problema_comis_voiajor; Uses CRT;
Type T=Array[1..10,1..10] Of 0..1;     Lin=Array[1..30] Of Integer;
Var A:T; (* matricea conexiunilor dintre orase *)    St:Lin;  (* vectorul solutiei *)
    F:Text; Nume_iesire:String[12];    N,Ostart:Byte;
Procedure Citire;  Var I,J:Byte;    Nume_intrare:String[12];
Begin  Write('Numele fisierului de intrare:');ReadLn(Nume_intrare);
Assign(F,Nume_intrare);Reset(F);    ReadLn(F,N, Ostart);
For I:=1 To N Do    Begin
  For J:=1 To N Do      Read(F,A[I,J]);    ReadLn(F)    End;
    Close(F);          St[1]:=Ostart  End;
Procedure Tipar; Var I:Byte;
Begin  Write(F,'( ');  For I:=1 To N Do      Write(F,St[I],' ');      WriteLn(F,')')  End;
Function Valid(L:Byte):Boolean; Var I:Byte;    V:Boolean;
Begin        I:=1; V:=True;
  While V And (I<L) Do   If St[I]=St[L] Then V:=False                 Else Inc(I);
     Valid:=V And (A[St[L],St[L-1]]=1)  End;
Procedure BkTr(L:Byte);Var Val:Byte;
Begin  For Val:=1 To N Do      Begin      St[L]:=Val;
      If Valid(L) Then If L=N Then Begin   If A[Ostart,N]=1 Then Tipar    End      Else BkTr(L+1)
      End  End;
Begin  Citire;  Write('Numele fisierului de iesire:');ReadLn(Nume_iesire);
    Assign(F,Nume_iesire); Rewrite(F);  BkTr(2);    Close(F) End.

Sarcini pentru rezolvare:
1. de studiat paragraful 5.4, pagina 126
2. de rezolvat prob. 6, pagina 132, prob. 12, pagina 124

clasa XI-A, Tema: Rezolvarea problemelor cu functii si proceduri utilizind tablori bidimensionale. 04.05-08.05

Problema. 

                                                                           Rezolvare:

Uses CRT;
Type T=Array[1..50,1..12] Of Integer;
Var A:T; F:Text; N,I,J,Min,L:Integer;
Function FF(I:Integer):Integer;
Var S:Integer;
Begin  S:=0;
     For J:=1 To 12 Do S:=S+A[I,J];
             FF:=S
End;
Begin
     Assign(F,'FS.IN'); Reset(F);  ReadLn(F,N);
For I:=1 To N Do
      For  J:=1 To 12 Do Read(F,A[I,J]; Close(F);
Min:=FF(1); L:=1;
For I:=2 To N Do
If Min>FF(I) Then Begin Min:=FF(I); L:=I End;
Assign(F,'FS.OUT'); Rewrite(F);
Write(F,L); Close(F)
End.

Sarcini pentru rezolvare:
1. de repetat comenzile de lucru cu fisiere: Assign, Reset, Rewrite, Read, ReadLn,Write, WriteLn, Close si de descris fiecare comanda.
2. de rezolvat urmatoarea problema:

clasa IX,X, Tema: Tipuri de date siruri de caractere. 04.05-08.05


Valorile tipului de date String sînt şiruri de caractere incluse între apostrofuri cu lungimea nu mai mare de 255 de simboluri. La declararea unei variabile de tip String putem preciza lungimea maximă a şirurilor de caractere ce pot fi memorate în variabila respectivă incluzînd  numărul dat în paranteze pătrate după cuvîntul String. Dacă şirul de caractere efectiv memorat într-o variabilă de tip String are lungimea mai mare decît dimensiunea maximă a variabilei, atunci şirul va fi trunchiat.
Operatorii aplicaţi valorilor de tip şir de caractere.
1)       ‘+’- concatenarea (alipirea) a două şiruri;
2)       Operatorii relaţionali: =(egal), <> (diferit), <( mai mic), >(mai mare), <=(mai mic sau egal), >=( mai mare sau egal). Comparaţia se face din punct de vedere lexicografic.
Procedurile şi funcţiile predefinite pentru şiruri de caractere.
1)      Funcţia Length
Sintaxa: Length(<şir de caractere>)
Funcţia: Returnează numărul efectiv de caractere ale şirului.
2)      Funcţia Copy
Sintaxa: Copy(<şir de caractere>,<poz>,<nr>)
Funcţia:Formează şi întoarce un subşir al şirului de caractere; subşirul va începe de la poziţia <poz> în <şir de caractere> şi va avea lungimea  <nr> caractere.
3)      Funcţia Pos
Sintaxa: Pos(<şir de caractere_1>,<şir de caractere_2>)
Funcţia: Testează dacă şirul <şir de caractere_1> este un subşir al şirului <şir de caractere_2>. În caz afirmativ, returnează poziţia primei apariţii, în caz contarar, returnează valoarea 0.
4)      Procedura Delete
Sintaxa: Delete(<şir de caractere>,<poz>,<nr>)
Funcţia: Şterge din şirul <şir de caractere>  un şubşir de lungime <nr> de caractere, începînd cu poziţia <poz>.
5)      Procedura Insert
Sintaxa: Insert(<subşir>,<şir de caractere>,<poz>)
Funcţia: Inserează subşirul <subşir> în şirul de caractere <şir de caractere> începînd cu poziţia  <poz>.
6)      Procedura Str
     Sintaxa: Str(<nr>,<şir de caractere>)
Funcţia: Transformă numărul <nr> în şirul de caractere corespunzător, pe care îl memorează în variabila  <şir de caractere>.
7)      Procedura Val
      Sintaxa: Val(<şir de caractere>,<nr>,<eroare>)
Funcţia: Încearcă să convertească şirul de caractere <şir de caractere> în numărul corespunzător. Tentativa va reuşi dacă şirul conţine numai caractere permise pentru un număr, adică cifre, punctul zecimal şi caracterul -. La apel parametrii <nr> şi <eroare> vor fi identificatri de variabile, valorile acestora completîndu-se în urma execuţiei procedurii astfel:
§ dacă transformarea reuşeşte, atunci în <nr> se memorează numărul rezultat prin transformare, iar în  <eroare> se memorează 0;
§ dacă transformarea eşuiază, atunci  <nr> va fi nedefinit, iar în  <eroare> se memorează poziţia în şir a primului character din cauza căruia a eşuat transformarea.
Parcurgerea caracterelor unui  şir.
Un şir de caractere poate fi privit ca un tablou unidimensional în care fiecare caracter ocupă o anumită poziţie.  Putem să referim un anumit caracteral şirului, indicînd poziţia pe care o ocupă caracterul în şir. Ştiind că lungimea efectivă a unui şir X este returnată de funcţia length(X), rezultă că poziţiile efectiv ocupate de caracterele şirului sînt 1, 2, ...,length(X).
Pentru a parcurge caracterele şirului, scriem un ciclu în care parcurgem poziţiile caracterelor i=1,...,length(X) şi pentru fiecare valoare a lui i, prelucrăm caracterul X[i].
For i:=1 To Length(X) Do <prelucrează X[i]>;
Limbajul Pascal foloseşte setul de caractere ASCII, în care fiecare caracter are un cod cuprins între 0 şi 255. Există două funcţii predefinite care realizează legătura dintre un caracter şi codul său:
·         chr(<nr>) –returnează caracterul cu codul <nr>;
·         ord(<ch>)-returnează codul ASCII al caracterului <ch>.
     Transformarea unui character ch din literă mică în litera mare corespunzătoare se poate realiza utilizînd funcţia predefintă UpCase: ch:=UpCase(ch). Nu trebuie testat dacă ch este o literă mică, deoarece în caz contrar apelul funcţiei UpCase nu are nici un efect.
Aplicaţii.
1.    Problema Nr. 1. Determinaţi numărul semnelor de +’ dintr-un şir de caractere.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează numărul de semne de ’+’.
Algoritmul: Declarăm o variabilă contor, care iniţial se zerografiază. Parcurgem şirul de caractere într-un ciclu şi pentru fiecare simbol testăm, dacă nu este ’+’. Dacă condiţia se respectă, la variabila contor se adună o unitate.
Program Numarul_semne;
Uses CRT;
Var X:String;
    I,N:Byte;
Begin
   ClrScr;
Write(’Introduceti sirul:’);ReadLn(X);
  N:=0;
For I:=1 To Length(X) Do
If X[I]=’+’ Then Inc(N);
WriteLn(’Num de semne de + este:’,N);
 ReadLn End.                                          
2.    Problema Nr. 2. Determinaţi numărul de vocale dintr-un şir de caractere.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează numărul de vocale.
Algoritmul: Declarăm o variabilă contor, care iniţial se zerografiază. Parcurgem şirul de caractere într-un ciclu şi pentru fiecare simbol testăm, dacă nu este vocală. Dacă condiţia se respectă, la variabila contor se adună o unitate.
Program Numarul_vocale;
Uses CRT;
Var X:String;
    I,N:Byte;
Begin
   ClrScr;
Write(’Introduceti sirul:’);ReadLn(X);
  N:=0;
For I:=1 To Length(X) Do
If UpCase(X[I]) in [’A’,’E’,’I’,’O’,’U’] Then Inc(N);
WriteLn(’Num de vocale=’,N);
ReadLn End.                                         
3.  Problema Nr. 3. Se consideră șirul S. Să se scrie un program care numără aparițiile unui caracter arbitrar x în șirul dat.
Intrare: şirul de caractere şi caracterul se citesc de la tastatură.
Ieşire: la ecran se afişează numărul de apariţii ale caracterului dat în şir.
Algoritmul: Declarăm o variabilă contor, care iniţial se zerografiază. Parcurgem şirul de caractere într-un ciclu şi pentru fiecare simbol testăm, dacă nu este caracterul dat. Dacă condiţia se respectă, la variabila contor se adună o unitate.
Program caracter_arbitrar;
Uses crt;
Var S:String;
    K,I:Byte;
    X:Char;
Begin
  Clrscr;
Write (‘Introdu un sir de caractere:  ’);
Readln (S);
Write (‘Introdu un character : ’);
ReadLn(X);
     K=0;
For I:=1 to Length(S) do
    If S[I]=X Then Inc(K);
WriteLn(’Sirul ’,S,’ contine ’,K,’ caractere ’,X);
Readln End.
4.  Problema Nr.4. Se dă o propoziţie care se termina cu punct ( . ). De alcătuit un program care numără cîte vocale, cîte consoane și cîte alte caractere se întîlnesc în propoziție.
Intrare: propoziţia se citeşte de la tastatură.
Ieşire: la ecran se afişează numărul de vocale, consoane şi alte caractere ce se întîlnesc în propoziţia dată.
Algoritmul: Declarăm 3 variabile contor, care iniţial se zerografiază. Parcurgem şirul de caractere într-un ciclu şi pentru fiecare simbol testăm, dacă nu este vocală sau consoană. Dacă condiţia se respectă, la variabila contor pentru vocale sau respectiv pentru consoane se adună o unitate. Numărul de caractere ce nu sînt vocale şi nici consoane îl calculăm prin diferenţa dintre numărul total de simboluri cu vocale şi consoane.
Program Numar_vocale_consoane_simboluri;
Var Sir:String[80];
Vocale,Consoane, I:Integer;
Begin
Write(‘Introdu propozitia:’);ReadLn(Sir);
I:=1;Vocale:=0;Consoane:=0;
While Sir[I]<>’.’ Do
Begin
If Upcase(Sir[I]) in [‘A’,’E’,’I’,’O’,’U’] then Inc(Vocale)
   Else If Upcase(Sir[I]) in [‘A’..’Z’] Then Inc(Consoane) ;
Inc(I)
End;
Writeln(‘Vocale:’,Vocale,’ Consoane:’, Consoane,
        ’ Alte caractere:’,i-Vocale-Consoane);
ReadKey End.
    5. Problema Nr. 5  Excludeţi spaţiile dintr-un şir de caractere.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează şirul de caractere fără spaţii.
Algoritmul: Vom utiliza funcţia Pos, cu ajutorul căreia vom testa  atîta timp cît există spaţii în şir, determină poziţia primului spaţiu şi îl exclude cu procedura Delete.
Program Excludere_spatii;
Uses CRT;
Var X:String;
Begin
   ClrScr;
Write(’Introduceti sirul:’);ReadLn(X);
While Pos(’ ’,X)>0 Do Delete(X,Pos(’ ’,X),1);
  WriteLn(’Sirul fara spatii este ’,X);
ReadLn End.  
   6. Problema Nr. 6. Se dă o mărime de tip șir de caractere S. De alcătuit programul care ar înlocui combinația de litere ’doi’  prin cifra ’2’.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează şirul de caractere modificat.
Algoritmul: Se determină poziția de început a cuvîntului  în șirul de caracter S;  dacă poziția este diferită de 0 înseamnă că acest cuvînt există în șir, se șterge acest cuvînt din șirul S și se inserează pe aceeași poziție cifra ’2’.
Program Sirul_doi_prin_2;
Uses Crt;
Var  S:String;
     P:Byte;
Begin
  ClrScr; Write('Scrie textul: ');
          Readln(s);
  P:=Pos('doi ',S);
While P<>0 Do  Begin
                 Delete(S,P,3);
                 Insert(’2’,S,p);
                 P:=Pos('doi ',S)
               End;
Write(’Sirul obtinut este:’,S);
     Readkey  End.
   7. Problema Nr.7. Excludeţi cifrele dintr-un şir de caractere.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează şirul de caractere fără cifre.
Algoritmul: Parcurgem şirul de caractere într-un ciclu şi pentru fiecare simbol testăm, dacă  este cifră. Dacă condiţia se respectă, excludem simbolul dat, în caz contrar verificăm următorul simbol.
Program Excludere_cifre;
Uses CRT;
Var X:String;
    I:Byte;
Begin
   ClrScr;
Write(’Introduceti sirul:’);ReadLn(X);
I:=1;
While I<=Length(X) Do
If X[I] in [’0’..’9’] Then Delete(X,I,1) Else Inc(I);
  WriteLn(’Sirul fara cifre este ’,X);
ReadLn End. 
    8. Problema Nr. 8 Fie dat un număr natural N. Alcătuiți programul, conform căruia vom obține un alt număr K, ce se deosebește de N prin faptul că nu conține cifre de ’2’ și ’4’, păstrîndu-se consecutivitatea celorlalte cifre.
Intrare: numărul N se citeşte de la tastatură.
Ieşire: la ecran se afişează numărul fără cifrele 2 şi 4.
Algoritmul: Transformăm numărul în şir de carcatere. Parcurgem şirul de caractere într-un ciclu şi pentru fiecare simbol testăm, dacă  este cifră 2 sau 4. Dacă condiţia se respectă, excludem simbolul dat, în caz contrar verificăm următorul simbol. Şirul obţinut după excludere îl transformăm în număr.
Program Numar;
Uses Crt;
Var N,K:Longint;
    S:String;
    I:Integer;
Begin
   ClrScr;  Write('N=: ');   ReadLn(N);
   Str(N,S);  I:=1;
While I<=Length(S) Do
If (S[I]=’2’) Or (S[I]=’4’)   Then Delete(S,I,1) Else I:=I+1;
Val(S,K,I);
if I=0 Then Write (’Numarul obtinut este:’, K)
       Else Write(’Numarul initial a fost format doar din 2 si 4’);
Readkey End.
  1. Problema Nr. 11. Se dă o mărime de tip șir de caractere S alcătuită din cuvinte despărțite prin mai multe lacune. De alcătuit programul care ar înlocui în această mărime lacunele dintre cuvinte prinr-o singură lacună.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează şirul de caractere modificat
Algoritmul: Parcurgem şirul de caractere într-un ciclu şi pentru fiecare două simboluri alăturate, care sunt lacune, eliminăm lacuna a doua.
Program Excludere_cifre;
Program Sirul;
Uses Crt;
Var  S:String[80];
     I:Byte;
Begin   ClrScr;
     Write('Scrie textul: ');    ReadLn(S);
     I:=1;
While I<Length(S) Do
If (S[I]=’ ’) and (S[I+1]=’ ’) Then Delete(S,I,1)
                               Else I:=I+1;
      Write(’Sirul obtinut este:’,S);
  Readkey
 End.
    9. Problema Nr. 9. Determinaţi şi afişaţi la ecran toate prefixele unui cuvînt, valoarea căruia se citeşte de la tastatură. (prefixele unui şir sînt subşirurile formate din primele caractere ale şirului)
Intrare: cuvîntul se citeşte de la tastatură.
Ieşire: la ecran se afişează prefixele cuvîntului unul sub altul.
Algoritmul: Formăm prefixele într-un ciclu, titipăriind la ecran cuvîntul fără ultimul caracter, apoi fără ultimile două ş.a.m.d.
Program Prefixele_cuvintului;
Uses CRT;
Var X:String;
    I:Byte;
Begin
   ClrScr;
Write(’Introduceti cuvintul:’);ReadLn(X);
For I:=2 To Length(X) Do
WriteLn(Copy(X,1,Length(X)-I+1);
ReadLn End.  
   10. Problema Nr. 10. Să se determine codificarea “păsărească” a unui cuvînt, ce  constă din adăugare   după fiecare vocală din cuvînt a grupului format din caracterul p urmat de vocala  respectivă.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează şirul de caractere codificat.
Algoritmul: Parcurgem şirul de caractere într-un ciclu şi pentru fiecare simbol testăm, dacă  este vocală. Dacă condiţia se respectă, adăugăm după vocală litera p împreună cu vocala dată şi mărim valorea contorului cu 3 unităţi, în caz contrar verificăm următorul simbol, mărind valorea contorului cu o unitate.
Program Codificare_pasareasca;
Uses CRT;
Var X:String;
    I:Byte;
Begin
   ClrScr;
Write(’Introduceti sirul:’);ReadLn(X);
I:=1;
While I<=Length(X) Do
If UpCase(X[I]) in [’A’,’E’,’I’,’O’,’U’] Then
Begin Insert(’p’+X[I],X,I+1); Inc(I,3) End Else Inc(I);
  WriteLn(’Sirul codificat ’,X);
ReadLn End.       
11. Problema Nr. 11.  Calculaţi suma cifrelor zecimale şi suma pătratelor cifrelor zecimale.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire:la ecran se afişează într-o linie suma cifrelor zecimale şi suma pătratelor cifrelor zecimale, separate prin spaţiu.
Algoritmul: Declarăm 2 variabile de tip întreg pentru suma cifrelor zecimale şi suma pătratelor cifrelor zecimale, care iniţial se zerografiază. Parcugem într-un ciclu şirul de caractere.  Încercăm să convertim fiecare simbol din şirul de caractere în numărul corespunzător. Dacă tentativa ne reuşeşte, adunăm la variabila pentru sumă numărul obţinut, iar la variabila pentru suma pătratelor cifrelor adunăm pătratul numărului obţinut.
Program Sume_cifre;
Uses CRT;
Var X:String;
    Cod, S,Sp:Integer;
    I:Byte;
    C:0..9;
Begin
   ClrScr;
Write(’Introduceti sirul:’);ReadLn(X);
  S:=0; Sp:=0;
For I:=1 To Length(X) Do
    Begin
    Val(X[I],C,Cod);
If Cod=0 Then Begin
                S:=S+C;
                Sp:=Sp+Sqr(C)
              End;
WriteLn(S,’ ’,Sp);
ReadLn End.        
   12. Problema Nr. 12. Fie dat un şir din cel mult 255 caractere. Scrieţi un program care determină caracterul cu un număr maxim de apariţii în acest şir. Dacă există mai multe caractere cu număr maxim de apariţii, se indică toate.
Intrare: şirul de caractere se citeşte de la tastatură.
Ieşire: la ecran se afişează într-o linie numărul maxim de apariţii, în linia a doua se afişează caracterele cu număr maxim de apariţii, separate prin spaţiu.
Algoritmul: Declarăm un tablou unidimensional cu indicii – valorile tipului Charşi componentele – elemente naturale. Iniţial tabloul se zerografiează. Parcurgem şirul de caractere şi adunăm cîte o unitate la valoarea elementului tabloului cu indicele egal cu simbolul din şir. În rezultat vom număra pentru fiecare simbol de cîte ori se conţine în şirul de caractere. Detrminăm valoarea maximă din acest tablou şi obţinem în rezultat numărul maxim de apariţii a simbolurilor în şirul de caractere.
Program Caractere;
Uses CRT;
Type Lin=Array[Char] Of Byte;
Var P:String;
    N:Lin;
    I,Max:Byte;
Begin
  ClrScr;
  Write('Introduceti sirul de caractere:');ReadLn(P);
  For I:=0 To 255 Do N[Chr(I)]:=0;
  For I:=1 To Length(P) Do Inc(N[P[I]]);
      Max:=N[Chr(0)];
  For I:=2 To 255 Do
  If N[Chr(I)]>Max Then Max:=N[Chr(I)];
      WriteLn('Nr maxim:',Max);
  For I:=0 To 255 Do
  If N[Chr(I)]=Max Then Write(Chr(I),' ');
  ReadLn
End.
   13. Problema Nr. 13. Se dă o mărime de tip șir. De scris un program, care află cel mai lung cuvînt din această mărime. Cuvintele sunt separate printr-un singur spațiu.
Intrare: propoziţia  se citeşte de la tastatură.
Ieşire: la ecran se afişează cuvîntul de lungime maximă şi lungimea lui, fiind separate prin spaţiu.
Algoritmul: Se separă cuvîntul ordinar din șir și se determină lungimea lui. Dacă ea este mai mare decît cea precedentă, atunci păstrăm acest cuvînt și lungimea lui. Operațiile sunt repetate atît timp cînt contorul caracterului analizat nu depășește lungimea șirului dat.
Program Sirul_lung;
Uses Crt;
Var T, S, C_max:String;
    I, L_max:Byte;
Begin  ClrScr;
   Write('Scrie textul: ');  ReadLn(S);
   T:=' '; I:=1; L_max:=0;
While I<=Length(S) Do
Begin
  If S[I]<>’’ Then T:=T+S[I]
              Else If  T<>' ' Then Begin
              If Length (T)>L_­max Then Begin
                 L_max:=Length(T); C_max:=T
                                      End;
              T:=’ ’;
              end;
   Inc(I)
End;
If T<>’ ’ Then Length (T)>L_max Then Begin
          L_max:=Length(T); C_max:=t
                                     End;
Write(’Cel mai lung cuvint este:’, C_max ,’ cu lungimea’, L_max);
     Readkey End.
  14. Problema Nr.14. Fie dată o propoziţie din cel mult 250 caractere, cuvintele fiind separate printr-un spaţiu. Toate cuvintele au lungimi distincte. Scrieţi un program care reordonează cuvintele în ordinea creşterii lungimii lor.
Intrare: propoziţia  se citeşte de la tastatură.
Ieşire: la ecran se afişează propoziţia modificată, cuvintele fiind separate prin spaţiu.
Algoritmul: Declarăm un tablou unidimensional cu elementele – şiruri de caractere. Copiem cuvintele din propoziţie în tablou. Ordonăm tabloul crescător după lungimile cuvintelor şi formăm propoziţia înscriind cuvintele în ordinea ce se găsesc în tabloul ordonat.
Program Propozitia_ordonata;
Uses CRT;
Type TipSir=String[250];
     Lin=Array[1..100] Of TipSir;
Var P, Min:TipSir; (* propozitia *)
    A:Lin; (* tabloul cu cuvinte *)
    N,I,J,Loc:Byte;
    (* N - numarul de cuvinte, I - contor p/u ciclu *)
Begin
         ClrScr;
  Write('Propozitia:');ReadLn(P);
  (* exclude spatiile de la inceputul propozitiei, daca exista *)
  While P[1]=' ' Do Delete(P,1,1);
  (* transfera cuvintele din prop. intr-un tablou liniar *)
        N:=0;
  While Pos(' ',P)>0 Do
       Begin
         Inc(N);
         A[N]:=Copy(P,1,Pos(' ',P)-1);
         Delete(P,1,Pos(' ',P))
       End;
         Inc(N); A[N]:=P;
(* ordoneaza cuvintele crescator dupa lungime *)
  For I:=1 To N-1 Do
      Begin
      Min:=A[I]; Loc:=I;
  For J:=I+1 To N Do
  If Length(A[J])<Length(Min) Then Begin
                                   Min:=X[J];
                                   Loc:=J
                                   End;
      A[Loc]:=X[I]; A[I]:=Min
      End;
           P:='';
       For I:=1 To N-1 Do
           P:=P+A[I]+' '; P:=P+A[N];
   WriteLn('Propozitia modificata:',P);
   ReadLn End.