Kod: Zaznacz cały
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define ROZMIAR 3
const char *alf[] = { 'A' , 'B' ,'C' ,'D' ,'E','F' ,'G' ,'H' ,'I' ,'J' ,'K' ,'L' ,'M' ,'N' ,'O' ,'P' ,'Q' ,'R' ,'S' ,'T','U' ,'V' ,'W' ,'X' ,'Y' ,'Z' };
const char *tab[] = { ".-", "-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.", "---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
void koduj(FILE *plik1, FILE *plik2);
void dekoduj(FILE *plik1, FILE *plik2);
int dekoduj_jeden(char *str);
int dekoduj1(int n, char *tab1);
int main(int argc, char *argv[])
{
FILE *plik1, *plik2, *plik3;
int i;
plik1 = fopen(argv[1],"r");
plik2 = fopen(argv[2],"w");
koduj(plik1,plik2);
fclose(plik1);
fclose(plik2);
plik2 = fopen(argv[2],"r");
plik3 = fopen(argv[3],"w");
dekoduj(plik2,plik3);
fclose(plik2);
fclose(plik3);
system("pause");
return 0;
}
void koduj(FILE *plik1, FILE *plik2)
{
int i;
char znak,znak2;
if(plik1==NULL || plik2==NULL)
{
printf("nie ma takich plików\n");
}
else{
while((znak = fgetc(plik1)) != EOF){
if(znak == ' ')
fputc(znak, plik2);
else if(isalpha(znak)){
znak2=toupper(znak);
i=(znak2-65);
fputs(*(tab+i),plik2);
fputs("|",plik2);
}
else if (ispunct(znak))
fputc(' ',plik2);
}
}
}
int dekoduj_jeden(char *str)
{
int i;
for(i=0;i<26;i++)
if(strcmp(str,*(tab+i))==0)
break;
return i+65;
}
int dekoduj1(int n, char *tab1){
int k,i,flag;
for(k=0;k<26;k++){
for(i=0;i<n;i++){
if(tab1[i]==*((tab+k)[i])){
flag++;
if(flag==n)
return k;
break;
}
}
}
}
void dekoduj(FILE *plik1, FILE *plik2)
{
int i=0,j=0,k=0,l=0;
//char tab1[5]={0,0,0,0,0}
char *tab1;
char znak, znak2;
tab1=(char*) malloc(ROZMIAR*sizeof(char));
while((znak = fgetc(plik1)) != EOF){
if(znak==' ')
fputc(znak,plik2);
else if(znak == '.' || znak=='-'){
tab1[i]=znak;
i++;
}
else if(znak != '.' && znak!='-'){
printf("%s\ni=%d\n",tab1,i);
printf("\n");
printf("przerwa\n");
strlen(tab1);
for(l=0,j=0;j<26;j++)
if(strcmp(tab1,*(tab+j))==0){
l=j;
if((l+65)==*(alf+l))
break;
}
//znak2=dekoduj1(i,tab1);
printf("%d\n",l);
znak2=(l+65);
fputc(znak2,plik2);
i=0;
j=0;
for(i=0;i<5;i++)
tab1[i]==0;
i=0;
}
}
}