Как поставить запятые перед определенными словами в строке? - C (СИ)
Формулировка задачи:
Дана строка символов. Поставить перед союзами "но" и "а" запятые (если они не в начале предложения)
Есть кое- какой код, но он не работает, увы. Хотя не удивительно, ведь я его писал))
Укажите на ошибки и подскажите как исправить, плиз.
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <windows.h> #include <string.h> main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); int len, DlinaWord1, DlinaWord2, DlinaWord3, DlinaWord4; char s[500], word1[]="но",word2[]="а",word3[]=",но",word4[]=",а"; // указатель на найденное слово int p=0,start=0; // указатель на начало зоны поиска puts ( "Введите предложение" ); gets ( s ); DlinaWord1 = strlen(word1); DlinaWord2 = strlen(word2); DlinaWord3 = strlen(word3); DlinaWord4 = strlen(word4); start = s; // в первый раз ищем с начала строки while ( 1 ) { p = strstr (start, word1); // есть ли еще слова? if ( p == NULL ) break; // если нет, то выход strncpy(s+start, word3, DlinaWord3); start = p + DlinaWord1; // сместили начало поиска }; while ( 1 ) { p = strstr (start, word2); // есть ли еще слова? if ( p == NULL ) break; // если нет, то выход strncpy(s+start, word4, DlinaWord4); start = p + DlinaWord2; // сместили начало поиска } printf ( "Переделанное предложение %s", s ); }
Решение задачи: «Как поставить запятые перед определенными словами в строке?»
textual
Листинг программы
int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); char s[100]; int p, i=0, j=0, start=0, DlinaWord_bez_0, DlinaWord_s_0; puts ( "Введите предложение" ); gets ( s ); DlinaWord_bez_0 = strlen(s); printf("%d\n",DlinaWord_bez_0); DlinaWord_s_0 =DlinaWord_bez_0+1; p=DlinaWord_bez_0; while (p!=0 ) // что то типо такого цикла "сдвига" { s[p+1]=s[p]; p--; } printf("\n"); puts (s); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д