• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

  • 🚨 29 мая стартует курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    После старта курса запись открыта еще 10 дней Подробнее о курсе ...

  • Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

Си количество слов в символьной строке

  • Автор темы Автор темы SevereK
  • Дата начала Дата начала
S

SevereK

Добрый день уважаемые форумчане. Пожалуйста, помогите решить задачу на си

Ввести символьную строку. Посчитать количество слов в предложении. Если предложение состоит не из одного слова, то переписать второе слово в предложении справа налево. Вывести преобразованную строку. (При выводе строк использовать функцию puts и дополнительных строк не использовать).

заранее огромная благодарность
 
Не могу сказать что знаю C, но как-то так...

По просьбам слушателей - добавил комментарии к коду (ХЗ насколько это понятно, но думаю упростит понимание)
C++:
#include <stdio.h>
#include <string.h>

void InputString(char *str);
void FormatString(char *str);
void main()
{
const int size = 255; 
char str[size]; 	
InputString(str);
FormatString(str);
}
void InputString(char *str)
{
printf("Vvod stroki: ");
gets(str);
}
void FormatString(char *str)
{
int numWords = 0;
int startWord = 0;
int endWord = 0;
int i;
for (i = 0; i < strlen(str) - 1; i++)	// по всем символам строки от 0 до strlen(str) - 1 (последнего)
{
if ((str[i] == ' ') && (str[i+1] != ' ')) // если найден пробел, и следующий за ним символ не является пробелом
{
if (numWords == 1) //если количество слов равно 1
{
if (str[i] == ' ') // и если найден пробел
{
endWord = i-1; // концу слова присваивается значение (номер пробела) - 1
}
}
numWords = numWords + 1; // увеличиваем на 1 количество слов
}

if (numWords == 1 && startWord == 0)
{	
startWord = i+1;
}
}
if (str[0] != ' ') // если строка начинается с пробела (первый символ - пробел)
{
numWords = numWords + 1; // увеличиваем на 1 количество слов
if (numWords == 2) //если слов 2
{
endWord = strlen(str) - 1; // конец последнего слова = длина строки -1
}
}

int halfWordLen = startWord + (int)((endWord-startWord)/2); // вводим и вычисляем переменную = середине второго слова (того, которое будем переворачивать)
int k, j;
for (j = startWord, k = 0; j <= halfWordLen; j++, k++) //выполняем цикл смены мест букв относилельно оси (середины второго слова)
{
char buf;
buf = str[j];
str[j] = str[endWord-k];
str[endWord-k] = buf;
}
printf("Vsego %d slov v stroke\n" , numWords ); // выводим результаты
puts(str);
}
 
Warning 1 warning C4627: '#include <string.h>': skipped when looking for precompiled header use c:\study\oop\lab4\zadforum\zadforum\za.cpp 2 1 zadforum

ошибку пишет...
 
1ive, сам ступил...всё работает должным образом. Огроменное Вам спасибо!
 
Поставьте, пожалуйста, доброму человеку плюсик за меня... ооооооочень-ооооочень сильно выручил и всячески помог в аське с пониманием кода.. огромнейшее спасибо ещё раз;)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!

Курс AD