Удалить два последним слова из строки, в которой слова разделяются одним или несколькими пробелами - 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. Этот код не удаляет последние два слова из строки, разделенной пробелами.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д