👤
a fost răspuns

Fișierul date.in conține un șir de caractere. Elaborați un program care va determina numărul de caractere speciale (paranteze, operatori aritmetici) din șir. Rezultatul va fi afișat la ecran cât și în fișierul date.out. In C++ si daca e posibil in Pascal

Răspuns :

#include <iostream>
#include <fstream>

using namespace std;

int main() {
fstream f;
f.open("date.in", ios::in);
string a;
f>>a;
int m;
m=0;
for(int i = 0; i < a.size(); ++i) {
switch(a[i]) {
case '!': m=m+1; break;
case '@': m=m+1; break;
case '#': m=m+1; break;
case '{': m=m+1; break;
case '}': m=m+1; break;
case '+': m=m+1; break;
case '=': m=m+1; break;
case '*': m=m+1; break;
case '/': m=m+1; break;
case ')': m=m+1; break;
case '(': m=m+1; break;
}

}
cout<m;
fstream g;
g.open("date.out",ios::out)
g<m;
f.close();
g.close();
}
Adaug solutia pentru pascal:

program caractere_speciale;

var
  fisierIntrare,fisierIesire,sir_c:string;
  i,nr_carac_speciale:integer;
  tfIn,tfOut:Text;
begin
   fisierIntrare:='date.in';
   fisierIesire:='date.out';
   nr_carac_speciale:=0;
   AssignFile(tfIn,fisierIntrare);
   reset(tfIn);
   readln(tfIn,sir_c);
   for i:=1 to length(sir_c) do
     begin
       if not (sir_c[i] in ['A'..'Z','a'..'z','0'..'9',' ']) then
          inc(nr_carac_speciale);
     end;
   writeln(nr_carac_speciale);  
   AssignFile(tfOut,fisierIesire);
   rewrite(tfOut);
   writeln(tfOut,nr_carac_speciale);
   close(tfOut);
end.