Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
- #include <string.h>
- char void encode (char*)
- {
- int n = atoi(argv[2]);
- char pole[n];
- char opakovany_retezec[n];
- int c;
- int index=0;
- int opakovani=1;
- int i;
- for (i = 0;i < n; i++)
- {
- pole[i]=getchar();
- }
- while ((c = getchar()) != EOF)
- {
- // nalezen stejny znak
- if (c == pole[index])
- {
- index++;
- //opakovany_retezec[index] = c;
- if (index == n)
- {
- opakovani++;
- int i;
- for(i = 0; i < n; i++)
- opakovany_retezec[i]=pole[i];
- index=0;
- }
- }
- // nalezen jiny znak
- else{
- // vytiskni pocet a opakovany retezec
- if (opakovani > 1)
- {
- putchar('0' + opakovani);
- int i;
- for (i = 0; i < n; i++)
- putchar(opakovany_retezec[i]);
- opakovani = 1;
- }
- // posun pole a tisk
- if (index == 0)
- {
- // posun pole
- for(i = 0;i < n - 1; i++)
- pole[i]=pole[i + 1];
- pole[n-1]=c;
- }
- else
- {
- int i;
- //for (i = 0; i <= index; i++)
- //putchar(pole[i]);
- // zkopiruj na zacatek pole
- for (i = index + 1; i < n; i++)
- pole[i - index - 1] = pole[i];
- for (i = index; i < n - 1; i++)
- pole[i] = opakovany_retezec[i - index];
- }
- }
- }
- }
- char void decode(char*)
- {
- char c;
- int n=atoi(argv[2]);
- while((c = getchar()) !=EOF)
- {
- if ((c >'1') && (c <'9'))
- {
- int x= c - '0';
- char pole[n];
- int i;
- int j;
- for(i=0; i<n; i++)
- pole[i]=getchar();
- for (i=0; i<x; i++)
- {
- for (j=0; j<n; j++)
- putchar(pole[j]);
- }
- }
- else putchar(c);
- }
- }
- printf("\n");
- }
- int main(int argc,char **argv)
- {
- if (strcmp(argv[1],"-c") == 0)
- encode(argv[2]);
- else if (strcmp(argv[1],"-d")== 0)
- decode(argv[2]);
- else if (strcmp(argv[1],"-h")== 0)
- help();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement