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

Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно - C++

Восстановить пароль Регистрация
 
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
11.01.2014, 01:31     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #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
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <iomanip>
#include <string.h>
#include <cstdio>
using namespace std;
int main()
{   
    int cancel_program;
    do 
    {
    char mas[81];
    fflush(stdout);
    cin.getline(mas,81);
        int letter=0,sequence=0,k=0;
        for(int i=0;i<(strlen(mas));i++)
        {
            if(mas[i]!='0' && mas[i] != '1' && mas[i] != ' ')
            {
            cout << "Enter incorrect" << endl;
            goto exit;
            }
 
        }
        for(int i=0;i<strlen(mas);i++)
                {
                 if(mas[i]!=' ')
                    ++letter;
                        else if((mas[i]==' '||mas[i]=='\0')&&letter==5)
                         {
                            ++sequence;
                            letter=0;
                         }
                            else
                                letter=0;
                }
                 
    cout<<  sequence+1 << endl;
    exit: 
    cin >> cancel_program ;
    cin.get();
    }
    while(cancel_program!=0);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 01:31     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно
Посмотрите здесь:

C++ Какие файлы нужны, чтоб запускался exe-шник
Какие простые программы можно написать на С++ для новичков и как ? C++
Ввести с клавиатуры массив, распределить память для его размещения и ввести int значения этого массива C++
C++ Как корректно вручную ввести данные
C++ Какие значения можно присвоить целочисленной перемен- ной x, чтобы результатом выражения x/5 стало число 2014
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
11.01.2014, 01:35     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #2
ааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааааа

Добавлено через 57 секунд
Цитата Сообщение от andryshka Посмотреть сообщение
goto exit;
return 1;
kidpoker
 Аватар для kidpoker
6 / 5 / 0
Регистрация: 02.08.2012
Сообщений: 16
11.01.2014, 01:36     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #3
Русские буквы; 45 например не выдает некорректное тоже.
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
11.01.2014, 01:41  [ТС]     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #4
Цитата Сообщение от MrGluck Посмотреть сообщение
return 1;
Не мне тут предпочтительнее goto я же return полностью из программы выхожу,а мне нужно к бесконечному циклу ,чтоб по 10 раз программу не запускать.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
11.01.2014, 01:43     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #5
придумайте флаг-переменную.
А пока зарубите на носу, что goto есть зло. Его использовать надо лишь при крайней необходимости (например выход сразу из многих вложенных циклов). Ваш случай не тот и приводит лишь к спагетти коду с неочевидным переходом.
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
11.01.2014, 01:44  [ТС]     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #6
Цитата Сообщение от kidpoker Посмотреть сообщение
Русские буквы; 45 например не выдает некорректное тоже.
Так это предусмотрено мной ,а какие можно ввести данные ,чтоб просто в решении такой ввод не учитывался и решение вышло бы не верным.

Добавлено через 1 минуту
Цитата Сообщение от MrGluck Посмотреть сообщение
А пока зарубите на носу, что goto есть зло.
Спасибо ,учту.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
15.01.2014, 14:47     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #7
Цитата Сообщение от MrGluck Посмотреть сообщение
А пока зарубите на носу, что goto есть зло. Его использовать надо лишь при крайней необходимости (например выход сразу из многих вложенных циклов). Ваш случай не тот и приводит лишь к спагетти коду с неочевидным переходом.
Люблю приводить следующий контрпример: в гугловской Code Convention принята система одной точки выхода из функции. Вместо return val; по всему коду используется переменная-результат, а выход из функции происходит как result = val; goto _return; И это вполне приемлемое решение. Когда на goto начинают условные операторы да цикли писать - вот тут надо бить по рукам. А когда переход происходит строго вперёд по коду, да ещё, как в случае с гугловским кодстайлом, в одну точку - ничего плохого тут нет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2014, 02:22     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно
Еще ссылки по теме:

C++ Какие значения будут у ячеек массива после выполнения следующего кода?
Какие средства ООП можно применить для описания Игрока и Противника? C++
Какие независимые друг от друга изменения позволят коду отработать корректно? C++

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
16.01.2014, 02:22     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно #8
silent_1991, все верно, но легче сказать что пока goto - зло, а со временем уже, когда придет осознание всех рисков и ответственности, тогда можно. И ваш пример это скорее исключение из общего правила. С goto незнающим людям легче всего сделать код трудно понимаемым, это весьма небезопасный элемент. Поэтому я всегда агитирую новичков его избегать до поры до времени.

Кстати, ваш пример я слышал буквально меньше недели назад от тимлида, хотя до этого знал лишь об одном эффективном применении данного оператора - выход из множества вложенных циклов)
Yandex
Объявления
16.01.2014, 02:22     Какие значения можно ввести для нижеприведённого кода, чтоб программа не выполнялась корректно
Ответ Создать тему
Опции темы

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