powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите студенту !!!
16 сообщений из 16, страница 1 из 1
Помогите студенту !!!
    #32496663
Aliga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа скорей всего не сложная для вас!
Прогрмма должна быть в консольном режиме С++ Builder 5 она должна искать Скобки {} В *.cpp файле или в *.txt файле и выводить сколько их там есть одна скобка считаеться за открытую из закрытую 1X{} это и есть одна :) если кто может помогите очень нужно !
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32496881
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
20$


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32496945
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
#include <fstream>
#include <iostream>
#include <algorithm>


// здесь будем хранить кол-во скобок
int bracket_count = 0;

// функция, вызываемая для каждого символа в анализируемом потоке
void my_find(istream_chariter::char_type aSymbol)
{
if (aSymbol=='{' or aSymbol=='}')
bracket_count++;

}

void main(void)
{
ifstream cpp_file;
cpp_file.open("test.cpp");

for_each(istream_iterator<char>(cpp_file),istream_iterator<char>(),my_find);

cout << bracket_count << endl;
}
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32496995
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот 20$ лишил


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498059
Aliga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
funikovyuri Спасибо !это то что мне надо !
2 JibSkeart нету совести у тебя у бедного студента 20$ просить, как не стыдно ! Студенты с голоду пухнут а ты !
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498071
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ладно я пошутил :))

А вообщето студенты интерестно для чего учатся ?


i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498106
Антон Петров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык для корочки же! Чо в натуре как маленький?
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498112
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин а я дурак , учился учился ,не выдержал и с третьего курса ушел работать

i_i
(';')
(V),(V),,
JS
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498178
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стараниями funikovyuri этого студента отчислят раньше, так как скобочек программа насчитает в два раза больше, чем требовалось по задаче:

авторесть одна скобка считаеться за открытую из закрытую 1X{} это и есть одна :)
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498587
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не отдадим товарища в запас:

Код: plaintext
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.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
#include <iostream>				// std::cout, std::cerr
#include <fstream>				// std::ifstream
#include <iomanip>				// std::endl
#include <iterator>				// std::istream_iterator
#include <numeric>				// std::accumulate

//
//	счетчик пар вида {}
//
struct pair_counter
{
	//	число открывающих скобок '{'
	int ob_count;
	//	число закрывающих скобок '}'
	int cb_count;

	//	сбрасываем счетчики в ноль
	pair_counter(int ob =  0 , int cb =  0 ) : ob_count(ob), cb_count(cb)
	{
	}

	//	оператор требуемый accumulate
	pair_counter operator+(char ch) const
	{
		return pair_counter(ob_count + (ch == '{'), cb_count + (ch == '}'));
	}

	//	количество пар
	int result() const 
	{
		//	принимаем во внимание тот факт, что входной файл может 
		//	и не содержать полность закрытых блоков: }{} или {{}
		//	поэтому возвращаем только число полностью закрытых блоков
		return (ob_count > cb_count ? cb_count : ob_count);
	}
}; // struct pair_counter..

//
//	основное тело
//
int main(int argc, char *argv[])
{
	//	если входной файл не задан, 
	if( argc <  2  )
	{
		//	вывести правила запуска программы и выйти
		std::cerr <<  "Bracket counter"  << std::endl;
		std::cerr <<  "Usage: "  << argv[ 0 ] <<  " <input file>"  << std::endl;
		return  1 ;
	}
	
	//	открываем входной файл
	std::ifstream f(argv[ 1 ]);

	//	если файл не удалось открыть,
	if( !f )
	{
		//	вывести сообщение и выйти
		std::cerr <<  "error: "  << argv[ 1 ] <<  "is not opened"  << std::endl;
		return  1 ;
	}

	//	подчитываем количество скобок
	std::cout << std::accumulate(std::istream_iterator<char>(f), (std::istream_iterator<char>()), pair_counter()).result() << std::endl;

	//	выходим с нормальный признаком завершения
	return  0 ;
}
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498809
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков

Да, действительно - упростил я себе задачу - но самую чуть-чуть...

К стати, Анатолий, вы сейчас чем занимаетесь - неужели на С++ пишите? Мне вот, к сожалению, на нем реально сейчас писать не приходится - сюда пишу, чтобы все напрочь не забыть!


PPS>
использование accumulate+struct+operator+ оставляю на вашей совести - но студента жалко ;) Так что без лишнего флейма - вот доделанная версия моего - как я считаю - более простого и читабельного варианта - степень эффективности которого ничем не уступает варианту с функтором+accumulate

Код: plaintext
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.
#include <fstream> 
#include <iostream> 
#include <algorithm> 


// здесь будем хранить кол-во скобок 
int open_bracket_count =  0 ; 
int close_bracket_count =  0 ; 

// функция, вызываемая для каждого символа в анализируемом потоке 
void my_find(istream_chariter::char_type aSymbol) 
{ 
  
if (aSymbol=='{')
      open_bracket_count++; 

if (aSymbol=='}')
      close_bracket_count++; 
} 

void main(void) 
{ 
ifstream cpp_file; 
cpp_file.open( "test.cpp" ); 

for_each(istream_iterator<char>(cpp_file),istream_iterator<char>(),my_find); 

cout << min(open_bracket_count,close_bracket_count) << endl; 
}
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498840
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторСтуденты с голоду пухнут а ты !

знаю я от чего пухнут студенты ))) , но не скажу ...
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498945
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторК стати, Анатолий, вы сейчас чем занимаетесь - неужели на С++ пишите?

Да, кроссплатформенный девелопер, вроде как:). А Вы молодец, что не забрасываете этот язык.

авториспользование accumulate+struct+operator+ оставляю на вашей совести - но студента жалко

Я расчитываю на то, что студент все знает, но не может написать из-за отсутствия времени, в противном случае его и Ваш код не спасет.

Теперь, что касается Вашего модифицированного кода. Если принять во внимание, что компилятор может выполнить оптимизацию по возвращаемому значению в операторе operator+, то мой вариант будет сравним по эффективности с вашим. А вот по масштабируемости Ваш код проигрывает: что, если необходимо подсчитать количество пар ни для одного файла, а для нескольких - это означает, что перед каждым использованием функтора необходимо будет не забыть сбросить глобальные переменные - то есть, возложить на клиента помнить о двух глобальный счетчиках - грех это:).
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32498997
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков

Зд о рова - у меня есть план - к зиме перебраться или в Москву или в Питер (при этом в Питер хочется больше - так что если и работу найду интересную - даже сомневаться не буду) Так что может как-нибудь даже увидимся, кто его знает...

возложить на клиента помнить о двух глобальный счетчиках - грех это:).

Само собой - когда писал все думал добавить функтор или нет - выбрал что попроще
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32499640
Aliga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВСЕМ БОЛЬШОЕ СПАСИБО !
...
Рейтинг: 0 / 0
Помогите студенту !!!
    #32500228
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авториспользование accumulate+struct+operator+ оставляю на вашей совести - но студента жалко ;)

И не зря, обычно преподаватели потом, глядя в решение задачи, любят спросить: "А это что у вас тут?...".

"Приключения Электроника" смотрели? :) Как один решил задачу с применением интегралов, а второй даже не знал, как они правильно называются...

авторучился учился ,не выдержал и с третьего курса ушел работать
Я тоже с третьего курса работать :) Но с учиться не ушёл :)

авторНу вот 20$ лишил
А зря. Выложил бы 20 баксов, в следующий раз бы сам всё написал ;)
(... ну чё поделать... тиранические методы воспитания....)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите студенту !!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]