Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами - C (СИ) (71820)

Узнай цену своей работы

Формулировка задачи:

задача: удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами я писала программу для слов разделяющихся одним пробелом
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(void)
  4. {
  5. char *s;
  6. char delimiter = ' ';
  7. int i;
  8. printf ("vvedite stroku: ");
  9. gets(s); // считываем введенную строку, заносим в string
  10. {for (i = strlen(s); *(s+i) != delimiter && i; i--);
  11. s[i]='\0';
  12. }
  13. {for (i = strlen(s); *(s+i) != delimiter && i; i--);
  14. s[i]='\0';
  15. }
  16. printf ("stroka bez dvuh slov ");
  17. printf("%s\n", s); // выводим полученную строку
  18. return 0;
  19. getch();
  20. }
как можно переписать эту задачу с функцией strtok()? или еще как нибудь, подскажите пожалуста

Решение задачи: «Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами»

textual
Листинг программы
  1. #include <stdio.h>
  2. #define M 4
  3. #define N 6
  4.  
  5.  void twoarray (unsigned short [], int, unsigned short [], int);
  6.  
  7.  void main(void)
  8.  {
  9.  
  10.  unsigned short f[M] = { 145, 134, 3, 1};
  11.  unsigned short g[N] = { 114, 44, 43, 39, 22, 11 };
  12.  
  13.  
  14. twoarray (f, M, g, N);
  15. return;
  16. }
  17.  
  18. void twoarray (unsigned short one [], int m, unsigned short two [], int n)
  19.  
  20. {
  21. unsigned short fgh[m+n]; //размер 1 и 2 массива
  22. int x, y, i;
  23. x = y = i = 0;
  24. while(i < m + n){
  25.  if(x < m && y < n){
  26.  if(one[x] >= two[y])
  27.  fgh[i] = one[x++];
  28.  else if(two[y] >= one[x])
  29.  fgh[i] = two[y++];
  30. }
  31. //////////////////
  32. else if(x >= m && y < n)
  33.  fgh[i]= two[y++];
  34.  
  35. else if(x < m && y>= n)
  36. fgh[i] = one[x++];
  37.  
  38.  printf("%d ",fgh[i++]);
  39.  }
  40.  return;
  41.  }

Объяснение кода листинга программы

В этом коде используется функция twoarray, которая принимает два массива целых чисел и объединяет их в один массив. Этот код не удаляет последние два слова из строки, разделенной пробелами, как указано в задаче. Вместо этого он берет элементы из двух массивов и помещает их в новый массив, но сохраняет только уникальные элементы. Это означает, что если элемент уже присутствует в новом массиве, он не будет повторен. Алгоритм работает следующим образом:

  1. Создается новый массив fgh размером m+n, где m и n - размеры исходных массивов.
  2. Используется цикл while для прохода по всем элементам массива one и two.
  3. Если индексы x и y в пределах своих массивов, то выполняется следующее:
    • Если элемент one[x] больше или равен элементу two[y], то элемент one[x] добавляется в массив fgh, а x увеличивается на 1.
    • Если элемент two[y] больше или равен элементу one[x], то элемент two[y] добавляется в массив fgh, а y увеличивается на 1.
  4. Если x больше или равно m, а y меньше или равно n, то элемент two[y] добавляется в массив fgh, а y увеличивается на 1.
  5. Если x меньше или равно m, а y больше или равно n, то элемент one[x] добавляется в массив fgh, а x увеличивается на 1.
  6. Каждый i-й элемент массива fgh выводится на консоль с помощью printf. Этот код не удаляет последние два слова из строки, разделенной пробелами.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы