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

Нестабильная работа программы при большом количестве строк во входном потоке - C++

Восстановить пароль Регистрация
 
Datebailo
 Аватар для Datebailo
-1 / 3 / 1
Регистрация: 13.05.2016
Сообщений: 48
24.11.2016, 19:25     Нестабильная работа программы при большом количестве строк во входном потоке #1
Вопрос с подвохом: пользователь вставляет n строк символов в консоль, где n > 1000. Задание - сделать так, чтобы программа не зависала и не вылетала.

C++
1
2
3
4
5
while (true) {
        cout << "Уведіть строку [cin]: "; //поток STL
        getline(cin, a);
        cout << "Ваша строка [cout]:" << a << endl;
                cin.clear();
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2016, 19:25     Нестабильная работа программы при большом количестве строк во входном потоке
Посмотрите здесь:

не работает на большом количестве C++
Как избавится от слов во входном потоке? C++
C++ Как узнать есть ли сволы во входном потоке?
теория о входном и выходном потоке C++
C++ ошибка при большом размере массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,852
Записей в блоге: 17
24.11.2016, 19:38     Нестабильная работа программы при большом количестве строк во входном потоке #2
Datebailo, несколько вопросов:
  1. какой тип у переменной a?
  2. цикл бесконечный - это так и задумано?
  3. cout, cin, endl, getline - из пространства имён std или какие-то свои собственные (определённые пользователем)?
  4. закрывающая фигурная скобка у цикла где?

Добавлено через 4 минуты
Цитата Сообщение от Datebailo Посмотреть сообщение
пользователь вставляет n строк символов в консоль, где n > 1000.
Не вижу, где там n. Вижу что пользователю предлагается ввести a бесконечное количество раз (в бесконечном цикле).

Добавлено через 2 минуты
Цитата Сообщение от Datebailo Посмотреть сообщение
Вопрос с подвохом
Вам чего надо-то? Викторину устроить решили? Призы будут? Или так, "на слабо"?
Datebailo
 Аватар для Datebailo
-1 / 3 / 1
Регистрация: 13.05.2016
Сообщений: 48
24.11.2016, 19:39  [ТС]     Нестабильная работа программы при большом количестве строк во входном потоке #3
gru74ik,
1. Тип переменной - string.
2. Да, чтобы пользователь вводил текст - ему он выводился, и так пока он не сдастся и не выйдет из программы с помощью крестика вверху.
3. std, и желательно использовать только std
4. После cin.clear();
5. n - это не переменная, это просто определенное число строк, оно не определяется в программе. Просто пользователь захотел вставить большее тысячи строк, он получит ответку - свои тысячу строк. Когда я вставляю тысячу строк - у меня он долго их печатает (издавая стремные звуки), а потом зависает.

пЫсЫ: если можно как-то ограничить объем вставляемых символов - это тоже можно. Главное чтобы не вылетало.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
24.11.2016, 19:41     Нестабильная работа программы при большом количестве строк во входном потоке #4
+1 к gru74ik, но можно так
C++
1
2
std::string input;
std::getline(std::cin, input);
Добавлено через 58 секунд
п.с. Вы уверены что вылет именно из-за чтения?
Datebailo
 Аватар для Datebailo
-1 / 3 / 1
Регистрация: 13.05.2016
Сообщений: 48
24.11.2016, 19:44  [ТС]     Нестабильная работа программы при большом количестве строк во входном потоке #5
stima,
Вставляем текст в консоль -> текст долго появляется в консоли со стремными звуками -> вылет
Видимо из-за этого, да.

ПыСы: у меня в коде тоже самое .-.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
24.11.2016, 19:46     Нестабильная работа программы при большом количестве строк во входном потоке #6
Код в студию (весь), тут телепатов нет.
Datebailo
 Аватар для Datebailo
-1 / 3 / 1
Регистрация: 13.05.2016
Сообщений: 48
24.11.2016, 19:49  [ТС]     Нестабильная работа программы при большом количестве строк во входном потоке #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
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <string>
 
 
using namespace std;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
    string a;
    char b[10000];        
    while (true) {
        cout << "Уведіть строку [cin]: "; //поток STL
        getline(cin, a);
        cout << "Ваша строка [cout]:" << a << endl;
        fflush(stdin);
        cin.clear();
        cout << "Уведіть строку [scanf]: ";
        fgets(b, 10000, stdin); 
        printf("Ваша строка [printf]: ");
        printf("%s", b);
        printf("\n");
 
    }
    system("pause");
    return 0;
}
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 929
Завершенные тесты: 1
24.11.2016, 19:51     Нестабильная работа программы при большом количестве строк во входном потоке #8
Так вот, уверены что не вылазите за граници массива char[10000] ?
Datebailo
 Аватар для Datebailo
-1 / 3 / 1
Регистрация: 13.05.2016
Сообщений: 48
24.11.2016, 19:53  [ТС]     Нестабильная работа программы при большом количестве строк во входном потоке #9
stima, удалил часть кода с b, все равно не работает. Я не кидал полный код, потому что речь шла как раз о первой переменной.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
    string a;
//  char b[10000];        
    while (true) {
        cout << "Уведіть строку [cin]: "; //поток STL
        getline(cin, a);
        cout << "Ваша строка [cout]:" << a << endl;
        fflush(stdin);
        cin.clear();
    //  cout << "Уведіть строку [scanf]: ";
    //  fgets(b, 10000, stdin); 
    //  printf("Ваша строка [printf]: ");
    //  printf("%s", b);
    //  printf("\n");
 
    }
    system("pause");
    return 0;
}
nd2
1055 / 794 / 267
Регистрация: 29.01.2016
Сообщений: 2,472
24.11.2016, 19:57     Нестабильная работа программы при большом количестве строк во входном потоке #10
Цитата Сообщение от Datebailo Посмотреть сообщение
удалил часть кода с b, все равно не работает.
Это тогда тоже убери:
Цитата Сообщение от Datebailo Посмотреть сообщение
C++
1
2
fflush(stdin); 
cin.clear();
Datebailo
 Аватар для Datebailo
-1 / 3 / 1
Регистрация: 13.05.2016
Сообщений: 48
24.11.2016, 19:58  [ТС]     Нестабильная работа программы при большом количестве строк во входном потоке #11
nd2, ничего не изменилось.
gru74ik
Модератор
 Аватар для gru74ik
3121 / 1347 / 167
Регистрация: 20.02.2013
Сообщений: 3,852
Записей в блоге: 17
24.11.2016, 20:04     Нестабильная работа программы при большом количестве строк во входном потоке #12
Datebailo, прекрасно выводит 1200 строк на экран:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
 
int main()
{
    std::string a = "a";
 
    for ( size_t i = 1; i < 301; ++i )
    {
        std::cout << "Set of 40 strings #" << i << ":\n";
        for ( size_t j = 1; j < 41; ++j )
        {
            std::cout << a << j <<" ";
        }
        std::cout << "\n\n";
    }
 
    return 0;
}
Добавлено через 2 минуты
Datebailo, если есть охота вручную вбивать больше тысячи строк, то вот:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
 
int main()
{
    std::string a = "a";
 
    for ( size_t i = 0; i < 1200; ++i )
    {
        std::cout << "Enter your string: ";
        std::getline( std::cin, a );
    }
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2016, 20:19     Нестабильная работа программы при большом количестве строк во входном потоке
Еще ссылки по теме:

C++ Написать программу, которая ищет во входном потоке два повторяющихся друг за другом слова
C++ Проверка на наличие числового значения во входном потоке
C++ Программа завершается при большом размере матрицы смежности

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

Или воспользуйтесь поиском по форуму:
nd2
1055 / 794 / 267
Регистрация: 29.01.2016
Сообщений: 2,472
24.11.2016, 20:19     Нестабильная работа программы при большом количестве строк во входном потоке #13
Цитата Сообщение от Datebailo Посмотреть сообщение
nd2, ничего не изменилось.
Я и не обещал. Просто там это лишнее.
Yandex
Объявления
24.11.2016, 20:19     Нестабильная работа программы при большом количестве строк во входном потоке
Ответ Создать тему
Опции темы

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