Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.27 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement