SHARE
TWEET

Untitled

a guest Nov 17th, 2019 88 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.             free(arraySentences[i]);
  56.             for(int j = i; j < n - 1; j++){
  57.                 arraySentences[j] = arraySentences[j + 1];
  58.             }
  59.             //free(arraySentences[n]);
  60.             n--;
  61.         }else{
  62.             i++;
  63.         }
  64.     }
  65.  
  66.     int M = n - 1; // количество предложений в отформатированном тексте
  67.  
  68.     for(int i = 0; i < n; i++){
  69.         puts(arraySentences[i]);
  70.         free(arraySentences[i]);
  71.     }
  72.     free(arraySentences);
  73.     printf("Количество предложений до %d и количество предложений после %d\n", N, M);
  74.     return 0;
  75. }
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