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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2016, 20:25   #41
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Полный код. Не работает.
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file, *file2;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char *ch;
	int flag = 0;

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");
	file2 = fopen(fname2, "w");

	while (!feof(file))
	{
		fscanf(file, "%c", &ch);  
		cout << ch;
		if (*ch == '(') flag = flag + 1;
		if ((*ch == ')') && (flag > 0)) flag = flag - 1;
		if (flag == 0)
		{
			fprintf(file2, "%c", &ch);
		}
	}
	fclose(file);
	fclose(file2);

	file2 = fopen(fname2, "r");
	while (!feof(file2))
	{
		fscanf(file2, "%c", &ch);
		cout << ch;
	}
	fclose(file2);

	system("pause");
	return 0;
}
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 20:37   #42
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Ну бред же написали.

Цитата:
char *ch;
зачем вам указатель? договарились же, что просто символ

Цитата:
fscanf(file, "%c", &ch);
зачем вам двойной указатель?
p51x вне форума Ответить с цитированием
Старый 30.06.2016, 20:52   #43
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file, *file2;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char ch;
	int flag = 0;

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");
	file2 = fopen(fname2, "w");

	while (!feof(file))
	{
		fscanf(file, "%c", &ch);  
		cout << ch;
		if (ch == '(') flag = flag + 1;
		if ((ch == ')') && (flag > 0)) flag = flag - 1;
		if (flag == 0)
		{
			fprintf(file2, "%c", ch);
		}
	}
	fclose(file);
	fclose(file2);

	cout << endl;
	file2 = fopen(fname2, "r");
	while (!feof(file2))
	{
		fscanf(file2, "%c", &ch);
		cout << ch;
	}
	fclose(file2);

	cout << endl;
	system("pause");
	return 0;
}
Результат ниже. Все работает отлично, только открывающей скобки нет, и последний символ дублируется.
Цитата:
Исходный файл: d3g)h5(4gfy)7d(f6(gh(4d)jy)jc)gh5)j y(8u)i7h(jk
Конечный файл: d3g)h5()7d()gh5)jy()i7h(
Изображения
Тип файла: png ппп.png (3.4 Кб, 59 просмотров)
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 21:17   #44
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Слегка изменил код.
Код:
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
using namespace std;

int main()
{
	setlocale(0, "rus");

	FILE *file, *file2;
	char *fname1 = "INPUT.txt";
	char *fname2 = "OUTPUT.txt";
	char ch;
	int flag = 0;

	cout << "\nИсходный файл, записанный в INPUT.txt:\n";
	file = fopen(fname1, "r");
	file2 = fopen(fname2, "w");

	while (!feof(file))
	{
		fscanf(file, "%c", &ch);  
		cout << ch;
		if (ch == '(') 
			{
				flag = 1 + flag;
				fprintf(file2, "%c", ch);
		}
		if ((ch == ')') && (flag > 0)) flag = flag - 1;
		if (flag == 0)
		{
			fprintf(file2, "%c", ch);
		}
	}
	fclose(file);
	fclose(file2);

	cout << endl;
	cout << "\nКонечный файл, записанный в OUTPUT.txt:\n";
	file2 = fopen(fname2, "r");
	while (!feof(file2))
	{
		fscanf(file2, "%c", &ch);
		cout << ch;
	}
	fclose(file2);

	cout << endl;
	system("pause");
	return 0;
}
Изображения
Тип файла: png пппп.png (3.8 Кб, 57 просмотров)
Narsky вне форума Ответить с цитированием
Старый 30.06.2016, 22:20   #45
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Попрбуйте
Код:
		if ((ch == ')') && (flag > 0)) flag = flag - 1;
		if (flag == 0)
		{
			fprintf(file2, "%c", ch);
		}
		if (ch == '(') flag = flag + 1;
p51x вне форума Ответить с цитированием
Старый 02.07.2016, 10:51   #46
Narsky
Форумчанин
 
Регистрация: 21.06.2016
Сообщений: 109
По умолчанию

Спасибо, все работает)
Narsky вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом Despot777 Общие вопросы C/C++ 3 26.10.2013 14:51
Работа с файлом Rik55rus Общие вопросы C/C++ 5 06.10.2012 15:35
Работа с файлом! Kami-sama Visual C++ 0 07.05.2011 20:48
работа с файлом Настя9008 Помощь студентам 19 06.12.2010 23:18
Работа с файлом Leoman Помощь студентам 0 02.04.2010 21:57