Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2012, 13:35   #1
Nomicos
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 18
По умолчанию Работа со строками (C++)

Необходимо найти длиннейшую последовательность нулей.

Код:
100110100011101000011 => 4
Имеется код, который успешно запускается (VC2010), но в процессе исполнения выдаёт ошибку и предложение отладить приложение.

Собственно, код:

Код:
#include <iostream>
 
using namespace std;

int main() {
	
	// freopen("input.txt", "r". stdin); freopen("output.txt", "w", stdout);

	char a[100];

	for(int i = 0; a[i]; i++) { scanf("%c", a[i]); }

	int seq = 0; int max_seq = 1;

	for(int i = 0; a[i]; i++) {
		if(a[i] = '0') { seq++; } else { if(max_seq < seq) { max_seq = seq; } seq = 0; } }

	if(seq > max_seq) max_seq = seq;

	printf("%d", seq);

	return 0;
}
Nomicos вне форума Ответить с цитированием
Старый 10.07.2012, 14:40   #2
Петррр
Форумчанин
 
Аватар для Петррр
 
Регистрация: 02.09.2011
Сообщений: 336
По умолчанию

Код:
#include <iostream>
#include <string>
#include <algorithm>

int main()
{
    std::string str = "100110100011101000011";
    std::string::iterator res = str.end();
    std::string::iterator it;
    size_t count = 0;
    for(it = std::find(str.begin(), str.end(), '0'); 
        it != str.end();
        it = std::find(it, str.end(), '0'))
    {
        size_t buf_count = 0;
        while (*it++ == '0')
            buf_count++;
        if (buf_count > count)
        {
            count = buf_count;
            res = it;
        }
    }
    if (res != str.end())
        std::cout << "Count: " << count << std::endl;    
    else
        std::cout << "Zero not found" << std::endl;
    system("pause");
    return 0;
}
Если ты не можешь найти то, ради чего стоит жить, лучше найти то, за что стоит умереть
Петррр вне форума Ответить с цитированием
Старый 10.07.2012, 19:11   #3
Artem_Kokos
Форумчанин
 
Регистрация: 28.02.2011
Сообщений: 122
По умолчанию

В вашем коде где написано { scanf("%c", a[i]); } забыли написать & перед a[i]. Я раньше часто такую ошибку делал. scanf("%c", &a[i]). Нужно говорить компилятору не "что" вы считываете, а "куда".
Повторенье - мать ученья. И прибежище для лентяев.

Последний раз редактировалось Artem_Kokos; 10.07.2012 в 19:14.
Artem_Kokos вне форума Ответить с цитированием
Старый 11.07.2012, 15:26   #4
Nomicos
Пользователь
 
Регистрация: 16.12.2010
Сообщений: 18
По умолчанию

Artem_Kokos, спасибо! Учёл эту ошибку, нашёл ещё несколько, теперь код прекрасно работает Вечно забываю ставить этот амперсанд
Nomicos вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками nulyjarden JavaScript, Ajax 2 01.04.2012 11:11
Работа со строками (С). sandak Помощь студентам 5 23.12.2011 19:07
Работа со строками... Bekzat Помощь студентам 3 08.12.2011 15:22
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
работа со строками mansp Помощь студентам 0 23.11.2010 21:02