Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135

Как правильно записать цикл for?

03.11.2012, 16:43. Показов 1597. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как правильно записать цикл чтобы он шел не с начала на конец а с конца на начало? Конкретно к этой задаче чтобы заменяло не первое восхождение а Последнее!

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <string.h>
const int n=100;
using namespace std;
 
int main()
{
    char text[n];
    char sBuf[n];
    char str1[n];
    char str2[n];
    int sLen;
    int sPos;
    
    cout<<"Enter input text:\n";
    gets(text);
    cout<<"Enter str1 akuy element zaminutu : ";
    gets(str1);
    cout<<"Enter str2 na akuy element zaminutu : ";
    gets(str2);
    
        sLen = strlen(text);
        for(int i=sLen-1;i;i--){
        sPos = sLen - strlen(strstr(text,str1));
        strcpy(sBuf,strstr(text,str1) + strlen(str1));
        text[sPos] = '\0';
        strcat(text,str2);
        strcat(text,sBuf);
        }
    cout<<"String after replacing\n"<<text<<endl;
    system("pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2012, 16:43
Ответы с готовыми решениями:

Как правильно записать опоздание функции через функцию-ножницы, если t!=0 при t>4? Как правую часть записать?
Нужно найти изображение оригинала. Всю суть проблемы написал в заголовке.

Записать как цикл
Здравствуйте! Скажите есть решение проблемы. Я копирую запись из одной таблицы в другую, но капируется только выделенная. а как записать...

Цикл Do.While как записать?
Нашел цикл который сначала выполняется, а потом проверяет условие do....while. Но как бы я не пытался его записать делфи не понимает...

12
32 / 32 / 17
Регистрация: 10.10.2012
Сообщений: 88
03.11.2012, 16:47
можно так
C++
1
2
3
4
5
6
//...
for(int i=k; i>=0; i--) //k - значение приобретаемое счетчиком, а после он уменьшается до нуля
{
//операторы
}
//...
это общий вид, приспособишь для своей программы сам.
0
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 16:52  [ТС]
Я вот приспособив но все равно правильно не работает! Например должно поменять 11223311 на 112233gg а меняет на gg223311!
0
 Аватар для v.a.l.i.d
425 / 390 / 113
Регистрация: 21.09.2012
Сообщений: 913
03.11.2012, 16:54
C++
1
2
for (int i=n-1; i>=0; i--)
   ...
0
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 16:59  [ТС]
В чем здесь проблема?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <string.h>
const int n=100;
using namespace std;
 
int main()
{
    char text[n];
    char sBuf[n];
    char str1[n];
    char str2[n];
    int sLen;
    int sPos;
    
    cout<<"Enter input text:\n";
    gets(text);
    cout<<"Enter str1 akuy element zaminutu : ";
    gets(str1);
    cout<<"Enter str2 na akuy element zaminutu : ";
    gets(str2);
    
        sLen = strlen(text);
        int k=strlen(text);
        for (int i=k-1; i>=0; i--){
        sPos = sLen - strlen(strstr(text,str1));
        strcpy(sBuf,strstr(text,str1) + strlen(str1));
        text[sPos] = '\0';
        strcat(text,str2);
        strcat(text,sBuf);
        break;
        }
    cout<<"String after replacing\n"<<text<<endl;
    system("pause");
    return 0;
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
03.11.2012, 17:04
тут не в цикле проблема, а в его содержании. Если внимательно посмотришь, содержание действий в цикле никак от i не зависит. Цикл задаёт лишь количество повторений этих действий. Поэтому в этом плане циклы for(int i=1;i<sLen;i++) и for(int i=sLen-1;i;i--) абсолютно идентичны Более того, они избыточны! Тут цикл while(strstr()!=NULL) больше бы подошёл.
0
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:09  [ТС]
Kuzia domovenok, Можете на моем коде показать как это будет работать!?
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
03.11.2012, 17:11
Цитата Сообщение от vasiliy21 Посмотреть сообщение
Конкретно к этой задаче чтобы заменяло не первое восхождение а Последнее!
Так тебе только одно вхождение заменить надо??? Тогда зачем вообще цикл был по всему тексту?
Короче так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sLen = strlen(text);
char* ptr1=text; char* ptr2;
while(ptr1){
  ptr2=ptr1;
  ptr1=strstr(ptr1, str1);
}
//конец поиска: ptr2 указывает на начало последнего вхождения
if (ptr2==text){
  /*не найдено*/
}
else{
  /*твоя операция замены*/
        strcpy(sBuf, ptr2 + strlen(str1));
        *ptr2 = '\0';
        strcat(text,str2);
        strcat(text,sBuf);
        break;
}
0
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:20  [ТС]
Kuzia domovenok, Ваш код не выводить ничего!
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
03.11.2012, 17:23
Цитата Сообщение от vasiliy21 Посмотреть сообщение
Kuzia domovenok, Ваш код не выводить ничего!
А то-то мы не знаем, что код на С++ надо писать в функции main, переменные объявлять, а выводить на экран через std::cout !!!
Что, правда не знаем? Тогда зачем решать, что-то, предварительно не изучив основы языка?
0
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:25  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <string.h>
const int n=100;
using namespace std;
 
int main()
{
    char text[n];
    char sBuf[n];
    char str1[n];
    char str2[n];
    int sLen;
    int sPos;
    
    cout<<"Enter input text:\n";
    gets(text);
    cout<<"Enter str1 akuy element zaminutu : ";
    gets(str1);
    cout<<"Enter str2 na akuy element zaminutu : ";
    gets(str2);
     char* ptr1=text; char* ptr2;
while(ptr1){
ptr2=ptr1;
ptr1=strstr(ptr1, str1);
}
//конец поиска: ptr2 указывает на начало последнего вхождения
if (ptr2==text){cout<<"neznaydeno";}
else{/*твоя операция замены*/
 strcpy(sBuf, ptr2 + strlen(str1));
        *ptr2 = '\0';
        strcat(text,str2);
        strcat(text,sBuf);
        
} 
    cout<<"String after replacing\n"<<text<<endl;
    system("pause");
    return 0;
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,536
Записей в блоге: 1
03.11.2012, 17:42
признаю косяк, сейчас ищу ошибку

Добавлено через 3 минуты
замени строки 22-25 на
C++
1
2
3
4
5
sLen=strlen(str1);
while(ptr1){
  ptr2=ptr1;
  ptr1=strstr(ptr1, str1)+sLen;
}
Но всё равно теперь вылетает, продолжаю искать новую ошибку

Добавлено через 6 минут
Нашёл, работает, заменяй на
C++
1
2
3
4
5
sLen=strlen(str1);
while(ptr1){
ptr2=ptr1;
ptr1=strstr(ptr1+sLen, str1);
}
1
27 / 27 / 9
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:45  [ТС]
Kuzia domovenok, Спасибо за ваш труд!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2012, 17:45
Помогаю со студенческими работами здесь

Как правильно распараллелить цикл?
Есть процедура в которой выполняется цикл. Хотелось бы его правильно распараллелить. Попытка сделать это нижеследующим образом не проходит,...

Как правильно занести в цикл
Не получается занести вот это решение в цикл, то ли Given-Find в цикле не работает, то ли я что-то делаю не так... Непонятно еще почему...

Как правильно задать цикл?
есть такой вопрос! если можете подскажите. вот у меня задана функция f(Tcv) Tcv это натяжение, и дано уравнение где есть 2 неизвестных Tcv....

Как правильно объединить цикл?
Доброго времени суток! Как правильно объединить цикл? while (!(cin &gt;&gt; value_one_) || value_one_ &lt; 0 || value_one_) { cout...

Как правильно работает цикл
Здравствуйте, есть такой код Для ИндексСтроки = 0 По ФайлыДляОтправления.Количество() Цикл СтрокаТФ =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru