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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 5.00
SZ
2 / 2 / 0
Регистрация: 16.11.2008
Сообщений: 44
#1

Break и return - C++

13.03.2009, 23:06. Просмотров 1501. Ответов 3
Метки нет (Все метки)

Дано два кода на Си.
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
#include<stdio.h>
int func(char [],char);
void main()
{
    char sym,str[1000]; int z;
    printf("Vvedite stroky:\n");
    gets(str);
    printf("Vvedite simvol:\n");
    scanf("%c",&sym);
    z=func(str,sym);
    if(z==NULL)
        printf("Takich net\n");
    else
        printf("Nomer simvola v stroke - %d, sam simvol - %c\n",z,sym);
}
int func(char str[],char sym)
{
    int i=1;
    while(*str!='\0')
    {
        if(*str==sym)
        {
            return i;
            break;
        }
        else if(*str!=sym&&*(str+1)=='\0')
        {
            return NULL;
            break;
        }
        str+=1;
        i++;
    }
}
и
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
#include<stdio.h>
int func(char [],char);
void main()
{
    char sym,str[1000]; int z;
    printf("Vvedite stroky:\n");
    gets(str);
    printf("Vvedite simvol:\n");
    scanf("%c",&sym);
    z=func(str,sym);
    if(z==NULL)
        printf("Takich net\n");
    else
        printf("Nomer simvola v stroke - %d, sam simvol - %c\n",z,sym);
}
int func(char str[],char sym)
{
    int i=1;
    while(*str!='\0')
    {
        if(*str==sym)
        {
            break;
            return i;
        }
        else if(*str!=sym&&*(str+1)=='\0')
        {
            break;
            return NULL;
        }
        str+=1;
        i++;
    }
}
Задача - вывести положение символа в строке и сам символ заодно. Из них делает то, что нужно 1-ый вариант кода. А во втором варианте выводится напр. для строки "qwert" и символа "q" "Nomer simvola v stroke - 1244012, sam simvol - q". Это больше на адрес похоже, но я указатели возвращать не просил.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2009, 23:06     Break и return
Посмотрите здесь:

Ключевое слово break C++
C++ В чем разница между return и return false/true
C++ Оператор break
Как сделать так, что если файл существует return true, если нет - return false C++
Исправить ошибку в строках "case 3:zadacha(Uch,Pr,Ocen);break;" и " return 0;" C++
C++ Инструкция break
C++ Цикл do.while и break
оператор break C++
Использование break C++
C++ While{switch{switch{break;}}} break выходит из while
C++ Break не выводит из цикла while
C++ Цикл for и оператор break

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.03.2009, 23:16     Break и return #2
проблема в том, что оператор break прерывает выполнение цикла, и программа не выполянет return i... там, вообще break не нужен.. а команда return i возвращает номер символа в слове...

Добавлено через 59 секунд
и вообще, там break; не нужен, так как return и так прерывает выполнение функции...

Добавлено через 2 минуты 15 секунд
а указатель выводится у тебя потому, что функция ничего не возвращает...
SZ
2 / 2 / 0
Регистрация: 16.11.2008
Сообщений: 44
13.03.2009, 23:49  [ТС]     Break и return #3
Цитата Сообщение от Don Corleone Посмотреть сообщение
проблема в том, что оператор break прерывает выполнение цикла, и программа не выполянет return i... там, вообще break не нужен.. а команда return i возвращает номер символа в слове...

Добавлено через 59 секунд
и вообще, там break; не нужен, так как return и так прерывает выполнение функции...

Добавлено через 2 минуты 15 секунд
а указатель выводится у тебя потому, что функция ничего не возвращает...
А зачем тогда надо было указатель возвращать символа?
Monte-Cristo
2786 / 1372 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
14.03.2009, 00:04     Break и return #4
в прототипе функции указано что будет возваращаться int... т.е. позиция, где находится символ в строке....
позиция у нас содержится в локальной перменной int i функция должна возвратить это значение return i... а так как break прерывает выполнение цикла и return i не выполянется, то возвращается указатель... просто, область памяти под возвращаемое функцией значение уже выделена... а так она не инициализирована (иначе говоря без значения), возвращается указатель на нее...

Добавлено через 1 минуту 13 секунд
у тебя возвращается не указатель на символ..а число.. положение элемента в слове...
Yandex
Объявления
14.03.2009, 00:04     Break и return
Ответ Создать тему
Опции темы

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