Witam.
Mam problem z programikiem:P
tz, chodzi o to ze chcĘ, aby tekst ktory napisze w konsoli, byl szyfrowany i zapisany do pliku pod jakas nazwa, i aby byla mozliwosc odszyfrowania tekstu ktory jest juz zaszyfrowany w pliku.
Chyba byloby ok, gdyby nie to ze funkcje szyfrujace mam w osobnym pliku implementacyjnym..
poza tym nie wiem czy dobrze napisalem kod przy szyfrowaniu poniewaz program nie chce sie skompilowac^
moglobyscie rzucic okiem?
plik unit.cpp
//---------------------------------------------------------------------------
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include<math.h>
#include<conio.h>
#include "cezar.h"
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int acase (){
int b;
bool case2=true;
do{
printf("\n1.Chcesz zaszyfrowac tekst?\n");
printf("\n2.Chcesz odszyfrowac tekst?\n");
scanf("%d", &b);
switch(b){
case 1:
case2=false;
break;
case 2:
case2=false;
break;
default:
printf("Miales podac 1 lub 2!");
case2=true;
}
}while(case2);
return b;
}
int main(int argc, char* argv[])
{
int a, c;
bool case1=true;
FILE *plik;
do{
printf("Jaki szyfr Cie interesuje?\n");
printf("1. Szyfr Cezara\n");
printf("2. Szyfr podstawienny\n");
printf("3. Zakoncz Aplikacje\n\n");
scanf("%d", &a);
switch(a){
case 1 :
clrscr();
printf("\nWybrales szyfr Cezara.\n");
c=acase();
if (c==1) cezar_szyfr();
else cezar_oszyfr();
getch();
clrscr();
break;
case 2 :
printf("");
getch();
clrscr();
break;
case 3 :
case1=false;
break;
default :
printf("Miales podac cyfre od 1 do 3!");
getch();
clrscr();
}
} while(case1);
getch();
return 0;
}
//---------------------------------------------------------------------------
plik cezar.h
#ifndef _cezar_h_
#define _cezar_h_
void cezar_szyfr();
void cezar_oszyfr();
#endif
plik cezar.cpp
#include "cezar.h"
#include<stdio.h>
#include<iostream.h>
#include<string.h>
void cezar_szyfr(){
FILE *plik;
string text, nazwa_pliku;
printf("Podaj nazwe pliku do ktorej chcesz zapisac sane: ");
scanf("%s", nazwa_pliku);
printf("Podaj tekst ktory chcesz zaszyfrowac: ");
scanf("%s", text);
double dlugosc=text.length();
int i=0;
plik = fopen(nazwa_pliku, "w+"); // tu powinien otwierac sie plik o.O
while(i<=dlugosc){
if ((text[i]>=65)&&(text[i]<=90))
{
text[i]-=65;
text[i]+=3;
text[i]=fmod(text[i],26); //operacja ta potrzebna jest aby przykladowo litera z szyfrowana byla jako c a nie jako znaczek o nr o 3 wiekszym w tablicy ASCII
text[i]+=65;
fprint(plik, text[i]);
}
else if ((text[i]=97)&&(text[i]=122))
{
text[i]-=97;
text[i]+=3;
text[i]=fmod(text[i],26);
text[i]+=97;
fprint(plik, text[i]);
}
else if ((text[i]>=48)&&(text[i]<=57))
{
text[i]-=48;
text[i]+=3;
text[i]=fmod(text[i],10);
text[i]+=48;
fprint(plik, text[i]);
}
i++;
}
fclose(plik);
}
void cezar_oszyfr(){
FILE *plik;
string text, nazwa_pliku;
printf("Podaj nazwe pliku z ktorego chcesz rozszyfrowac dane: ");
scanf("%s", nazwa_pliku);
string text;
int i=0;
plik = fopen(nazwa_pliku, "r")
while((text[i]=getc(plik))!=EOF)
{
if ((text[i]>=65)&&(text[i]<=90))
{
text[i]-=65;
text[i]-=3;
if (text[i]<0)
text[i]=26-fabs(text[i]); //potrzebne jest obliczenie wartosci bezwzglednej, gdyz po odejmowaniu mozemy otrzymac wartosc ujemna
text[i]+=65;
}
else if ((text[i]>=97)&&(text[i]<=122))
{
text[i]-=97;
text[i]-=3;
if (text[i]<0)
text[i]=26-fabs(text[i]);
text[i]+=97;
}
else if ((text[i]>=48)&&(text[i]<=57))
{
text[i]-=48;
text[i]-=3;
if (text[i]<0)
text[i]=10-fabs(text[i]);
text[i]+=48;
}
i++;
}
fclose(plik);
}
bardzo prosze o pomoc