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

Работа со строками - разобрать код - C++

Восстановить пароль Регистрация
 
fygaska
4 / 4 / 1
Регистрация: 18.10.2010
Сообщений: 27
27.12.2010, 20:20     Работа со строками - разобрать код #1
разбираю сейчас работу со строками и попался такой код программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <string.h>
 
int main()
{
    char s[80], passw[]="kuku";
    int i, k=0;
    for (i=0; !k && i<3; i++)
    {
        printf ("\nvvedite password:\n");
        gets(s);
        if(strstr(s,passw)) k=1;
    }
    if(k) printf("\npassword prinyat");
    else printf ("\npassword neverniy");
    return 0;
}
Непонятно несколько вещей:
-строка if(strstr(s,passw)) k=1; для чего мы k приравниваем ко 1-му
-if(k) printf("\npassword prinyat"); что мы проверяем данным условием?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2010, 20:20     Работа со строками - разобрать код
Посмотрите здесь:

C++ Не могу разобрать код структуры
C++ Разобрать код по работе с матрицей
C++ Разобрать код на с++
Список (разобрать код) C++
Найти два равных элемента массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BrumbleHorse
 Аватар для BrumbleHorse
120 / 120 / 11
Регистрация: 18.09.2010
Сообщений: 212
27.12.2010, 20:33     Работа со строками - разобрать код #2
Цитата Сообщение от fygaska Посмотреть сообщение
Непонятно несколько вещей:
-строка if(strstr(s,passw)) k=1; для чего мы k приравниваем ко 1-му
-if(k) printf("\npassword prinyat"); что мы проверяем данным условием?
k приравнивается к 1, когда пароль верный, иначе k=0
C
1
if(k)
это значит "если k не равно нулю (то есть истинно)",тогда печатаем "пароль принят", в противном случае печатаем "неверный пароль"
fygaska
4 / 4 / 1
Регистрация: 18.10.2010
Сообщений: 27
27.12.2010, 22:36  [ТС]     Работа со строками - разобрать код #3
Хорошо!
тогда это условие выхода из цикла будет выполнено, если k ложно: for (i=0; !k && i<3; i++)
но тогда этому противоречить условие в самом цикле: if(strstr(s,passw)) k=1; Здесь k присваиватся истинность. А условие выхода из цикла у нас "ложь". Как, объясните пожалуйста!!!
BrumbleHorse
 Аватар для BrumbleHorse
120 / 120 / 11
Регистрация: 18.09.2010
Сообщений: 212
27.12.2010, 23:15     Работа со строками - разобрать код #4
Цитата Сообщение от fygaska Посмотреть сообщение
тогда это условие выхода из цикла будет выполнено, если k ложно: for (i=0; !k && i<3; i++)
Не совсем верно.. условие продолжения цикла - это "k=0 И i<3" ..то есть цикл прервется либо когда k перестанет быть нулем (что и происходит при правильном вводе пароля), либо когда i станет больше 3...почитайте про логические операции...
fygaska
4 / 4 / 1
Регистрация: 18.10.2010
Сообщений: 27
28.12.2010, 00:41  [ТС]     Работа со строками - разобрать код #5
про них то я знаю! Просто забыл про условие в цикле!!! Я думал что выражение(второе условие) в for - условие для останоки итерации, а это ведь условие для продолжения!
Спасибо!!!
Yandex
Объявления
28.12.2010, 00:41     Работа со строками - разобрать код
Ответ Создать тему
Опции темы

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