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

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

Войти
Регистрация
Восстановить пароль
 
andryshka
2 / 2 / 0
Регистрация: 05.12.2013
Сообщений: 81
#1

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

11.01.2014, 01:31. Просмотров 336. Ответов 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
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++
C++ Как корректно вручную ввести данные
Составить программу решения задачи. Все значения для вычисления ввести с клавиатуры: C++
C++ Составить программу решения задачи. Все значения для вычисления ввести с клавиатуры
C++ Какие значения можно присвоить целочисленной перемен- ной x, чтобы результатом выражения x/5 стало число 2014
Какие SQL запросы нужны для того, чтобы можно было отображать материал базы данных в комбоксе. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
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
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
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++
4949 / 3025 / 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++
Какие независимые друг от друга изменения позволят коду отработать корректно? C++
C++ Можно ли ввести с помощью std::cin значения элементов двух массивов?

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

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

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

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