C/C++

Помогите решить задачу на C++

если можно с коммментариями
// если массив уже дан и его вводить не нужно.
#include <iostream>

using namespace std;

int main()
{
char str[] = "ist$love84p"; // массив симолов
int _do = 0, _posle = 0; // чтобы считать символы до и после $
bool find = false; // найден уже символ или нет
for(int x = 0; str[x]; x++) // выполняется, пока не дойдёт до последнего невидимого символа '\0', который добавляется в конец символьных массивов в C++
{
if(str[x] == '$') find = true; // найден символ $
else if(!find) _do++; // если символ не найден -- считаем символы до него
else if(find) _posle++; // если символ найден -- считаем символы после него
}
cout << "Количество символов до $ равно " << _do;
cout << ".\nКоличество символов после $ равно " << _posle << '.' << endl;
return 0;
}
Андрей Сороколетов
Андрей Сороколетов
56 185
Лучший ответ
Владимир Петров массива нету его вводить нужно
Если массив, в котором ищем - это строка:

char s[] = "1234$567890"; // строка, в которой ищем
char *p = strchr(s, '$'); // указатель на символ '$' в строке s
cout << "до $: " << p - s << '\n'; // разность указателей есть длина
cout << "после $: " << strlen(p + 1) << '\n'; // просто длина подстроки после '$'

Если массив - это именно массив:

char s[] = {'1', '2', '3', '4', '$', '5', '6', '7', '8', '9', '0'};
char *p = strchr(s, '$'); // указатель на символ '$' в массиве s
cout << "до $: " << p - s << '\n'; // разность указателей есть длина
cout << "после $: " << sizeof(s) + (s - p) - 1 << '\n'; // кол-во элементов после '$'

Если длина массива задана как-то иначе, вместо sizeof(s) подставляем эту длину.

И никаких явных циклов и сравнений.

P.S. Ввод массива у тебя в заданиях уже был. Так что не хочешь писать сам - скопируй из ранее данных тебе ответов.
Арман Нурунов
Арман Нурунов
85 381
#include "iostream"
#include "algorithm"
int main(){
char a[]="gfuz$iUZjkuG"; // задали массив
int n=sizeof a/sizeof *a,k=std::find(a,a+n,'$')-a; // нашли длину массива и позицию символа $
std::cout<<a<<'\n'<<k<<' '<<n-k-2<<'\n';} // напечатали массив и количества символов до $ и после него
Пл@тон .
Пл@тон .
82 493