Informatică, întrebare adresată de IonCPA, 9 ani în urmă

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ăspunsuri la întrebare

Răspuns de eugenius
0
#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();
}

IonCPA: In pascal poti s-o rezolvi?
eugenius: Nu mă pricep în pascal((
IonCPA: Ok,mersi de ajutor)
eugenius: Am editat-o un pic, acum e ideal))
Răspuns de blindseeker90
0
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.
Alte întrebări interesante