Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.73 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. unsigned int convert(char *hodnota)//funkce, ktera pretypuje N (vstup char a vystup unsigned int
  7. {
  8. unsigned int cislo=0,preteceni=0;
  9. int i=0;
  10. while(hodnota[i]!='\0')
  11.   {
  12.   if (hodnota[i]<'0' && hodnota[i]>'9') //osetreni, ze N je cislo (osetreni i pro to, ze cilo je kladne)
  13.     {
  14.     return 0;
  15.     }
  16.   hodnota[i]=hodnota[i]-'0';    //zaskani presne hodnoty cisla z nejake ascii hodnoty
  17.  
  18.   preteceni=cislo;
  19.   cislo=cislo*10;
  20.   cislo=cislo+hodnota[i]; //pokud uz proslo pripocte k 10tinasobku predchoziho cila prave nastene cislo
  21.   i++;
  22.   if(preteceni>cislo)   //doslo k preteceni - jednicka vypadla ven a jede se od nuly
  23.     {
  24.     return 0;       //kdyz vrati nulu - doslo k chybe (zde z duvodu preteceni)
  25.     }
  26.   }
  27. return cislo;
  28. }
  29.  
  30.  
  31. int dekomprimace(unsigned int N)
  32. {
  33. printf("Dekomprimace\n");
  34. printf("%d",N);
  35. int c;
  36. char *buffer = malloc((N+1) * sizeof(char));
  37. if(buffer==NULL)        //ochrana proti nedodtatku paměti
  38. {
  39. return 1;
  40. }
  41.  
  42. while((c = getchar()) != EOF)
  43.   {
  44.   if(isdigit(c)!=0)
  45.     {
  46.     int x;
  47.     x = c - '0';
  48.     for(unsigned i = 0; i < N; i++)
  49.       {
  50.       buffer[i] = getchar();
  51.       if(isdigit(buffer[i])!=0)
  52.         {                                           //TADY JE PORTEBA DOPSAT OCHRANU, ABY NA VSTUPU NABYLY
  53.         printf("Byla zadana 2 cisla vedle sebe - Musim pak prepsat na estate.eclwrong ;-)") ;   //2 CISLA
  54.         }                                           //!!!!!! POZOR
  55.       }
  56.     for (;x>0;x--)
  57.       {
  58.       for(unsigned i = 0; i<N; i++)
  59.         {
  60.         putchar(buffer[i%N]);
  61.         }
  62.       }
  63.     }
  64.   else
  65.     {
  66.     putchar(c);
  67.     }
  68.   }
  69. return 0;
  70. }
  71.  
  72. int main(int argc, char *argv[])
  73. {
  74. unsigned int N=(convert(argv[1]));
  75. dekomprimace(N);
  76. return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement