Почему не заканчивается цикл? - C (СИ)

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

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

При вводе нужного предложения и символа ставлю чтобы i=49, так как считаю, что при следующем заходе работа цикла прекратится. Пробовал воспользоваться break-ом, понял , что чего то я недопонимаю. Подскажите как исправить ошибку.
// Г„Г*Г* ГІГҐГЄГ±ГІ. ГЌГ*éòè Г*îìåð ïåðâîãî ГЇГ® ïîðÿäêó ñëîâГ*, êîòîðîå Г*Г*Г·ГЁГ*Г*ГҐГІГ±Гї 
// Г± Г§Г*Г¤Г*Г*Г*îãî ñèìâîëГ*.
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<clocale>
#define PET 50
int main(){
    char text[PET];
    int i,k,y;
    int x,d;
    k=1;
    i=0;
    setlocale(LC_ALL,"Russian_russia.1251");
    printf("Ââåäèòå òåêñò\n");
    gets(text);
    printf("\nÒåïåðü ââåäèòå ñèìâîë\n");
    scanf("%d",&x);
    for(i=0;i<PET;i++){
        if(i=0 && text[i]==x) {i=49;}   
        if(text[i]==' ') {
            if(text[i+1]!=' ') { k++;
                if(text[i+1]==x) { i=49;}}}}
    printf("%d",k);
}

Решение задачи: «Почему не заканчивается цикл?»

textual
Листинг программы
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<locale.h>
#define PET 50
int IsPresent(char* text,char x)
{
    int i,si;
    si=1;
    for(i=0;i<PET && i<strlen(text);i++)
    {
        if(text[i]==x) // символ найден
           return si;
        if(text[i]==' ') //  пробел переход к следующему слову
           si++;
    }
    return -1;
}
int main()
{
    char text[PET];
    int i,s;
    char x;
    setlocale(LC_ALL,"Russian_russia.1251");
    printf("Введите текст\n");
    gets(text);
    printf("\nТеперь введите символ\n");
    scanf("%c",&x);
    s=IsPresent(text,x);
    if(s>=0)  
          printf("Символ найден в слове%d",si);
   else
         printf("Символ не найден");
   getch();
   return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода, строками и определениями макросов.
  2. Определяем макрос PET, который задает максимальное количество символов в тексте.
  3. Создаем функцию IsPresent, которая принимает два аргумента: текст, в котором ищется символ, и сам символ. Функция возвращает номер слова, в котором найден символ, или -1, если символ не найден. Внутри функции объявляем переменные i, si, которые будут использоваться в цикле.
  4. Запускаем цикл, который будет выполняться до тех пор, пока не будет найден символ или не будет достигнут конец текста. Переменная i используется для подсчета числа итераций цикла, а переменная si отслеживает количество слов, прошедших с момента последнего пробела.
  5. Если в тексте найден заданный символ, функция возвращает значение переменной si.
  6. Если в тексте встречается пробел, увеличиваем значение переменной si на 1.
  7. Если цикл закончился и символ не был найден, функция возвращает -1.
  8. В функции main() объявляем переменные text, i, s, x, которые будут использоваться в программе.
  9. Устанавливаем локальную настройку для вывода русского текста.
  10. Запрашиваем у пользователя ввод текста и сохраняем его в массив text.
  11. Запрашиваем у пользователя ввод символа для поиска.
  12. Получаем результат выполнения функции IsPresent, сохраняя его в переменную s.
  13. Если символ был найден, выводим сообщение с номером слова, в котором он был найден.
  14. Если символ не был найден, выводим соответствующее сообщение.
  15. Используем функцию getch() для приостановки выполнения программы до тех пор, пока пользователь не нажмет клавишу.
  16. Завершаем функцию main() и программу в целом.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы