SHARE
TWEET

Untitled

a guest Nov 17th, 2019 67 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #define Ss 10 // для массива предложений
  5. #define S 20 // для символов в предложениях
  6. #define DR "Dragon flew away!"
  7.  
  8. char *inputSentence(){
  9.     char *sentence = malloc(S * sizeof(char));
  10.     char symbol = getchar();
  11.     int n = 0;
  12.     int sizeSentence = S;
  13.     if(symbol == ' ' || symbol == '\t'){
  14.         symbol = getchar();
  15.     }
  16.     while(symbol != '.' && symbol != ';' && symbol != '?' && symbol != '\n'){
  17.         if(n == sizeSentence - 2){
  18.             sizeSentence += S;
  19.             sentence = realloc(sentence, sizeSentence * sizeof(char));
  20.         }
  21.         sentence[n] = symbol;
  22.         n++;
  23.         symbol = getchar();
  24.     }
  25.     if(symbol != '\n'){
  26.         sentence[n] = symbol;
  27.         sentence[n + 1] = '\0';
  28.     }else{
  29.         sentence[n] = '\0';
  30.     }
  31.     return sentence;
  32. }
  33.  
  34. int main(){
  35.     char **arraySentences = malloc(Ss * sizeof(char*));
  36.     int n = 0;
  37.     int sizeArray = Ss;
  38.     char *sentence;
  39.     do{
  40.         sentence = inputSentence();
  41.         if(n == sizeArray - 1){
  42.             sizeArray += Ss;
  43.             arraySentences = realloc(arraySentences, sizeArray * sizeof(char*));
  44.         }
  45.         arraySentences[n] = sentence;
  46.         n++;
  47.     }while(strcmp(arraySentences[n - 1], DR));
  48.  
  49.     int N = n - 1; // количество предложений в изначальном тексте
  50.  
  51.     int i = 0;
  52.     while(strcmp(arraySentences[i], DR)){
  53.         int lengthSentence = strlen(arraySentences[i]);
  54.         if(arraySentences[i][lengthSentence - 1] == '?'){
  55.             for(int j = i; j < n - 1; j++){
  56.                 arraySentences[j] = arraySentences[j + 1];
  57.             }
  58.             //free(arraySentences[n]);
  59.             n--;
  60.         }else{
  61.             i++;
  62.         }
  63.     }
  64.  
  65.     int M = n - 1; // количество предложений в отформатированном тексте
  66.  
  67.     for(int i = 0; i < N; i++){
  68.         puts(arraySentences[i]);
  69.         free(arraySentences[i]);
  70.     }
  71.     free(arraySentences);
  72.     printf("Количество предложений до %d и количество предложений после %d\n", N, M);
  73.     return 0;
  74. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top