Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
arper
16 / 16 / 13
Регистрация: 08.11.2014
Сообщений: 115
1

Как сделать, что бы point1 сохранил при первом выполнении условия текущий индекс?

16.11.2015, 23:21. Просмотров 242. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Как сделать, что бы point1 сохранил при первом выполнении условия текущий индекс, а потом больше не менял значение, пробовал через тип bool, это сделать, но как-то не получается.
Есть например такой кусочек кода
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
string s = "abcd abc adbcda";
    const int b =100;
    int i, point1, point2, point3, min=0, h;
    char a[30];
    bool f1=false;
     for (i = 0; i < s.length(); i++)
     {
         if(f1==false)
         {
                if (s[i] == ' ')
                {
                    point1=i;
                    for (i = 0; i <point1; i++)
                    {
                        i++;
                    }
                    if(i>min)
                    {
                        min=i;
                    }
                    
                }
                f1=true;
         }
     
     }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2015, 23:21
Ответы с готовыми решениями:

Не срабатывает ввод строки при первом выполнении цикла
Всем добрый день. Учусь работать с файлами. Суть программки в том, что я ввожу...

При выполнении условия не выходит из цикла
При выполнении условия не выходит из цикла а продолжается и выходит за границы...

При выполнении условия завершать цикл
Доброго времени суток.подскажите как сделать,чтобы при выполнении условия цикл...

Не выводится правильный ответ при выполнении условия
Привет. Пользуюсь Visual C++ 6.0 В задачке необходимо в случае не выполнения...

Переписать значения второго массива в первый при выполнении заданного условия
Необходимо написать программу, в которой переписываются значения с второго...

6
rikimaru2013
C++ Game Dev
2472 / 1141 / 348
Регистрация: 30.11.2013
Сообщений: 3,709
16.11.2015, 23:25 2
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
string s = "abcd abc adbcda";
    const int b = 100;
    int i, point1, point2, point3, min = 0, h;
    char a[30];
    bool doOnce = true;
    bool f1 = false;
    for(i = 0; i < s.length(); i++)
    {
        if(f1 == false)
        {
            if(s[i] == ' ')
            {
                if(doOnce)
                {
                    doOnce = false;
                    point1 = i;
                }
                
                for(i = 0; i <point1; i++)
                {
                    i++;
                }
                if(i>min)
                {
                    min = i;
                }
 
            }
            f1 = true;
        }
 
    }
0
arper
16 / 16 / 13
Регистрация: 08.11.2014
Сообщений: 115
16.11.2015, 23:30  [ТС] 3
По идее i должно быть равно 4, а оно почему-то всю строку подсчитывает.
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
16.11.2015, 23:49 4
arper, Покажи задание.
В твоем коде строки 13-16 совершенно лишние.
В коде rikimaru2013, строки 19-22 могут быть заменены строчкой i = point1; Что, по идее, должно привести к краху программы, поскольку point1 еще может быть не определен.
0
arper
16 / 16 / 13
Регистрация: 08.11.2014
Сообщений: 115
17.11.2015, 00:02  [ТС] 5
Нужно найти длину самого короткого слова без функций string)
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
17.11.2015, 00:29 6
Как-то так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
char *s = "abcd abc  adbcda";
for (i=0; s[i]==' '; i++)  // Пропускаем начальные пробелы
;
mi = strlen(s);
for(p2=p1=i; s[i]; i++) {
  if (s[i]==' ') {
    if (mi > i - p1) { mi = i - p1; p2 = p1; }
    while (s[i+1]==' ') i++;
    p1 = i+1;
  }
}
// mi - минимальная длина, p2 - начало этого слова
Не проверял.
К string приведи самостоятельно.
1
arper
16 / 16 / 13
Регистрация: 08.11.2014
Сообщений: 115
17.11.2015, 21:33  [ТС] 7
Готово.

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
int main()
{
string s = "abcsghdrthydfdsfd adfgrdvbnklfbc artydbsdfsdfsdfsdfsdfcda";
string sl, smin;
int i, dmin;
s=s+' ';
sl=' ';
dmin = s.length();
for(int i=0; i<s.length(); i++)
 
    if(s[i]!=' ')
        sl=sl+s[i];
    else
    {
        if(sl.length() <dmin && sl.length() != 0)
        {
            dmin=sl.length();
            smin=sl;
        }
        sl=' ';
    }
    dmin=dmin-1;
    cout<<dmin;
    system ("pause");
}
0
17.11.2015, 21:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2015, 21:33

Программа, переносящая элементы первого массива во второй, при выполнении условия
Программа должна формировать массив y из элементов массива x при выполнении...

При выполнении определенного условия поменять порядок следования символов строки на противоположный
Заданы 2 строки, состоящие из слов, разделенных пробелами. Если второе слово...

Как сделать чтобы программа при первом запуске добавлялась в автозагрузку?
Как сделать чтобы программа при первом запуске добавлялась в автозагрузку? А...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru