Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - помогите с задачей по СИ!!!

Ответить
Настройки темы
C/C++ - помогите с задачей по СИ!!!

Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 15-11-2009
Описание: Caps Lock тоже не использовать!!!
В исходном бинарном файле (создать и ввести) удалить все пробелы.
Дополнительных массивов и файлов не использовать

даже не знаю что делать(((

Отправлено: 00:42, 15-11-2009

 

Ветеран


Сообщения: 514
Благодарности: 18

Профиль | Отправить PM | Цитировать


Подробнее опишите задачу, что такой бинарный файл? что там вводится?

Отправлено: 12:18, 15-11-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 33
Благодарности: 12

Профиль | Отправить PM | Цитировать


на сколько я понимаю в бинарном файле нет ни пробелов, ни символа новой строки, правда если я ошибаюсь, то могу предложить сделать так:

открыть файл в режиме дозаписи, включить флаг ws (исключение пробельных символов) на поток выхода, читать первый символ и перезаписывать его с исключенными пробелами, потом затереть часть текста, который остался "лишним, из-за удаления пробельных символов).

Код: Выделить весь код
#include <iostream>
#include <fstream>
using namespace std;

int main()
{

char ch;
int i;

fstream both("Имя или путь к файлу", ios::ate | ios::binary);

if(!both)
{
cout << "Не удалось открыть файл \n";
return 1;
}


while(both.get(ch))  // считывает символы до достижения eof
{
both >> ws >> ch;  // в данном случае ws должно выполнять функцию фильтра от пробельных символов
}

both.close();

return 0;
}
Можно включить флаг заранее, а не прямо во время вывода (cout.setf(ios::skipws); например)

Работать это не будет - нужно подумать как затереть оставшуюся часть, когда тексты будут слеплены вместе, но вроде идея должна работать))

Цитата Ferum01:
что такой бинарный файл? »
Двоичный (бинарный) файл — в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр.
В узком смысле слова двоичные файлы противопоставляются текстовым файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.

Последний раз редактировалось Lisiy_egik, 15-11-2009 в 15:19. Причина: верезал, а обратно не вставил))


Отправлено: 13:00, 15-11-2009 | #3


Ветеран


Сообщения: 514
Благодарности: 18

Профиль | Отправить PM | Цитировать


Может просто в строковую переменную записать все символы исключая пробелы? Потом эту строку записать в файл и все...

Хатя можно еще проще, то есть при анализе каждого символа (если он не равен пробелу) тут же записывать в другой фал.

примерно так:

Код: Выделить весь код
while(!feof(fp1))
{
do
{
fscanf(fp1, "%c", &sim[eatt]);
if (sim=='\n') break;

do
{
if    ( sim!=' ' )
      {     fprintf (fp,"%c", &sim); fscanf(fp1, "%c", &sim); } else break;
} while (true);
} while (!feof(fp1));
fscanf(fp1, "\n");
}
  fclose(fp1);

Последний раз редактировалось Drongo, 15-11-2009 в 14:51. Причина: Тег [code]...[/code] на панели значок - #


Отправлено: 14:03, 15-11-2009 | #4


Новый участник


Сообщения: 2
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Ferum01:
Может просто в строковую переменную записать все символы исключая пробелы? Потом эту строку записать в файл и все...
Хатя можно еще проще, то есть при анализе каждого символа (если он не равен пробелу) тут же записывать в другой фал. »
написано же в условии:
Дополнительных массивов и файлов не использовать(((

Цитата Lisiy_egik:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char ch;
int i;
fstream both("Имя или путь к файлу", ios::ate | ios::binary);
if(!both)
{
cout << "Не удалось открыть файл \n";
return 1;
}
while(both.get(ch)) // считывает символы до достижения eof
{
both >> ws >> ch; // в данном случае ws должно выполнять функцию фильтра от пробельных символов
}
both.close();
return 0;
} »

А ЭТО СЛУЧАЙНО НЕ С++??????????
а то нуженно чистый СИ

Цитата Lisiy_egik:
Работать это не будет - нужно подумать как затереть оставшуюся часть, когда тексты будут слеплены вместе, но вроде идея должна работать)) »
проблема в том что надо как то этот файл считать в память
потом обработать и записать обратно в этот файл
но как это сделать?
может динамическим списком?

Отправлено: 00:18, 16-11-2009 | #5



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - помогите с задачей по СИ!!!

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Delphi - [решено] Помогите с задачей /Pascal/ Habetdin Программирование и базы данных 23 11-11-2009 22:46
C/C++ - [решено] Помогите с задачей! FeuerEngel Программирование и базы данных 3 28-05-2009 09:58
VBS/WSH/JS - Помощь с простенькой задачей) Triz Программирование и базы данных 10 05-03-2009 18:35
Delphi - [решено] Помогите с комбинаторной задачей! ALI Программирование и базы данных 16 01-01-2009 14:10
C/C++ - Помогите с задачей по Тройкам Пифагора quaker_strelok Программирование и базы данных 10 01-12-2008 16:44




 
Переход