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

Удалить из файла все однобуквенные слова и лишние пробелы. Результат записать в файл g - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Отсортировать и вывести по возрастанию решения для квадратных уравнений http://www.cyberforum.ru/cpp-beginners/thread1066047.html
#include "stdafx.h" #include "math.h" #include <iostream> using namespace std; class N { public: virtual void input ()=0; virtual void output ()=0; virtual float res ()=0;
C++ дописать программу #include <cstdlib> #include <iostream> #include <Math.h> using namespace std; int main(int argc, char *argv) { setlocale( LC_ALL,"Russian" ); //=========================================================================// http://www.cyberforum.ru/cpp-beginners/thread1066046.html
Логически правильное наследование исключений C++
Как логически правильно наследовать исключения? Пока не сталкивался с необходимостью наследовать исключения, но все же бывает в первый раз, и нужно быть готовым. Я покажу на примере стека что можно было бы отнаследовать, а уж более опытные меня поправят. Самому мне то, что и как я наследую не шибко нравится, ибо как-то глупо и не гибко выходит, но ничего лучше не видел или не правильно понял то,...
C++ Какова оптимальная и эффективная методика изучения языка?
Здравствуйте , тема скорей всего поднималась 100500 раз но спрошу по новой, хочу узнать ваше мнение по поводу методики изучения яп. 1)Прочитать книгу и после начать подробный разбор книги. 2)Сразу начинать полный разбор книги 3)Взять какой то проект делать его и походу будет с++ осваиватся. 4)Ваш совет варианта.
C++ Ввести координаты вершин параллелепипедов и упорядочить их по длине диагонали http://www.cyberforum.ru/cpp-beginners/thread1066020.html
на вход подается некоторое количество параллелепипедов (координаты вершин ). Отсортировать и вывести их по возрастанию диагоналей. При вводе проверять, что вводятся параллелепипеды.
C++ Параллельный запуск процессов с помощью fork(). Проверить код Правильно ли я накидал параллельный запуск (в данном случае 10 ) процессов с помощью fork() ? if(pipe(filedes) == -1) { perror("pipe failed"); exit(EXIT_FAILURE); } for(int i = 0; i < 10; i++) { pid = fork(); подробнее

Показать сообщение отдельно
Nadia Trofimova
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 25
14.01.2014, 15:18  [ТС]     Удалить из файла все однобуквенные слова и лишние пробелы. Результат записать в файл g
Помогите, пожалуйста.
та же задача, последняя функция, там где выполняется всё условие.
Где ошибка?
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
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
#include <iostream>
#include <fstream>  
#include <string.h>     
 
using namespace std;
const int  str_size_max = 100000;
 
void CreateFile(char fname[str_size_max], ofstream &fout);
void ReadFile(char fname[str_size_max],ifstream &fin);
void File_G(char fname[str_size_max],char gname[str_size_max],ifstream &fin,ofstream &gout);
 
void main()     
{
    char filenamef[str_size_max],filenameg[str_size_max];
    char c,choice;
    do{
        cout<<"Enter name for new file f: ";
        cin>>filenamef;
 
        ofstream fout;  //объявление файла для записи(файловый ввод). Создать обьект класса ofstream c именем fout.
        ifstream fin;       //объявление файла для чтения(файловый вывод). Создать обьект класса ofstream с именем fin
        cout<<endl<<"Create new file? (y/n)"<<endl;
        cin >> choice;
        switch (choice)
        {
        case 'y':
            CreateFile(filenamef,fout);
            ReadFile(filenamef,fin);
            break;
        case 'n':
            ReadFile(filenamef,fin);
            break;
        default:
            cout<<"Error"<<endl;
        }
 
        cout<<"Enter name for new file g: ";
        cin>>filenameg;
 
        ofstream gout;  //создание класса файла для записи
        File_G(filenamef,filenameg,fin,gout);   //анализ файла f
 
        ifstream gin;       //создание класса файла для чтения
        ReadFile(filenameg,gin);    //вызов функции чтения файла gin
        cout<<"Do you want to continue? Press 'y' "<< endl;
        cin>>c;
        system("cls");
    }while(c=='y');
}
 
void CreateFile(char fname[str_size_max], ofstream &fout)   
{
    fout.open(fname);   //open()-открытие файла fout. Поставить в соответствие обьекта данный файл.
    char st[str_size_max];  //строка для ввода в файл
    if(fout.is_open())
    {
        cout<<"Enter words:" << endl;
        cin.get(); //get читает из потока один символ
        cin.getline (st, str_size_max); //Функция предназначена для ввода с клавиатуры строки s с пробелами, в строке не должно быть более str_size_max символов. Читает целую строку
        while (st[0] != '*')
        {
            fout << st;
            fout << "\n";
            cin.getline (st, str_size_max);
 
        }
    }
    else
    {
        cout<<"Error!"<<endl;
        exit(1);
    }
 
    fout.close();       
}
 
void ReadFile(char fname[str_size_max],ifstream &fin)   
{
    fin.open(fname);    //открытие файла
    cout<<"contents of "<<fname<<":\n";
    char st[str_size_max];  //строка для чтения из файла
    if(fin.is_open())
    {
        while (fin.getline(st,str_size_max))    //прочитать из файла строку st, пока не конец файла
        {  
            cout<<st;
            cout<<"\n"; 
        }
    }
    else
    {
        cout<<"Error!"<<endl;
        exit(1);
    }
    fin.close();    
}
 
 
void File_G(char fname[str_size_max],char gname[str_size_max],ifstream &fin,ofstream &gout)
{
    fin.open(fname);    //открыть файл f для чтения
    gout.open(gname); //открыть файл g для записи
    if(!gout.is_open())
    {
        cout<<"Error!"<<endl;
        exit(1);
    }
    char  prob = ' ';
    char st[str_size_max], st2[str_size_max];
    while ( fin.getline(st, str_size_max) ) 
    { 
 
        int j = 0;
//Здесь проблема!
        if(st[1]!=prob || strlen(st)==1) //проверка на первый символ
        {
            st2[0]=st[0];
            j++;
        }
        if(strlen(st)>1)
        {
        for (int i=1; i < strlen(st)-2; i++)
        {
            if ( (!(st[i-1] == prob && st[i] != prob && st[i+1] == prob)) && (st[i] != prob || st[i+1] != prob) ) 
            {
                st2[j] = st[i];
                j++;
            }
        }
        
        if(st[strlen(st)-2]!=prob) //проверка на последний
        {
            st2[j] = st[strlen(st)-1];
            j++;
        }
        }
        gout << st2;
        gout << "\n";
    }
    gout.close();       //закрытие файла gout
    fin.close();        //закрытие файла fin
}
 
Текущее время: 13:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru