infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Achirei Emanuel din Martie 06, 2011, 23:04:10



Titlul: problema criptare simpla
Scris de: Achirei Emanuel din Martie 06, 2011, 23:04:10
Citat
#include <iostream>
#include <fstream>
using namespace std;
int main()
{char x;
fstream f("intrare.txt",ios::in);
fstream g("iesire.txt",ios::out);
while(!f.eof())
{f>>x;
x=x+3;
g<<x;
}
f.close();
g.close();
}
Programul citeste un text dintr-un fisier text, iar apoi il cripteaza(creste valoarea codului ASCII a literei cu 3).
In urma criptarii apar urmatoarele disfunctionalitati:
1.programul nu citeste spatiile;
2.programul adauga un caracter(aleatoriu, cred) la sfarsitul materialului criptat.
Care ar fi problema?


Titlul: Răspuns: problema criptare simpla
Scris de: Alex Palcuie din Martie 07, 2011, 00:15:41
Programul tău îți citește spațiile, dar ți le „criptează” împreună cu ultimul caracter care este endline '\n'.
Dacă vrei să nu se întâmple asta, pune condiția asta:
Cod:
if (x!=' ' && x!='\n')


Titlul: Răspuns: problema criptare simpla
Scris de: Parfene Narcis din Martie 07, 2011, 10:17:59
Intr-adevar programul nu citeste spatiile.
Operatorul >> nu poate fi utilizat asa pentru a citi un sir cu spatii, deoarece valoarea returnata este de tip intreg, nu un obiect istream.
Solutia cea mai simpla este folosirea functiei get() sau getline().