Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами - C (СИ) (71820)
Формулировка задачи:
задача: удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами
я писала программу для слов разделяющихся одним пробелом
как можно переписать эту задачу с функцией strtok()? или еще как нибудь, подскажите пожалуста
#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(); }
Решение задачи: «Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами»
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, которая принимает два массива целых чисел и объединяет их в один массив. Этот код не удаляет последние два слова из строки, разделенной пробелами, как указано в задаче. Вместо этого он берет элементы из двух массивов и помещает их в новый массив, но сохраняет только уникальные элементы. Это означает, что если элемент уже присутствует в новом массиве, он не будет повторен. Алгоритм работает следующим образом:
- Создается новый массив fgh размером m+n, где m и n - размеры исходных массивов.
- Используется цикл while для прохода по всем элементам массива one и two.
- Если индексы x и y в пределах своих массивов, то выполняется следующее:
- Если элемент one[x] больше или равен элементу two[y], то элемент one[x] добавляется в массив fgh, а x увеличивается на 1.
- Если элемент two[y] больше или равен элементу one[x], то элемент two[y] добавляется в массив fgh, а y увеличивается на 1.
- Если x больше или равно m, а y меньше или равно n, то элемент two[y] добавляется в массив fgh, а y увеличивается на 1.
- Если x меньше или равно m, а y больше или равно n, то элемент one[x] добавляется в массив fgh, а x увеличивается на 1.
- Каждый i-й элемент массива fgh выводится на консоль с помощью printf. Этот код не удаляет последние два слова из строки, разделенной пробелами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д