Introduction
We use some algorithm to check the datas break down or not at computer networks. One of them is checksum algorithm. In this part we will take a string value from the user then create the checksum code as checksum algorithm. After that we will take another string value and create checksum code. If both of them are equal the console writed “the values are same!” or not equal the consol writed “the values are different!”
Turkish;
Bilgisayar ağlarında gönderilen verilerin yol boyunca bozulup bozulmadıklarını anlamak için çeşitli algoritmalar geliştirilmiştir. Bunlardan biri de checksum algoritmasıdır. Bu bölümde kullanıcıdan bir string değer alıp checksum algoritmasına göre checksum kodunu oluşturacağız daha sonra kullanıcıdan bir string değer daha alıp bunun checsum kodunu oluşturacağız ve iki kodu karşılaştırıp verilerin birbiriyle aynı olup olmadığını kontrol edeceğiz. Eğer veriler farklıysa "veriler birbirinden farklı", aynı ise "veriler birbiriyle aynı" cümlelerini ekrana yazdıracağız.
Background
While creating checksum code we will write first two letters’ hexadecimal code together the other 2 letters under of other letters. Then we will sum them and create checksum code. I showed it on the picture.
Turkish;
Checksum kodu oluşturulurken ilk iki harfin kodları hex karşılığında yanyana yazılır diğer harflerde sırasıyla alta eklenir ve alt alta toplanarak checksum kodu bulunur.
For Example; Örneğin;
Data=Forouzan
checksum.png
veri= Forouzan
Using the code
#include <iostream>
#include <cmath>
#include <conio.h>
#include <iomanip>
#include <cstring>
using namespace std;
class checksum{
public:
int k,l;
int n;
long A[];
int HexBul(string s);
void uzunluk(string s);
long sumbul(string s);
}ob1,ob2;
void checksum:: uzunluk(string s)
{
n=s.length();
}
int checksum::HexBul(string S)
{
char a;
for(int i=0; i<n; i++)
{
a=S.at(i);
A[i]=a;
}
return A[n];
}
long checksum:: sumbul(string s)
{
k=0;
for(int i=0; i<n ;i+=2)
{
k=k+A[i];
}
l=0;
for(int j=1; j<n; j+=2)
{
l=l+A[j];
}
return k,l;
}
int main(int argc, char** argv)
{
cout<<"Bir isim giriniz:"<<endl;
string s1,s2;
getline(cin, s1);
ob1.uzunluk(s1);
ob1.HexBul(s1);
ob1.sumbul(s1);
if(ob1.l>255)
{
ob1.k=ob1.k+l/256;
ob1.l=ob1.l%256;
if(ob1.k>255)
{
ob1.l=ob1.l+k/256;
ob1.k=ob1.k%256;
}
}
else if(ob1.k>255)
{
ob1.l=ob1.l+k/256;
ob1.k=ob1.k%256;
}
cout<<hex<<"Checksum kodu: "<<ob1.k<<ob1.l<<endl;
cout<<"Baska bir isim giriniz"<<endl;
getline(cin, s2);
ob2.uzunluk(s2);
ob2.HexBul(s2);
ob2.sumbul(s2);
if(ob2.l>255)
{
ob2.k=ob2.k+l/256;
ob2.l=ob2.l%256;
if(ob2.k>255)
{
ob2.l=ob2.l+k/256;
ob2.k=ob2.k%256;
}
}else if(ob2.k>255)
{
ob2.l=ob2.l+k/256;
ob2.k=ob2.k%256;
}
cout<<hex<<"Checksum kodu: "<<ob2.k<<ob2.l<<endl;
if(ob1.k==ob2.k && ob1.l==ob2.l)
cout<<"iki isim birbiriyle ayni!";
else
cout<<"isimler birbirinden farkli!";
return 0;
I have written this codes on DEVC++