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

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

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

задача: удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами я писала программу для слов разделяющихся одним пробелом
#include <stdio.h>
#include <string.h>
 
int main(void)
{
      char *s;
      char delimiter = ' ';
      int i;
 
   printf ("vvedite stroku:   ");
   gets(s);       // считываем введенную строку, заносим в string
    {for (i = strlen(s); *(s+i) != delimiter && i; i--);
    s[i]='\0';
    }
    {for (i = strlen(s); *(s+i) != delimiter && i; i--);
    s[i]='\0';
    }
   printf ("stroka bez dvuh slov   ");
   printf("%s\n", s); // выводим полученную строку
   return 0;
   getch();
}
как можно переписать эту задачу с функцией strtok()? или еще как нибудь, подскажите пожалуста

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

textual
Листинг программы
#include <stdio.h>
#define M 4
#define N 6
 
 void twoarray (unsigned short [], int, unsigned short [], int);
 
 void main(void)
 {
 
 unsigned short f[M] = { 145, 134, 3, 1};
 unsigned short g[N] = { 114, 44, 43, 39, 22, 11 };
 
 
twoarray (f, M, g, N);
return;
}
 
void twoarray (unsigned short one [], int m, unsigned short two [], int n)
 
{
unsigned short fgh[m+n]; //размер 1 и 2 массива
int x, y, i;
x = y = i = 0;
while(i < m + n){
 if(x < m && y < n){
 if(one[x] >= two[y])
 fgh[i] = one[x++];
 else if(two[y] >= one[x])
 fgh[i] = two[y++];
}
//////////////////
else if(x >= m && y < n)
 fgh[i]= two[y++];
 
else if(x < m && y>= n)
fgh[i] = one[x++]; 
 
 printf("%d ",fgh[i++]);
 }
 return;
 }

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

В этом коде используется функция 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
Похожие ответы