//--------------------------------------------------------------------- // Sýnislausn á dæmi 2 á Vikublaði 2 í Tölvunarfræði 2, vor 2005 // // Hjálmtýr Hafsteinsson, janúar 2005 //--------------------------------------------------------------------- #include #include using namespace std; string Sesar( string, int ); void iHastafi( string& ); // Aðalforrit sem kallar á dulkóðunarfallið int main() { string innstr; int k; cout << "Strengur til ad dulkoda: "; getline(cin, innstr); cout << "Lykill (0 <= k < 26): "; cin >> k; iHastafi( innstr ); cout << "Dulkodadur strengur: " << Sesar( innstr, k ) << endl; return 0; } ////////////////////////////////////////////////////////////////////// // Fallið Sesar dulkóðar strenginn inn með Sesarkóðun með lyklinum k // // Fyrir: Strengurinn inn inniheldur eingöngu enska hástafi og k // inniheldur lykilinn. (0 <= k < 26) // Eftir: Fallið hefur skilað dulkóðaða strengnum, þar sem hverjum // bókstaf hefur verið hliðrað um k sæti í stafrófinu ////////////////////////////////////////////////////////////////////// string Sesar( string inn, int k ) { string dul = ""; k = k % 26; // Til öryggis! for( int i=0; i= 'A' && inn[i] <= 'Z' ) if( inn[i] + k > 'Z' ) dul += (inn[i] + k - 26); else dul += (inn[i] + k); else dul += inn[i]; } return dul; } /////////////////////////////////////////////////////////////////////// // Fallið iHastafi breytir inntaksstrengnum í hástafi. // // Fyrir: Viðfangið inn er strengur // Eftir: Öllum enskum lágstöfum hefur verið breytt í hástafi. Allir // aðrir stafir strengsins eru óbreyttir /////////////////////////////////////////////////////////////////////// void iHastafi( string &inn ) { for( int i=0; i= 'a' && inn[i] <= 'z' ) inn[i] = inn[i] - ('a' - 'A'); }