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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Teredo
0 / 0 / 0
Регистрация: 04.07.2010
Сообщений: 28
#1

Работа с файлами - C++

19.11.2010, 18:17. Просмотров 1071. Ответов 12
Метки нет (Все метки)

Задача по информатике:
В файле input.txt задано арифметическое выражение состоящее из цифр, букв, скобок и знаков арифметических операций. Но вирус удалил из данного файла некоторые скобки, стоящие в начале и в конце выражения.Написать программу, выводящую в файл output.txt исправленное выражениею Максимальная длина исходной строки не более 100 символов.

например:
input.txt = (3+(2*6))*3(((5/4-3)*9-(7-4) - output.txt = ((3+(2*6))*3(((5/4-3)*9-(7-4))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2010, 18:17     Работа с файлами
Посмотрите здесь:

Работа с файлами С++ - C++
Доброго время суток! Подскажите где создавать текстовый файл для привязки его к коду. Чтобы после зборки, он нормально считывался...

Работа с файлами - C++
Напишите программу, которая объединяет возможности программ “Добавление в файл” и “Поиск по файлу”. При запуске программы на экран должно...

работа с файлами - C++
Написать программу, которая выводит на экран содержимое текстового файла

Работа с файлами - C++
написал класс fail для чтения из файла class fail { public: fail( int = 0, string = "" ); void setNom( int nomValue );...

Работа с файлами - C++
помогите решить плиз!!!!!! зарание всем огромное спс!!! Задача 1. Дан файл целых чисел. Найти количество содержащихся в нем...

Работа с файлами - C++
Задача из сборника Златопольского: 14.28. Имеется типизированный файл, элементами которого являются отдельные слова. Если слово в файле...

Работа с файлами - C++
Вообщем стоит две задачи: 1) с помощью функций fstream в текстовом документе заменить все символы табуляции на пробелы. 2) в бинарном...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
19.11.2010, 22:06     Работа с файлами #2
Да... Стоило выдумывать такое задание...
Читаете входной файл в строку. В выходной файл пишете открывающую скобку. Затем пишете туда считанную строку. Затем пишите закрывающую скобку. Хотя сомневаюсь, что вы умеете это делать, но просто не поняли алгоритм...
Teredo
0 / 0 / 0
Регистрация: 04.07.2010
Сообщений: 28
19.11.2010, 23:10  [ТС]     Работа с файлами #3
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
#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
 
int main()
{
 
FILE *file;
char* file_name = "input.txt";
char load_string[50] = "none";
file = fopen( file_name, "r" ); 
fgets( load_string, 50 , file ); 
string a = load_string;
fclose(file);
 
 
char* file_name2 = "output.txt";
file = fopen( file_name2, "a" ); 
fputs( "(", file );
fputs( a, file );
fputs( ")", file );
 
system("pause");
}
Ошибка :
1>------ Построение начато: проект: 12323, Конфигурация: Debug Win32 ------
1> 1231232.cpp
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\12323\12323\1231232.cpp(12): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234): см. объявление "fopen"
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\12323\12323\1231232.cpp(19): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1> c:\program files\microsoft visual studio 10.0\vc\include\stdio.h(234): см. объявление "fopen"
1>c:\documents and settings\admin\мои документы\visual studio 2010\projects\12323\12323\1231232.cpp(21): error C2664: fputs: невозможно преобразовать параметр 1 из "std::string" в "const char *"
1> Для выполнения данного преобразования нет доступного оператора преобразования, определенного пользователем, или вызов оператора невозможен
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
19.11.2010, 23:28     Работа с файлами #4
Teredo, Вы или не правильно списали пример, или он написан с ошибкой:
output.txt = ((3+(2*6))*3(((5/4-3)*9-(7-4))
Кол-во скобок ( - 7
Кол-во скобок ) - 5
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.11.2010, 00:06     Работа с файлами #5
Да тут не в этом суть... Считать же ничего не надо)))
А для того, чтобы работало, в 21 строке надо a заменить на a.c_str()
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.11.2010, 00:21     Работа с файлами #6
silent_1991, Вряд ли, что суть только в этом.
Задача стоит такая: Написать программу, выводящую в файл output.txt исправленное выражениею, а не просто считать строку из входного файла. Вывести эту строку в выходной файл добавив скобку ( в начале строки и скобку ) в конце строки.
Скорее всего требуется выровнять число скобок ( и ). Но их не порсто выровнять в кол-ве, а выровнять их с арифметически правильной стороны. Например:
на входе: (..(..(..(..)..)..).. - здесь точками обозначены арифметические операции с числами
Тут просто добавляем одну скобку ) в конце и все, а например (с тем же кол-вом скобок):
на входе: ..)..)..)...(...(..(..(..
Тут добавляем три скобки ( в начало строки, и четыре скобки ) в конец строки.
Teredo
0 / 0 / 0
Регистрация: 04.07.2010
Сообщений: 28
20.11.2010, 00:28  [ТС]     Работа с файлами #7
Программа выводит ошибку!!
вот скрин:
http://www.imagepost.ru/images/305/z...lxM1Oi9SAn.jpg
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.11.2010, 00:30     Работа с файлами #8
valeriikozlov, да, похоже вы правы... Тут надо подумать.
valeriikozlov
Эксперт C++
4669 / 2495 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
20.11.2010, 00:38     Работа с файлами #9
Предварительное мое решение выглядит так:
сначало идем с лево направо (перед этим int col=0)
- если скобка ) то col--;
-если скобка ( то co++;
И вот максимальное отрицательное значение в ходе прохода и есть кол-во скобок ( в начале строки.
Потом идем с право налево (перед этим снова int col=0)
- если скобка ( то col--;
-если скобка ) то co++;
И здесь максимальное отрицательное значение в ходе прохода и есть кол-во скобок ) в конце строки.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.11.2010, 05:18     Работа с файлами #10
valeriikozlov, да, вы знаете, сегодня проснувшись с утра, я за пать минут пришёл к такому же алгоритму)))
NightmareZ
1339 / 562 / 37
Регистрация: 31.03.2009
Сообщений: 1,918
20.11.2010, 05:26     Работа с файлами #11
Цитата Сообщение от Teredo Посмотреть сообщение
Задача по информатике:
В файле input.txt задано арифметическое выражение состоящее из цифр, букв, скобок и знаков арифметических операций. Но вирус удалил из данного файла некоторые скобки, стоящие в начале и в конце выражения.Написать программу, выводящую в файл output.txt исправленное выражениею Максимальная длина исходной строки не более 100 символов.

например:
input.txt = (3+(2*6))*3(((5/4-3)*9-(7-4) - output.txt = ((3+(2*6))*3(((5/4-3)*9-(7-4))
Бред какой-то, а не задача. Как я узнаю, где должны скобки располагаться? Вариантов правильного их расположения в общем случае можно придумать over 9000.

Например,
input.txt = 1 + 2 * 3

output.txt = (1 + 2) * 3
или
output.txt = 1 + (2 * 3)
или
output.txt = (1 + 2 * 3)
и т.п.

Хорошей и интересной бы задача была, если бы давалось повреждённое выражение + результат этого выражения и нужно бы было исходное выражение восстановить.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.11.2010, 05:45     Работа с файлами #12
NightmareZ, думаю, суть в том, что удалены только внешние скобки, их и надо восстановить (по расположению внутренних).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2010, 14:06     Работа с файлами
Еще ссылки по теме:

Работа с файлами в C/C++ - C++
Всем добрый вечер. Ваш форум часто помогал мне, я находил ответы на многие свои вопросы. На сей раз я затупил конкретно. Задание -...

Работа с файлами - C++
Почему программа не читает из файла матрицу, а просто выводит мне пустую консоль? #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...

Работа с файлами - C++
Здравствуйте. В моей программе нужно зашифровать файл любого расширения, например jpg (я взял). Проблема в том, что: значения которые я...

Работа с файлами - C++
Помогите написать программу, я даже не знаю к чему взяться! Я с файлами пока не дружу! Спасибо всем кто откликнется) Дано текстовый файл,...

Работа с файлами - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstring&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;fstream&gt; using...


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

Или воспользуйтесь поиском по форуму:
Teredo
0 / 0 / 0
Регистрация: 04.07.2010
Сообщений: 28
20.11.2010, 14:06  [ТС]     Работа с файлами #13
Да, нужно восстановить только внешние скобки!)
Yandex
Объявления
20.11.2010, 14:06     Работа с файлами
Ответ Создать тему
Опции темы

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