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

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

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

Break и return - C++

13.03.2009, 23:06. Просмотров 1534. Ответов 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 (C++):

Break и return в функции (+ про блок-схемы) - C++
int proverka_processor(int n, char * comp) { int i; for (i = 0; i &lt; n; i++) if ((*comp &gt; 0 &amp;&amp; *comp &lt; 256 &amp;&amp; isalpha(*comp)) ||...

Исправить ошибку в строках "case 3:zadacha(Uch,Pr,Ocen);break;" и " return 0;" - C++
#include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; #include&lt;time.h&gt; #include&lt;iostream.h&gt; using namespace std; void gen_matr(char...

В чем разница между return и return false/true - C++
Привет всем. Вот подскажите плиз) return; return false; return true; расскажите пожалуйста об етих операторах.. чем они...

Как сделать так, что если файл существует return true, если нет - return false - C++
Здравствуйте, я новичок в программировании. Мой вопрос очень прост: как сделать так, что если файл существует return true если нет return...

While{switch{switch{break;}}} break выходит из while - C++
В общем необходимо конструкцию switch запускать в цикле, в каждом case X: стоит свой break;, да бы выполнился один case, а не все. Проблема...

Оператор break - C++
Подскажите, пожалуйста почему оператор break в строке 44 выдаёт ошибку, и как её исправить? #include&lt;iostream.h&gt; #include&lt;conio.h&gt; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
13.03.2009, 23:16 #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  [ТС] #3
Цитата Сообщение от Don Corleone Посмотреть сообщение
проблема в том, что оператор break прерывает выполнение цикла, и программа не выполянет return i... там, вообще break не нужен.. а команда return i возвращает номер символа в слове...

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

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

Добавлено через 1 минуту 13 секунд
у тебя возвращается не указатель на символ..а число.. положение элемента в слове...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2009, 00:04
Привет! Вот еще темы с ответами:

Цикл do.while и break - C++
Задача: написать программу, которая принимает от пользователя 10 int чисел, затем выводит их в строку, находит среднее значение. Так же...

Использование break - C++
using namespace std; void print_out(int n); int main(){ int n; cout&lt;&lt;&quot;введите число n:\n&quot;; cin&gt;&gt;n; if(n==0){...

оператор break - C++
Здравствуйте! Я где-то слышал, что использовать оператор break для выхода из цикла - не хорошо. И что его можно использовать только если...

Инструкция break - C++
Эм, балуюсь с C++. Значит, отбираю простые числа, первый вариант программы: #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
14.03.2009, 00:04
Ответ Создать тему
Опции темы

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