Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 16:43     Как правильно записать цикл for? #1
Как правильно записать цикл чтобы он шел не с начала на конец а с конца на начало? Конкретно к этой задаче чтобы заменяло не первое восхождение а Последнее!

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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2012, 16:43     Как правильно записать цикл for?
Посмотрите здесь:

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

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;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
03.11.2012, 17:04     Как правильно записать цикл for? #6
тут не в цикле проблема, а в его содержании. Если внимательно посмотришь, содержание действий в цикле никак от i не зависит. Цикл задаёт лишь количество повторений этих действий. Поэтому в этом плане циклы for(int i=1;i<sLen;i++) и for(int i=sLen-1;i;i--) абсолютно идентичны Более того, они избыточны! Тут цикл while(strstr()!=NULL) больше бы подошёл.
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:09  [ТС]     Как правильно записать цикл for? #7
Kuzia domovenok, Можете на моем коде показать как это будет работать!?
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
03.11.2012, 17:11     Как правильно записать цикл for? #8
Цитата Сообщение от 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;
}
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:20  [ТС]     Как правильно записать цикл for? #9
Kuzia domovenok, Ваш код не выводить ничего!
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
03.11.2012, 17:23     Как правильно записать цикл for? #10
Цитата Сообщение от vasiliy21 Посмотреть сообщение
Kuzia domovenok, Ваш код не выводить ничего!
А то-то мы не знаем, что код на С++ надо писать в функции main, переменные объявлять, а выводить на экран через std::cout !!!
Что, правда не знаем? Тогда зачем решать, что-то, предварительно не изучив основы языка?
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:25  [ТС]     Как правильно записать цикл for? #11
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;
}
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
03.11.2012, 17:42     Как правильно записать цикл for? #12
признаю косяк, сейчас ищу ошибку

Добавлено через 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);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2012, 17:45     Как правильно записать цикл for?
Еще ссылки по теме:

Как правильно записать формулу C++
Как правильно записать формулу на с++? C++
Как правильно записать условие? C++

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

Или воспользуйтесь поиском по форуму:
vasiliy21
26 / 26 / 2
Регистрация: 24.10.2012
Сообщений: 135
03.11.2012, 17:45  [ТС]     Как правильно записать цикл for? #13
Kuzia domovenok, Спасибо за ваш труд!
Yandex
Объявления
03.11.2012, 17:45     Как правильно записать цикл for?
Ответ Создать тему
Опции темы

Текущее время: 02:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru