Выход из цикла происходит раньше, чем предполагалось - 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"; }
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Объявление переменных: массив символов ar, br, m, n, указатели a и b на начало массивов ar и br соответственно
- Ввод данных с клавиатуры: строки m и n, затем 20 символов строки ar
- Цикл for с условием остановки i<20. Внутри цикла проверяется условие ar[i]==m
- Если условие выполняется, то начинается цикл do-while, который выполняется до тех пор, пока a[j] не станет равным n. При каждой итерации do-while значение j увеличивается на 1
- Если условие ar[i]==m выполняется, то значение j присваивается переменной i, и цикл for прерывается с помощью оператора break
- Функция strncat используется для добавления подстроки от ar[i] до n в строку b. В качестве третьего аргумента функции передается смещение от начала строки b, на которое будет добавлена подстрока
- Вывод результата на экран с помощью cout
- Оператор
\n
используется для перехода на новую строку - Ввод данных с клавиатуры и вывод результата на экран будут повторяться до тех пор, пока не будет достигнуто условие остановки i<20
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д