Выход из цикла происходит раньше, чем предполагалось - C (СИ)

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

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

#include<iostream>
using namespace std;
void main()
{
    char ar[256]={"1234567890qwertyuiop"},m='3',n='u';
    cout<<ar<<'\n';
for (int i=0,j=0;;i++)
{
    if (ar[i]>=m){
    j++;
    }
 
    if(ar[i]>=n){
    cout<<j;
    break;
        }
    }
}
считает всего 9 символов должно быть 14 или 15 В строке if(ar[i]>=n) заменил >= на == посчитало правильно. На будущее, все же почему если я непосредственно указую = или > 'u' срабатывает раньше?

Решение задачи: «Выход из цикла происходит раньше, чем предполагалось»

textual
Листинг программы
#include <iostream>
#include <stdio.h>
#include <string.h> 
using namespace std;
 
void main ()
{ 
    char ar[25],br[25]={'\0'},m,n,*a=&ar[0],*b=&br[0];
 
gets(ar);
cout<<"Enter beginning new line= ";
cin>>m;
cout<<"Enter conclusion= ";
cin>>n;
 
    for (int i=0,j=0;i<20;i++){
 
        if (ar[i]==m)
        do{
        j++;
        }while (a[j]!=n);
 
        if(ar[i]==m){
        strncat(b,&ar[i],j);
        break;
        }
    }
cout<<br<<"\n";
}

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

  1. Подключение необходимых библиотек
  2. Объявление переменных: массив символов ar, br, m, n, указатели a и b на начало массивов ar и br соответственно
  3. Ввод данных с клавиатуры: строки m и n, затем 20 символов строки ar
  4. Цикл for с условием остановки i<20. Внутри цикла проверяется условие ar[i]==m
  5. Если условие выполняется, то начинается цикл do-while, который выполняется до тех пор, пока a[j] не станет равным n. При каждой итерации do-while значение j увеличивается на 1
  6. Если условие ar[i]==m выполняется, то значение j присваивается переменной i, и цикл for прерывается с помощью оператора break
  7. Функция strncat используется для добавления подстроки от ar[i] до n в строку b. В качестве третьего аргумента функции передается смещение от начала строки b, на которое будет добавлена подстрока
  8. Вывод результата на экран с помощью cout
  9. Оператор \n используется для перехода на новую строку
  10. Ввод данных с клавиатуры и вывод результата на экран будут повторяться до тех пор, пока не будет достигнуто условие остановки i<20

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


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

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

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