Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программа по C++

chehonte2007 Ученик (221), закрыт 11 лет назад
дан символьный файл (имя ввести из командной строки) группы символов, разделенных пробелами (одним или несколькими) называются словами. удалить все лишние пробелы. результат вывести на экран
Лучший ответ
kaiu Высший разум (115775) 11 лет назад
не сказано, что надо удалить в файле, так что задачу надо решить так:
1. открыть файл заданный из командной строки
2. читать весь файл посимвольно
3. выводить каждый символ на экран
4. закрыть файл.

Весь алгоритм чтения посимвольно найдешь в конспектах или в любой книге, что дал препод.

По поводу алгоритма чтоб не выводить лишние пробелы.
Вводишь переменную char oldsm = 0; которая будет хранить предыдущий символ и после считывания символа sm надо будет написать oldsm = sm;

вот так примерно:
// прочитать символ
ifs.get(sm);
// сравнить символ, что если он пробел и предыдущий тоже пробел, то его не выводить
if( !(sm == 32 && oldsm == 32) ) cout << sm;
oldsm = sm;
Остальные ответы
Alexey N Просветленный (34816) 11 лет назад
Надо ее написать на халяву, чтоле?
koma Мыслитель (5378) 11 лет назад
#include <stdio.h>

main(int arc, char *argv[] ){
FILE *inf;
char buff[1024], *p;

inf = fopen(argv[1]),"r");
if (!inf) {
return -1;
}
while (!fgets(buff,1023,inf)){
for (p=buff; *p; p++){
if (!(*p == ' ' && *(p+1) == ' ')) {
putch(*p);
} /*if*/
} /*for*/
} /*while*/
fclose(inf);
return 0;
} /*main*/
Юрий-17 Гений (76478) 11 лет назад
#include <iostream>
#include <fstream>
using namespace std;
int main(int mn,char* nm[])
{
int j,k,s;
char* p;
if(mn!=2) cerr << "program.exe in.txt",exit(1);
ifstream in(nm[1],ios::binary); if(!in) cerr<<"no file \"" << nm[1] << "\"!",exit(1);
in.seekg(0,ios::end); s=in.tellg(); in.seekg(0,ios::beg);
p=new char[s+1]; in.read(p,s); in.close(); p[ s ]=0;
cout << p<< endl;
for(k=j=0;p[j];j++) if(p[j]==32&&p[j+1]==32); else p[k++]=p[j]; p[k]=0;
cout << p << endl;
delete [] p;
return 0;
}
Похожие вопросы